|
CyUSB под QT |
|
|
|
Aug 17 2016, 10:30
|
Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 9-09-11
Пользователь №: 67 084

|
Добрый день. Впрсо имею я. Не получается под QT открыть устройство функцией USBDevice->Open(0). Если полезть в недра, то почему-то не формируется DevPath - он всегда равен "/", хотя должен быть большим и длинным с vid/pid и прочими штуками. Код такой: Код ... pUSBDevice = new CCyUSBDevice(); int deviceCount = pUSBDevice->DeviceCount(); // <- отрабатывает нормально pUSBDevice->Open(0) // <- вот тут, если полезть внутрь Open, то DevPath почему-то оказывается пустой ... Такое поведение и с компилятором Mingw и с VS2015. Тот же самый код, но собранный в виде проекта VS, работает нормально. Что я не докрутил или куда хотя бы копать для решения проблемы? Гугл молчит по данному вопросу. Спасибо.
|
|
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 16)
|
Aug 17 2016, 13:04
|
Участник

Группа: Участник
Сообщений: 73
Регистрация: 26-10-05
Пользователь №: 10 125

|
Возможно в обработке строк дело. Попробуйте насильно выставить английскую локаль и юникод нужной версии.
|
|
|
|
|
Aug 17 2016, 13:33
|
Профессионал
    
Группа: Свой
Сообщений: 1 975
Регистрация: 30-12-04
Из: Воронеж
Пользователь №: 1 757

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

Местный
  
Группа: Свой
Сообщений: 449
Регистрация: 28-10-04
Из: Украина
Пользователь №: 1 002

|
Цитата(andrew_b @ Aug 17 2016, 15:33)  Вот зовут вас, скажем, Ваня. А кто-то вас зовёт Вася. Подумаешь, всего одна буква. Из контекста понятно, о ком идёт речь.
Впрочем, о чём это я. Некоторые тутотшние господа инженеры МГц и мГц путают. Тоже пустячок -- одна буква. Из контекста же понятно, о чём речь. Неряшливость в письме выдаёт неряшливость в мыслях. "Жора, не изводите себя, вы же ещё не отсидели за ТО дело!" 'c' В 9 случаях из 10 мГц в конце концов окажется МГц. Вы сами-то миллигерцами давно пользовались? Небось тогда же как водку отмеряли мегалитрами... Из контекста абсолютно ясно было, что никак не QuickTime имелся в виду.
--------------------
Умею молчать на 37 языках...
|
|
|
|
|
Aug 17 2016, 15:35
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Цитата(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.
|
|
|
|
|
Aug 18 2016, 05:31
|
Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 9-09-11
Пользователь №: 67 084

|
Цитата(k155la3 @ Aug 17 2016, 18:35)  Какой версии VS ? В виде отдельного проекта работает и под VS2010 и под VS2015. Из-под Qt (ага, теперь пишу правильно  ) пробовали с VS2015 - не хочет. Цитата(k155la3 @ Aug 17 2016, 18:35)  ... Не факт, что будет на Open( 0 ); Пробовали от 0 до 255  Тоже толку ноль... DeviceCount всегда дает 1, если устройство подключено.
|
|
|
|
|
Aug 18 2016, 08:07
|
Профессионал
    
Группа: Свой
Сообщений: 1 123
Регистрация: 8-03-09
Из: Днепр
Пользователь №: 45 848

|
Проверяли ? Цитата(Fedor @ Aug 17 2016, 16:04)  Возможно в обработке строк дело. Попробуйте насильно выставить английскую локаль и юникод нужной версии. С юникодом могут быть нестыковки. Я его в опциях проекта отключаю и комментирую tchar.h ps - проверьте какой CyAPI.lib используется - для 32 или 64 версии.
Сообщение отредактировал k155la3 - Aug 18 2016, 09:08
|
|
|
|
|
Aug 18 2016, 10:07
|
Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 9-09-11
Пользователь №: 67 084

|
Всем спасибо за помощь, заработало. Нужно было подключить следующие либы (в особенности, последнюю): CyAPI.lib user32.lib setupapi.lib legacy_stdio_definitions.lib Помогла эта ссылка: http://www.cypress.com/forum/usb-high-spee...cyapilib-vs2015
|
|
|
|
|
Nov 8 2017, 12:40
|
Местный
  
Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925

|
Цитата(toweroff @ Nov 8 2017, 10:50)  У меня EZ-USB (правда, FX2) в bulk нормально работают и с libusb. Что-то супрессовские библиотеки не приглянулись. Не помню уже чем, давно было Вы на Qt писали? Если да, то не могли бы скинуть проект, можно даже самый начальный, работающий...а то времени мало, а разбираться с libusb придется какое-то время.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|