Доброго времени суток!
Вот занялся связью AVR с компом по USB и как раз попались мне статьи с использованием HID и соответственно hidlibrary.h.
Сделал устройство, описанное в статье http://cxem.net/comp/comp129.php, а оно, в свою очередь основывается на http://we.easyelectronics.ru/electro-and-pc/usb-dlya-avr-chast-2-hid-class-na-v-usb.html.
Прошитый контроллер нормально определяется системой, показывает VID и PID, и даже готовый софт (в первой статье) нормально с ним взаимодействует.
А вот написать свой софт не выходит...
Обнаружилось, что функция
int connect() // этой функцией будем подключаться к устройству
{
int i, n, res = 0;
string exampleDeviceName = "";
exampleDeviceName += vendorName;
exampleDeviceName += " ";
exampleDeviceName += productName; n = hid.EnumerateHIDDevices();
for (i = 0; i < n; i++){
hid.Connect(i);
if ( hid.GetConnectedDeviceName() == exampleDeviceName ){
res = 1;
break;
}
}
return res;
}
почему-то не хочет коннектиться.
Выяснилось, что код
if ( hid.GetConnectedDeviceName() == exampleDeviceName ){
res = 1;
break;
}
нормально не отрабатывает, то есть hid.GetConnectedDeviceName() всегда возвращает пустую строку.
Проверка подтвердила, что счетчик устройств не равен нулю, а в моем случае находит два устройства - мышку и подключенный контроллер.
Кто-то сталкивался с такой проблемой? Почему функция не выводит названия устройств?
Писал софт на С++ Builder 2007.
Встречал заметки, что на билдер ставили какой-то апдейт, но я так понял что говорили о версии 6 и соответственно update 4. Пробовал установить эту версию (с апдейтом), однако результат компиляции софта был таким же.
Система - Windows 7 SP1 x64