linux串口编程

这是本文档旧的修订版!


Linux串口编程

大部分情况下,我们在龙芯平台上运行Linux操作系统。而串口则是设备间通讯常用的方式,本文主要探讨如何在Linux平台下对串口进行编程。

Linux下大部分接口都被抽象成了文件系统中的文件,串口也不例外。串口所抽象成的文件位于/dev下,为/dev/tty* (例如/dev/ttyS1为设备Native的串口,/dev/ttyUSB1为通过USB转接的串口)。我们可以通过操作文件系统的方法来对串口进行打开 初始化 发送接收 关闭 等一系列操作。

请注意,对于龙芯1C等设备,在使用串口前需要在内核中正确的设置引脚复用。

使用来自POSIX的API对文件进行操作以操作串口,此种方法网络上有较多的教程描述,可以参考:

Linux Shell中有很多现有的串口收发程序,通过shell直接操作这些程序可以显著减小编程难度,但是相应的效率可能会不高。 此种方法主要由刘工总结。

直接发送

 ''echo -ne "\x55" >/dev/ttyS2''

你要用ttyS2来接设备的话,要把ttyS2的控制台关掉

想接收收到的返回,用microcom, echo -ne "\x55" | microcom -t 1000 -s 115200 /dev/ttyS2 这可以把返回显示出来

要把返回字符串放进变量,

ret=`echo -ne "\x55" | microcom -t 1000 -s 115200 /dev/ttyS2` &&echo $ret

如果收到的是16进制,这样做:

echo -ne "\x55" | microcom -t 1000 -s 115200 /dev/ttyS2|hexdump -v -e '/1 "%02X" '

shell没有Modbus功能,所以用C写了个Modbus_read,方便shell调用,

ret = `modbus /dev/ttyS10 9600 1 0 "%f"`

  读出设备1的0号寄存器的浮点,给变量$ret
  • linux串口编程.1537075288.txt.gz
  • 最后更改: 2022/09/21 13:01
  • (外部编辑)