Допиливание "эмулятора" PL2303
Apr. 26th, 2019 02:03 pmПочти добил нормальный USB CDC на STM32F0x2. Решил проблему с отправкой слишком большого потока данных, "причесал" код (заменил уйму if/else if на switch). Вот только вылезла непонятная ошибка: если в обработчике linecoding_handler сразу выводить show_new_lc() (отображение новых параметров), то появляется ругань на vendor_write:
но если же я делаю, как сейчас (т.е. вывожу эти данные вне прерывания USB), появляется другая ругань:
Однако, ioctl на смену режима работы не возвращает ошибку. Долго втыкал в код модуля pl2303.c, но так и не понял, каким образом небольшая задержка может в одном случае возвращать ошибку на vendor_write, а в другом случае — на set_line_request!
Ну да ладно, если кто подскажет, как это исправить — хорошо. Нет — все равно оно превосходно работает, и занимает сравнительно немного места. Остается лишь на STM32F103 портировать.
На игровых приставках не проверял, все равно я с их прошивками не работаю. Возможно, будет даже на них работать.
pl2303 ttyUSB1: pl2303_vendor_write - failed to write [0000]: -32
но если же я делаю, как сейчас (т.е. вывожу эти данные вне прерывания USB), появляется другая ругань:
pl2303 ttyUSB1: pl2303_set_line_request - failed: -32
Однако, ioctl на смену режима работы не возвращает ошибку. Долго втыкал в код модуля pl2303.c, но так и не понял, каким образом небольшая задержка может в одном случае возвращать ошибку на vendor_write, а в другом случае — на set_line_request!
Ну да ладно, если кто подскажет, как это исправить — хорошо. Нет — все равно оно превосходно работает, и занимает сравнительно немного места. Остается лишь на STM32F103 портировать.
На игровых приставках не проверял, все равно я с их прошивками не работаю. Возможно, будет даже на них работать.