如何在脚本后台运行“cat”命令

如何在脚本后台运行“cat”命令

我有一个 USB LTE 调制解调器连接到我的 Raspberry,我需要读取通过串行线发送的回复,这些回复由使用“echo”命令发送的请求生成。代码:

cat /dev/ttyUSB0 > ttyUSB0_logs &
echo "AT+csq" > /dev/ttyUSB0
echo "AT+cgreg=2" > /dev/ttyUSB0
echo "AT+cgreg?" > /dev/ttyUSB0

问题是,尽管“cat”命令应该在后台运行,并且所有输出都定向到文件,但此时脚本仍然冻结。如果我在脚本之外使用第一个命令,它会按预期工作 - 它会在后台将所有输出存储到文件 ttyUSB0_logs 中,我可以使用接收到的数据进行其他操作。问题是 - 我如何将第一个命令集成到脚本中以使其以这种方式工作?非常感谢。

答案1

请记住:在 shell 中:如果您依次执行所有命令,则第一个命令“cat ....”即使在您执行最后一个命令后仍会执行。在 shell 脚本中:“cat ...”命令将在执行最后一个命令后很快被终止,因此无法再进行读写。第一步:尝试在命令行之间放置“sleep 1”,并在最后一个命令后放置更长的休眠时间“sleep 10”。

答案2

在调制解调器中,命令字符串的 AT 部分用于检测波特率、奇偶校验等。设备对串行数据进行计时以测量位宽

为了做到这一点,它需要一个空闲超时来确定“A”的开始

你的剧本可能演得太快了

尝试在每个命令行前面加上 sleep

有一个 S 寄存器保存超时时间。时间过去了好久,我忘了具体是什么时候了。我认为典型的超时时间是 2 秒

相关内容