제가 사용하고 있던 FPGA가 115200 전송 속도로 프로그래밍되었기 때문에 # stty -F/dev/ttyUSB0 115200 명령을 사용하여 Linux USB 포트의 전송 속도를 9600에서 115200으로 변경했습니다.
# stty -F/dev/ttyUSB0 -a를 사용하여 새로운 전송 속도를 교차 검증했습니다. 이는 나에게 다음과 같은 결과를 제공합니다.
속도 115200보드;행 0;열 0;행=0; intr = ^C;exit=^\;erase=^? ; kill = ^U; 중단 = ; 시작 = ^S; rpnt = ^W; ; 폐기=^O; 시간=0; -parenb -parodd -cmspar cs8 hupcl -cstopb crread clocal -crtscts -ignbrk -brkint -ignpar -inlcr -igncr icrnl ixon -ixoff -ixany -imaxbel -iutf8opost -olcuc -ocrnl onlcr -onocr - onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
그러나 프로그램을 실행하면 전송 속도가 다시 9600으로 변경됩니다. python new.py 인터페이스 검색 중... ['/dev/ttyUSB0']
ser: 직렬(포트='/dev/ttyUSB0',전송 속도=9600,바이트 크기=8, 패리티='N', 정지 비트=1, 시간 초과=없음, xonxoff=False, rtscts=False, dsrdtr=False).
어떻게 해야 합니까?
답변1
pyserial을 사용하여 전송 속도를 명시적으로 언급하지 않으면 다음을 사용합니다.9600기본값으로. 따라서 이전 전송 속도 설정은 쓸모가 없습니다. stty 명령을 사용하여 전송 속도를 115200으로 설정하고 수신기를 cat /dev/ttyUSBy로 설정한 후 echo hello > /dev/ttyUSB0을 시도해 보십시오.
답변2
Pyserial은 전송 속도를 변경하지 않고 포트를 여는 것을 지원하지 않습니다. 전송 속도 매개변수가 제공되지 않으면 기본값은 9600입니다.
각 Pyserial 호출에서 원하는 전송 속도를 전달해야 합니다.