STM32F4 USB CDC,不能使用pyserial数据

时间:2017-03-28 11:24:58

标签: python usb stm32 pyserial cdc

我对STM32F4 USB CDC和pyserial的组合有问题。如果STM32中的代码想要使用main.c中收到的数据,我就无法打开端口。如果没有,我可以毫无问题地发送和接收,信息成功存储在UserRxBufferFS中。

我收到以下错误:

SELECT traffic_count FROM traffic_counter WHERE type = 0;

我试图将数据存储在我在usbd_cdc_if.h中声明的全局变量中:

usbd_cdc_if.h:>>> 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.c:extern int my_buf[8];

- &GT;错误

试图在回调中调用一个函数,该函数将信息带到我的main.c - &gt;错误

尝试指向缓冲区的全局指针 - &gt;错误

当我使用Windows终端时,所有这一切都正常。 但我需要使用pyserial。当我无法处理我可以连接的数据时,可以毫无问题地发送和接收所有数据。

有没有人知道这个问题以及解决问题的方法?

1 个答案:

答案 0 :(得分:0)

  

WindowsError(87,'Falscher Parameter。')

我想你知道这意味着'错误的参数'。您是否向例程发送了无效参数?

请注意,很可能UserRxBufferFS将被定义为unsigned char(长度为1个字节),因为通信是逐字节的。您将缓冲区定义为int,可能长度为2或4个字节。

也许您将int传递给传输或初始化例程,该例程需要字节? (或unsigned char s)

my_buf[0]=UserRxBufferFS[0];

将第一个元素从UserRxBufferFS转移到my_buf,这可能会将unsigned char复制到int,这也可能会产生意外结果。