juvf 17 8 августа, 2016 Опубликовано 8 августа, 2016 · Жалоба На stm32f401 использую stm-овскую библиотеку усб. На компе использую libusb-win32-bin-1.2.5.0 Из мк передаю в комп пакет через булк. код DCD_EP_Tx(&USB_OTG_dev, 02, usbBuffer, size); Если size != 8, то комп принимает нормальный пакет. Без ошибок. Если в мк size = 8, то комп не получает пакет.... usb_bulk_read() возвращяет -116, т.к. ошибка по таймауту. Не дожидается комп ответа от мк. Ставлю ожидание 1 сек, 5 сек.... не принимает комп ни чего. -116 и всё! Но если мк передает паке размером отличный от 8..... например 4,5 1, или 27.... то всё нормально. Как говориться - в чём дело? Почему так происходит? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
prottoss 0 8 августа, 2016 Опубликовано 8 августа, 2016 · Жалоба Как говориться - в чём дело? Почему так происходит? Если размер отправляемого пакета равен размеру конечной точки то после отправки пакета необходимо отправить пакет нулевой длины - так драйвер на стороне РС поймет, что передача закончена - иначе он будет ждать следующий пакет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
juvf 17 8 августа, 2016 Опубликовано 8 августа, 2016 · Жалоба prottoss, спасибо большое, помогло!!!!. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться