Здравствуйте, гость ( Вход | Регистрация )
laa88rf | Дата 27.8.2013, 11:43 |
Разобрался. Благодарю за помощь. |
|
laa88rf | Дата 27.8.2013, 11:12 |
Он равен на одной машине 6, а на другой 8. Т.е. по количеству usb-девайсов. Если usb нет совсем, то, я так думаю, он тогда должен вернуть -1. | |
Iron Bug | Дата 27.8.2013, 9:49 |
NumDev чему равен при вызове? он изменяется от 0 до значения, возвращаемого CP210x_GetNumDevices - 1. внимательно читаем документацию. |
|
laa88rf | Дата 27.8.2013, 9:33 |
Точно. Пропустил это. Однако тоже странно, что оно по-прежнему "валится", и в том же месте.
Еще один интересный факт. Если выполнить эту функцию без получения NumDevice, то я получаю сообщение с кодом 255 (что устройство не найдено) и руганью X����gj��=ĶX�^ 5 q�. Декодировать не стал. А вот как только я получаю NumDev:
То все валится. Может у меня проблема с понимаем работы с указателями, а может библиотека кривая или программного обеспечения не хватает? Или все сразу? |
|
Iron Bug | Дата 27.8.2013, 7:58 |
читай документацию. Цитата CP210x_GetProductString Description: This function returns a null terminated serial number (S/N) string, product description string or full path string for the device specified by an index passed in the DeviceNum parameter. The index of the first device is 0 and the index of the last device is the value (NumDevices) returned by CP210x_GetNumDevices() - 1. Supported Devices: CP2101, CP2102, CP2103 Location: CP210x Manufacturing DLL Prototype: CP210x_STATUS CP210x_GetProductString( DWORD DeviceNum, LPVOID DeviceString, DWORD Options ) Parameters: 1. DeviceNum—Index of the device for which the product description string, serial number or full path is desired. 2. DeviceString—Variable of type CP210x_DEVICE_STRING returning the NULL terminated serial number, device description or full path string. 3. Options—Flag that determines if DeviceString contains the product description, serial number or full path string. Return Value: CP210x_STATUS = CP210x_SUCCESS,CP210x_DEVICE_NOT_FOUND,CP210x_INVALID_PARAMETER |
|
Andriuxa | Дата 26.8.2013, 14:56 |
Благодарю за объяснение. Вот только библиотека кривая какая-то. CP210x_GetNumDevices() - возвращает количество устройств
Однако теперь другая проблема. Судя, по ману, после GetNumDevices, я должен вызвать CP210x_GetProductString. Но при вызове у меня все дохнет (core dumped). В чем дело, я понять не могу.
Для чего вообще создавать указательного типа на void, я понять не могу.
Судя по отладчику, валится на if (CP210x_Open(dwDeviceNum, &h) == CP210x_SUCCESS). Я понимаю, что по логике, оно должно вернуть CP210x_DEVICE_NOT_FOUND, но этого не происходит. |
|
Iron Bug | Дата 24.8.2013, 22:02 |
я так понимаю, что они поставляют уже готовую библиотеку для работы с их драйвером. зачем сюда лепить ещё usblib? вот что разработчики пишут в документации к CP210x: http://www.silabs.com/Support%20Documents/...lDocs/an197.pdf а из приведённого тобой куска документации понятно, что надо сначала вызывать CP210x_GetNumDevices(), чтобы получить список доступных устройств данного типа. а потом выбрать нужное (по каким-то юзерким критериям, обычно там серийный номер или что-то типа того). обычный подход к написанию библиотек для таких девайсов: 1. считывается список доступных устройств. 2. выбирается одно из них (если их много) по какому-то признаку - это уже зависит от юзера. 3. открывается некий библитотечный дескриптор устройства через библиотечную функцию и дальше идёт работа с этим дескриптором. 4. открытый дескриптор закрывается. |
|
Andriuxa | Дата 23.8.2013, 17:13 |
есть устройство cp210x, для него надо написать прогу. Так вот там функция cp210x_open(). Вот так выглядит:
передаю ей через (void **), пока, этот параметр, но мне заявляет, что у меня руки кривые и так она это устройство не найдет. libusb.h находит девайс сразу по vid/pid, а вот как cp210x заставить вкалывать, я понять не могу. |
|
Iron Bug | Дата 23.8.2013, 14:41 |
никак. разработчики декларируют libusb_device_handle как непрозрачную для юзера структуру. если разработчики решили не давать ссылок на структуру объекта, значит, это не предусмотрено. теоретически, можно выкопать определение из сорцов, но это неправильный подход, чреватый ошибками работы с железом. а зачем понадобился HANDLE? |
|
Andriuxa | Дата 23.8.2013, 12:58 |
доп к п.1 код:
cpHANDLE = dev_handle как сделать? |
|
Просмотр темы полностью (откроется в новом окне) | |
Текстовая версия | Сейчас: 17.5.2024, 12:03 |