我尝试以 root 身份使用 cat 从 1 个终端上的 /dev/ttyS0 读取:
cat < /dev/ttyS0
并以 root 身份从另一个终端使用 echo 向串行端口发送消息:
echo -ne "hello" > /dev/ttyS0
但是我没有从猫那里得到任何信息。有人能告诉我问题的原因吗?
答案1
该设备/dev/ttyS0
通常对应于计算机的第一个串行端口。如今,计算机没有串行端口,但某些 USB 设备可能会出现在/dev/ttyS
X系统端口。如果设备在启动期间连接到计算机,则可以通过运行以下命令找到设备名称:
journalctl -b | grep ttyS
如果设备尚未连接,首先运行命令:
journalctl -f | grep ttyS
然后连接设备;您应该会看到一条指示端口号的消息X。
如果您尝试将数据发送到桌面系统的虚拟控制台,请先按下组合键Ctrl+ Alt+F4并登录到以文本模式显示的虚拟控制台。然后运行命令
who am i
验证您登录的设备是否确实存在/dev/tty4
(在这种情况下,上述命令输出的第二个字应该是tty4
)。
在主图形屏幕(可通过按组合键Ctrl+ Alt+进入F2)打开终端并运行以下命令:
echo "Hello" >/dev/tty4
使用Ctrl++切换回控制台并查看显示的消息。AltF4
类似地,在主图形屏幕上运行以下命令:
cat </dev/tty4
切换回控制台并尝试输入一些字符。有些字符会回显到屏幕上(通过bash
),有些则不会。未回显的字符将作为命令的输出显示在主图形屏幕上cat
。原因是同一设备被两个进程读取(一个在文本控制台上,bash
另一个在图形屏幕上,即cat
命令)。
笔记:
非 root 用户要想读写串行端口,需要拥有该设备的读写权限。在 Ubuntu 中,只需dialout
使用以下命令将当前用户添加到组中即可轻松完成此操作
sudo addgroup _your_user_ dialout
您可能需要注销然后重新登录才能使此更改生效。