王奇秀 2024-12-09 10:43 采纳率: 0%
浏览 21

Linux串口通信波特率异常问题

请问为什么我的设备串口会出现这个问题,具体描述如下:

在设备上我有一个485串口(设备是ubuntu系统),和电脑串口对测。
在设备接收上:
1.使用busybox microcom -s 115200 /dev/ttyAS1,这样携带波特率打开串口,外部就能通过匹配的波特率给设备发信息,并且设备能够正常收到并回显
2.使用stty -F /dev/ttyAS1 115200,将串口设置为115200波特率,并且通过stty -F /dev/ttyAS1 -a命令能够检查出来串口显示的确实修改为了115200(如下),但是这时候通过busybox microcom /dev/ttyAS1(不指定波特率)打开监听,外部只有通过9600发过来才能正常接收,其他波特率都会乱码,也就是说我通过stty不管把设备的这个串口改成多少波特率,外部都只有9600能够通信

speed 115200 baud; rows 0; columns 0; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>;
eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R;
werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 hupcl -cstopb cread clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke -flusho -extproc

在设备发送上:
1.使用stty将设备修改为任意波特率,外部需要匹配的波特率才能正常接收消息,没有出现设备接收时候那种只有9600才能匹配的情况。

我的推断:
这里只有接收表现出了异常,设备发送时候确实要匹配正常的波特率,所以可以判断设备串口stty去修改波特率确实成功了,所以我推断是busybox microcom /dev/ttyAS1监听命令的问题,请问是不是这里不携带波特率参数,就会使用默认9600,从而导致外部只有9600才能匹配。

  • 写回答

1条回答 默认 最新

  • JavaPub-rodert 领域专家: 后端开发技术领域 2024-12-09 10:52
    关注

    本答案参考 多次询问 ChatGPT-3.5 后选择的最佳回答,若是满意,还请采纳,谢谢

    根据您描述的问题,当使用stty命令设置串口波特率后,使用busybox microcom不指定波特率参数时,外部只有通过9600波特率发送数据才能正常接收,这可能是因为microcom在没有指定波特率参数时使用了默认的波特率9600。

    在Linux系统中,microcom是一个基于busybox的串口通信工具,它默认的波特率可能是9600。当您不指定波特率参数时,microcom可能就会使用这个默认值。这解释了为什么在没有指定波特率的情况下,只有9600波特率的数据能够被正常接收。

    为了解决这个问题,您可以尝试以下步骤:

    1. 明确指定波特率:在使用busybox microcom时,始终明确指定波特率参数,例如busybox microcom -s 115200 /dev/ttyAS1,以确保与您通过stty设置的波特率一致。

    2. 检查microcom配置:查看microcom的手册页(man page)来确认是否有其他配置选项可以设置默认波特率,或者是否有其他参数可以覆盖默认设置。您可以使用命令man microcom来查看手册页。

    3. 检查串口设备文件:确保您使用的串口设备文件(如/dev/ttyAS1)是正确的,并且没有被其他进程占用。

    4. 检查串口参数:使用stty -a < /dev/ttyAS1命令检查串口参数,确保除了波特率之外,其他参数(如数据位、停止位、奇偶校验等)也设置正确,这些参数的不一致也可能导致通信问题。

    5. 检查硬件连接:确保串口的硬件连接正确,包括485转换器的配置和连接,因为硬件问题也可能导致通信异常。

    6. 查看系统日志:检查系统日志,看是否有关于串口通信的错误信息,这可能会提供问题的线索。

    通过上述步骤,您应该能够诊断并解决串口通信中的波特率异常问题。如果问题仍然存在,可能需要进一步的硬件检查或咨询设备制造商的技术支持。

    评论

报告相同问题?

问题事件

  • 修改了问题 12月9日
  • 创建了问题 12月9日