我对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。当我无法处理我可以连接的数据时,可以毫无问题地发送和接收所有数据。
有没有人知道这个问题以及解决问题的方法?
答案 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
,这也可能会产生意外结果。