Linux 下向串口发二进制数据

如果要发的数据很少,可以直接用 echo 向串口文件里写。主要的要点有 2:

  • echo 使用选项 -ne。n 用于不附加结尾回车,e 用于开启转义。16 进制数的转义写法和 Python 一样,真是好。
  • 给串口文件写权限。默认串口文件是不能写的,要么给串口加写权限 chmod o+rw /dev/ttyS1,要么把当前用户添加到串口读写组里 usermod -aG dialout current_user

另外 echo 默认输出到标准输出,需要重定向到串口文件。综上,可以这么发:echo -ne "\x52\x54\x01\x01\x01\x01\x0A\x0D" > /dev/ttyS1

如果发送没效果,有个可能的原因是串口波特率不对。用 stty 修改串口设置即可:stty 9600 -F /dev/ttyS1

说点啥呗

电子邮件地址不会被公开。 必填项已用*标注