2017-03-28 15 views
0

STM32F4 USB CDC와 pyserial의 조합에 문제가 있습니다. STM32의 코드가 main.c에서 수신 된 데이터로 작업하기를 원한다면 포트를 열 수 없습니다. 그렇지 않은 경우, 아무런 문제없이 보내고받을 수 있습니다. 정보는 UserRxBufferFS에 성공적으로 저장됩니다.STM32F4 USB CDC, pyserial 데이터를 사용할 수 없습니다.

나는 다음과 같은 얻을 오류 :

>>> 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];

-> 오류

는 CA의 기능을 호출하는 시도 나는 윈도우 터미널을 사용할 때> 오류

이 모든이 작동 - 내 main.c에에 정보를 제공 llback -> 오류

버퍼를 가리키는 전역 포인터를 시도했다. 하지만 pyserial을 사용해야합니다. 연결할 수있는 데이터로 작업하지 않을 때 문제없이 모든 것을 보내고받을 수 있습니다.

누구나 문제를 파악하고 해결 방법을 알고 있습니까?

답변

0

WindowsError(87, 'Falscher Parameter.')

'잘못된 매개 변수'라는 것을 알고 있다고 생각합니다. 루틴에 잘못된 매개 변수를 보냈습니까?

은 바이트 단위로 통신하므로 unsigned char (1 바이트 길이)로 정의됩니다. 버퍼를 int으로 정의하고 있습니다. 길이는 2 또는 4 바이트입니다.

전송 또는 초기화 루틴에 int을 전달하는 것일 수 있습니다. 여기서 루틴은 바이트를 예상합니까? (또는 unsigned char S) UserRxBufferFS에서 my_buf

my_buf[0]=UserRxBufferFS[0]; 

전송 첫번째 요소되는 아마도 사본과 같은 예상치 못한 결과를 얻을 수 int,로의 unsigned char.