![]() |
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]() ![]() ![]() |
|
Архат |
|
||||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 2.3.2007 Репутация: нет Всего: нет |
Общая идея получить данные USB устройством и переслать их в комп.
Есть USB устройство создано на основе книг Аругова. на базе процессора AT89C5131 и для передачи имеет конечтую точку типа bulk и передаёт 8 байт. Прошивка загружена и работает также написал дрйвер с помощью NuMega Driver Studio 2.6 в Microsoft Visual C++ 6.0 через визард. установил драйвер. Но при написание пользовательского ПО (пишу в C++ Builder 6) в созданном классе TAT89DriverLoader есть ошибка EAccessViolation. код программы:
classDRV.h
тут билдер пишет что ошибка EAccessViolation в строке if (!ReadFile(hDevice,A,8,ReadBytes,NULL)){ , Стал разбираться в чём дело. Программка UsbIDCheck показала: ***Device Descriptor тут всё нормально как надо! ***ConnectionStatus: DeviceConnected Current Config Value: 0x01 Device Bus Speed: Full Device Address: 0x02 Open Pipes: 0 ***Endpoint Descriptor ... wMaxPacketSize: 0x0000 (0) ... bInterval: 0x01 ***Configuration Descriptor: тут тоже всё норм ***Interface Descriptor: тут всё как указано в микропроцессоре ***Endpoint Descriptor: как указано в микропроцессоре wMaxPaketSize: 0x0008 (8) ... bInterval: 0x01 но при открытии и попытки чтении через эту прогу MaxPacketSize считается = 0 и длина прочтённого сообщения тоже 0 насколько я понял первый приведённый Endpoint Descriptor читается из драйвера а остальные из микропроцессора. Капаясь в файлах драйвера, в инклюдах Driver Studio нашо в файле kusb.h строчку inline USHORT KUsbPipe::MaximumPacketSize(void) { ASSERT(m_Information); if(!IsOpen()) return 0; return m_Information->MaximumPacketSize; } что значит ASSERT(m_Information); я так и не полян но строчка IsOpen() привлекла внимание дописал в начале и конце функции Read соотвенственно m_Endpoint1IN.Open(m_Interface); и m_Endpoint1IN.Close(); В программе UsbIDCheck есть изменение, в ****ConnectionStatus: DeviceConnected тепаерь Open Pipes: 1 Но wMaxPaketSize всё ещё =0 помоги, что мне ещё надо исправить в драйвере ? почему wMaxPaketSize =0 ? |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "C/C++: Системное программирование и WinAPI" | |
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |