Jump to content

    

CyUSB под QT

Добрый день. Впрсо имею я.

 

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

Код такой:

...
pUSBDevice = new CCyUSBDevice();
int deviceCount = pUSBDevice->DeviceCount(); // <- отрабатывает нормально
pUSBDevice->Open(0) // <- вот тут, если полезть внутрь Open, то DevPath почему-то оказывается пустой
...

 

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

 

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

 

Что я не докрутил или куда хотя бы копать для решения проблемы?

Гугл молчит по данному вопросу.

 

Спасибо.

Share this post


Link to post
Share on other sites

Причем тут QuickTime? Я говорю о QT Creator )))

Share this post


Link to post
Share on other sites
Причем тут QuickTime? Я говорю о QT Creator )))

Вы ощущаете разницу между QT и Qt?

Share this post


Link to post
Share on other sites

Я конечно не настаиваю, но как мне кажется, из контекста вопроса понятно о чем идет речь. И давайте не будем разводить оффтоп.

Share this post


Link to post
Share on other sites

 

Возможно в обработке строк дело. Попробуйте насильно выставить английскую локаль и юникод нужной версии.

Share this post


Link to post
Share on other sites
Я конечно не настаиваю, но как мне кажется, из контекста вопроса понятно о чем идет речь. И давайте не будем разводить оффтоп.
Вот зовут вас, скажем, Ваня. А кто-то вас зовёт Вася. Подумаешь, всего одна буква. Из контекста понятно, о ком идёт речь.

 

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

Share this post


Link to post
Share on other sites
Вот зовут вас, скажем, Ваня. А кто-то вас зовёт Вася. Подумаешь, всего одна буква. Из контекста понятно, о ком идёт речь.

 

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

 

"Жора, не изводите себя, вы же ещё не отсидели за ТО дело!" 'c'

В 9 случаях из 10 мГц в конце концов окажется МГц.

Вы сами-то миллигерцами давно пользовались? Небось тогда же как водку отмеряли мегалитрами...

 

Из контекста абсолютно ясно было, что никак не QuickTime имелся в виду.

Share this post


Link to post
Share on other sites
. . . . . .

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

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

Какой версии VS ?

. . . . . .

Что я не докрутил или куда хотя бы копать для решения проблемы?

. . .

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.

Share this post


Link to post
Share on other sites
Какой версии VS ?

В виде отдельного проекта работает и под VS2010 и под VS2015.

Из-под Qt (ага, теперь пишу правильно :biggrin: :maniac: ) пробовали с VS2015 - не хочет.

...

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

Пробовали от 0 до 255 :) Тоже толку ноль... DeviceCount всегда дает 1, если устройство подключено.

Share this post


Link to post
Share on other sites

Проверяли ?

Возможно в обработке строк дело. Попробуйте насильно выставить английскую локаль и юникод нужной версии.

 

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

 

ps - проверьте какой CyAPI.lib используется - для 32 или 64 версии.

 

Edited by k155la3

Share this post


Link to post
Share on other sites

Всем спасибо за помощь, заработало.

Нужно было подключить следующие либы (в особенности, последнюю):

CyAPI.lib

user32.lib

setupapi.lib

legacy_stdio_definitions.lib

 

Помогла эта ссылка: http://www.cypress.com/forum/usb-high-spee...cyapilib-vs2015

Share this post


Link to post
Share on other sites

Приветствую.

Стоит задача написать подобную прогу на Qt (буквы верные написал, на всякий случай) для обмена с EZ-USB FX3 (Cypress).

Почитал по инету, наткнулся на вашу тему. Ясно, что нужно подключить указанные 4 библиотеки... Первые три я нашел, но вот legacy_stdio_definitions.lib не могу найти.

Подскажите, где её найти? И еще, без неё проект не собирается?

 

Писал проги для работы с FTDI - проблем вообще не возникло, подключил либу ftd2xx и все. Здесь же я пока только готовлюсь, но уже какие-то грабли начинаются с подключением кучи библиотек... Неужели Cypress менее заботится о своих потребителях?

Share this post


Link to post
Share on other sites

У меня EZ-USB (правда, FX2) в bulk нормально работают и с libusb. Что-то супрессовские библиотеки не приглянулись. Не помню уже чем, давно было

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this