为什么 screen 和 minicom 会丢弃从串行端口传入的字节,而 cat 却不会?

为什么 screen 和 minicom 会丢弃从串行端口传入的字节,而 cat 却不会?

我最近需要重置旧 APC UPS 的密码,这需要连接其专有串行电缆,按下重置按钮,然后通过串行接口使用默认用户名和密码登录。我将其连接到 R720XD 上的串行端口,并将端口传递到 Ubuntu VM。

我曾经stty按照 APC 的文档配置串行端口,启动screen /dev/ttyS0 <options>,然后开始工作。不知为何,输出一团糟。它似乎会拾取每次传输的前 3-4 个字符,然后错过其余字符。我尝试了minicom同样的结果。

所以我做了一个环回测试 - 将 RX 和 TX 连接在一起 - 看看我发送的内容是否会返回。同样的问题。我将示波器连接到电线上,发现每个按键都正确发送;我可以看到它通过电线传输。但出于某种原因,大多数字符不会显示在 上screen

然后我发现,如果我cat /dev/ttyS0在一个终端和echo alongstring > /dev/ttyS0另一个终端上执行此操作,我就可以看到一切!

我最终只是让终端保持cat打开状态以查看传入的字节,并在另一个终端中运行以发送按键,这工作得很好,而且比反复screen使用要容易得多。使用这个成功重置了密码。echo

但现在我很好奇... 有人知道为什么screenminicom这样吗?我尝试了 中的所有选项man,但都没有成功。似乎还有其他东西将字节从缓冲区中拉出,但我不知道那是什么。

相关内容