Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CyUSB под QT
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
ilkz
Добрый день. Впрсо имею я.

Не получается под QT открыть устройство функцией USBDevice->Open(0). Если полезть в недра, то почему-то не формируется DevPath - он всегда равен "/", хотя должен быть большим и длинным с vid/pid и прочими штуками.
Код такой:
Код
...
pUSBDevice = new CCyUSBDevice();
int deviceCount = pUSBDevice->DeviceCount(); // <- отрабатывает нормально
pUSBDevice->Open(0) // <- вот тут, если полезть внутрь Open, то DevPath почему-то оказывается пустой
...


Такое поведение и с компилятором Mingw и с VS2015.

Тот же самый код, но собранный в виде проекта VS, работает нормально.

Что я не докрутил или куда хотя бы копать для решения проблемы?
Гугл молчит по данному вопросу.

Спасибо.
andrew_b
Цитата(ilkz @ Aug 17 2016, 13:30) *
Не получается под QT
QuickTime не нужен.
ilkz
Причем тут QuickTime? Я говорю о QT Creator )))
andrew_b
Цитата(ilkz @ Aug 17 2016, 15:50) *
Причем тут QuickTime? Я говорю о QT Creator )))

Вы ощущаете разницу между QT и Qt?
ilkz
Я конечно не настаиваю, но как мне кажется, из контекста вопроса понятно о чем идет речь. И давайте не будем разводить оффтоп.
Fedor

Возможно в обработке строк дело. Попробуйте насильно выставить английскую локаль и юникод нужной версии.
andrew_b
Цитата(ilkz @ Aug 17 2016, 15:59) *
Я конечно не настаиваю, но как мне кажется, из контекста вопроса понятно о чем идет речь. И давайте не будем разводить оффтоп.
Вот зовут вас, скажем, Ваня. А кто-то вас зовёт Вася. Подумаешь, всего одна буква. Из контекста понятно, о ком идёт речь.

Впрочем, о чём это я. Некоторые тутотшние господа инженеры МГц и мГц путают. Тоже пустячок -- одна буква. Из контекста же понятно, о чём речь. Неряшливость в письме выдаёт неряшливость в мыслях.
Gorby
Цитата(andrew_b @ Aug 17 2016, 15:33) *
Вот зовут вас, скажем, Ваня. А кто-то вас зовёт Вася. Подумаешь, всего одна буква. Из контекста понятно, о ком идёт речь.

Впрочем, о чём это я. Некоторые тутотшние господа инженеры МГц и мГц путают. Тоже пустячок -- одна буква. Из контекста же понятно, о чём речь. Неряшливость в письме выдаёт неряшливость в мыслях.


"Жора, не изводите себя, вы же ещё не отсидели за ТО дело!" 'c'
В 9 случаях из 10 мГц в конце концов окажется МГц.
Вы сами-то миллигерцами давно пользовались? Небось тогда же как водку отмеряли мегалитрами...

Из контекста абсолютно ясно было, что никак не QuickTime имелся в виду.
k155la3
Цитата(ilkz @ Aug 17 2016, 13:30) *
. . . . . .
Такое поведение и с компилятором Mingw и с VS2015.
Тот же самый код, но собранный в виде проекта VS, работает нормально.

Какой версии VS ?
Цитата(ilkz @ Aug 17 2016, 13:30) *
. . . . . .
Что я не докрутил или куда хотя бы копать для решения проблемы?
. . .

1. При компляции и линковке обратите внимаение на все Warning. Иногда Warn - это вежливый намек компилятора на грубую ошибку.
2. Как тут правильно советовали, придецца перешерстить все опции прокта,
а также #define - переменные, которые могу присутствовать как в опциях проекта,
так запрятаны в файлах, обычно .h
Посмотрите настройки проектов утилит от Cypress (в исходниках).
Также просмотрите методы из pUSBDevice->XXXXXX - возможно получите дополнительную диагностику.
Сравните эту диагностику рабочего и нерабочего проектов.
3.
Цитата
int deviceCount = pUSBDevice->DeviceCount(); // <- отрабатывает нормально

