读取串行设备将输出复制到输入

时间:2019-07-08 18:33:38

标签: serial-port command-line-interface io-redirection

我有一个连接到提供简单命令行的串行端口的设备。我的目标是最终通过Expect与之互动。不过,我遇到了一个问题-当我用cat /dev/ttyS0screen /dev/ttyS0读取设备的输出时,它决定使用自己的输出作为输入。

>> BOOTING <<

Available commands:
  help                 Show detailed help
  test                 Run tests; see help for details

prompt>

理想情况下,它将在这里等待返回,然后执行命令。实际上,我所看到的(没有我的任何投入)是沿着这些思路:

prompt>  Rn ests se hlp fo etis
  Command 'Rn' not recognized. Enter 'help' for a list of choices.
prompt> ogizd. nter'hel' fo a lis of coie.
  Command 'ogizd.' not recognized. Enter 'help' for a list of choices.
prompt>  coics.
  Command 'coics.' not recognized. Enter 'help' for a list of choices.
prompt> d. Ener 'elp'for  listof coies
  Command 'd.' not recognized. Enter 'help' for a list of choices.

依此类推,直到我停止cat。有趣的是,重新启动它不会产生任何输出(直到我关闭设备电源,然后重新开始反馈),这向我暗示它只有在观察到它的输出时才在自言自语。缺少的字符证实了这一建议。将cat重定向到文件不会发生任何变化。

命令行代码不是我的。其他用户没有此类问题。

这里可能出什么问题了,我该如何解决?

1 个答案:

答案 0 :(得分:0)

看起来像您一样,

-设备上的硬件回显。如果是这样,您应该可以通过开关将其禁用。

-驱动程序上的软件回显。要关闭它,您可以运行:

stty -F /dev/ttyS0 -echo

这应该使cat的行为恢复到您期望的状态。