STM32F4 USB CDC, не может использовать данные с pyserial

У меня проблема с сочетанием STM32F4 USB CDC и pyserial. Если мой код в STM32 хочет работать с полученными данными в main.c, я не могу открыть порт. Если нет, я могу отправлять и получать без проблем, информация успешно сохраняется в UserRxBufferFS.

Я получаю следующую ошибку:

>>> ser.open() Traceback (most recent call last):   File "<stdin>", line 1, in <module>   File "C:\Program Files\Anaconda2\lib\site-packages\serial\serialwin32.py", line 78, in open
    self._reconfigure_port()   File "C:\Program Files\Anaconda2\lib\site-packages\serial\serialwin32.py", line 222, in
_reconfigure_port
    'Original message: {!r}'.format(ctypes.WinError())) serial.serialutil.SerialException: Cannot configure port, something went wrong. Original message: WindowsError(87, 'Falscher Parameter.')

Я пытался сохранить данные в глобальной переменной, которую я объявил в usbd_cdc_if.h:

usbd_cdc_if.h: extern int my_buf[8];
usbd_cdc_if.c: my_buf[0]=UserRxBufferFS[0];

-> ошибка

Пытался вызвать функцию в обратном вызове, которая приносит информацию в мой main.c -> ошибка

Попробовал глобальный указатель, который указывает на буфер -> ошибка

Все это работает, когда я использую терминал Windows. Но мне нужно использовать pyserial. Когда я не работаю с данными, я могу подключиться, отправить и получить все без проблем.

У кого-нибудь есть представление о проблеме и способ ее решения?

1 ответ

WindowsError(87, "Параметр Фальшера")

Я полагаю, вы знаете, что означает "неправильный параметр". Вы отправили неверный параметр в процедуру?

Обратите внимание, что, очень вероятно, UserRxBufferFS будет определяться как что-то вроде unsigned char (Длиной 1 байт), потому что сообщение является байтовым. Вы определяете свой буфер как int, который, вероятно, имеет длину 2 или 4 байта.

Может быть, вы проходите мимо int к процедуре передачи или инициализации, где эта процедура ожидает байты? (или же unsigned chars)

my_buf[0]=UserRxBufferFS[0];

передает первый элемент из UserRxBufferFS в my_bufкоторый, вероятно, копирует unsigned char в int, что также может дать неожиданные результаты.

Другие вопросы по тегам