Linux扫描端口命令:从 Linux命令行写入串行端口(linux serial console)

关于Linux扫描端口命令的问题,在linux serial console中经常遇到, 从 Windows 我可以使用以下命令与串行端口设备通信:

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

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

设备启动请求的操作。

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

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

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

什么都没发生.

我该怎么做?

36

如果要使用十六进制代码,则应添加-e选项以启用反斜杠转义符的 echo 解释(但结果与echo Ctrl+R的输出可能添加Ctrla您

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

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

17
echo '\x12\x02'

将不会被解释,并将字面上写入字符串\x12\x02(并附加一个换行符)到指定的串行端口。

echo -n ^R^B

您可以在命令行上通过键入CtrlVCtrlRCtrlV来构造脚本。

stty命令应该有效,除非另一个程序正在干扰。常见的罪魁祸首是gpsd,它查找正在插入的 GPS 设备。

7
UsingScreen:

注意:据我所知,屏幕实际上无法发送十六进制。为此,请使用echoprintf

我使用这篇文章中的建议写入串行端口,然后使用another post中的信息从端口读取,结果不一。我发现使用 Screen 是一个“更容易”的解决方案,因为它直接打开与该端口的终端会话。

您可以发出此命令来打开屏幕会话,然后您键入的任何内容都将发送到端口,并在其下方打印返回值:

screen /dev/ttyS0 19200,cs8

(更改上述内容以满足您对速度,奇偶校验,停止位等的需求)我意识到 Screen 不是帖子特别要求的“Linux 命令行”,但我认为它具有相同的精神。另外,您不必每次都输入 echo 和引号。

回声

它遵循praetorian droid's answer然而,这对我不起作用,直到我在发送echo命令时还使用了cat命令 (cat < /dev/ttyS0)

printf

我发现一个也可以使用 printf 的“% x”命令:

c="\x"$(printf '%x' 0x12)
printf $c >> $SERIAL_COMM_PORT

同样,对于 printf,在发送命令之前启动cat < /dev/ttyS0

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(893)
Python怎么处理数据:Python:在熊猫数据帧上使用多处理
上一篇
内容付费cms:UmbracoCMS是免费的还是付费的
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(56条)