Linux系统不断将端口的波特率更改为默认值(9600)。有没有更好的方法来永久改变端口的波特率?

Linux系统不断将端口的波特率更改为默认值(9600)。有没有更好的方法来永久改变端口的波特率?

我使用命令 # stty -F/dev/ttyUSB0 115200 将我的 Linux USB 端口的波特率从 9600 更改为 115200,因为我正在使用的 FPGA 被编程为波特率 115200。

我使用 # stty -F/dev/ttyUSB0 -a 交叉验证了新的波特率。这给了我以下结果:

速度 115200 波特;行 0;列 0;行=0; intr = ^C;退出=^\;擦除= ^?;杀死=^U; eof = ^D;停产 = ;尾数2 = ;开关=;开始=^Q;停止=^S;暂停=^Z; rprnt = ^R; werase = ^W;lnext = ^V;丢弃=^O;分钟= 1;时间=0; -parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -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 调用时传递所需的波特率。

相关内容