Ну, допустим deviceCount получили 0 ?
Этож тоже нормально.

Код
    . . . . .
    for (int i=0; i < USBDevice->DeviceCount(); i++)
    {
        if (USBDevice->Open(i)) // а нет ли тут чевой ?
        {
        }
        else
        {
        }

Не факт, что будет на Open( 0 );

Ну, итд итп и прочея и всякая ...
Cypress дает хороший API к своим девайсам в виде dll.
ilkz
Цитата(k155la3 @ Aug 17 2016, 18:35) *
Какой версии VS ?

В виде отдельного проекта работает и под VS2010 и под VS2015.
Из-под Qt (ага, теперь пишу правильно biggrin.gif maniac.gif ) пробовали с VS2015 - не хочет.
Цитата(k155la3 @ Aug 17 2016, 18:35) *
...
Не факт, что будет на Open( 0 );

Пробовали от 0 до 255 sm.gif Тоже толку ноль... DeviceCount всегда дает 1, если устройство подключено.
k155la3
Проверяли ?
Цитата(Fedor @ Aug 17 2016, 16:04) *
Возможно в обработке строк дело. Попробуйте насильно выставить английскую локаль и юникод нужной версии.


С юникодом могут быть нестыковки. Я его в опциях проекта отключаю и комментирую tchar.h

ps - проверьте какой CyAPI.lib используется - для 32 или 64 версии.
ilkz
Всем спасибо за помощь, заработало.
Нужно было подключить следующие либы (в особенности, последнюю):
CyAPI.lib
user32.lib
setupapi.lib
legacy_stdio_definitions.lib

Помогла эта ссылка: http://www.cypress.com/forum/usb-high-spee...cyapilib-vs2015
k155la3
Цитата(ilkz @ Aug 18 2016, 13:07) *
. . . .
Помогла эта ссылка: http://www.cypress.com/forum/usb-high-spee...cyapilib-vs2015


Хари Кришна, аллилуйя sm.gif

billidean
Приветствую.
Стоит задача написать подобную прогу на Qt (буквы верные написал, на всякий случай) для обмена с EZ-USB FX3 (Cypress).
Почитал по инету, наткнулся на вашу тему. Ясно, что нужно подключить указанные 4 библиотеки... Первые три я нашел, но вот legacy_stdio_definitions.lib не могу найти.
Подскажите, где её найти? И еще, без неё проект не собирается?

Писал проги для работы с FTDI - проблем вообще не возникло, подключил либу ftd2xx и все. Здесь же я пока только готовлюсь, но уже какие-то грабли начинаются с подключением кучи библиотек... Неужели Cypress менее заботится о своих потребителях?
toweroff
У меня EZ-USB (правда, FX2) в bulk нормально работают и с libusb. Что-то супрессовские библиотеки не приглянулись. Не помню уже чем, давно было
billidean
Цитата(toweroff @ Nov 8 2017, 10:50) *
У меня EZ-USB (правда, FX2) в bulk нормально работают и с libusb. Что-то супрессовские библиотеки не приглянулись. Не помню уже чем, давно было


Вы на Qt писали?
Если да, то не могли бы скинуть проект, можно даже самый начальный, работающий...а то времени мало, а разбираться с libusb придется какое-то время.
billidean
В-общем, как-то случайно нарыл в инете решение.
Оказывается нужно было подключать библиотеку cyapi не .lib, а .a
Наткнулся на форуме cypress'a как один чел другому описывал, с какими средами возможно использование .lib, и там он конкретно написал о неподдержке Qt. И уже потом на githab'e нашел исходники этой либы и собранную под mingw.

В итоге: программа видит плату, выдает на неё данные.

Теперь надо саму микросхему настроить на работу в режиме ФИФО.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.