从 Linux 命令行写入串行端口

新手上路,请多包涵

在 Windows 中,我可以使用以下命令与串行端口设备通信:

 mode com1: baud=9600 data=8 parity=n stop=1
copy con com1
alt+18alt+2ctrl+z

设备开始请求的操作。

当我尝试从独立的 Debian 机器或同一 Windows 机器的 Debian VirtualBox 实例完成相同的操作时,到目前为止我没有运气。

以下是等效的 Linux 命令(至少我是这么认为的):

 stty -F /dev/ttyS0 speed 9600 cs8 -cstopb -parenb
echo '\x12\x02' > /dev/ttyS0

什么都没发生。

我该怎么做?

原文由 erin c 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 658
2 个回答
echo '\x12\x02'

将不会被解释,并且会将字符串 \x12\x02 (并附加一个换行符)写入指定的串行端口。而是使用

echo -n ^R^B

您可以通过键入 Ctrl V Ctrl RCtrl V Ctrl B 在命令行上构建它。或者使用编辑器输入脚本文件更容易。

stty 命令应该可以工作,除非另一个程序正在干扰。一个常见的罪魁祸首是 gpsd 寻找插入的 GPS 设备。

原文由 wallyk 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果要使用十六进制代码,则应添加 -e 选项以启用通过 echo 解释反斜杠转义(但结果与 echo Ctrl + RCtrl + )。正如 wallyk 所说,您可能想要添加 -n 以防止输出换行符:

 echo -en '\x12\x02' > /dev/ttyS0

还要确保 /dev/ttyS0 是您想要的端口。

原文由 praetorian droid 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题