我似乎搜索了许多非常相似的问题,但从未找到有用的东西。我正在尝试使用树莓派(第二代)与 Wifi OBDII 传感器进行通信。我可以使用以下命令
nc -C 192.168.0.10 35000
Run Code Online (Sandbox Code Playgroud)
192.168.0.10 是汽车传感器,35000 是端口。这并不重要,因为连接似乎没问题。无论如何,我可以打开一个 nc 实例,然后键入,例如“0145”(传感器代码),作为回报,我在 nc 会话的输出上得到该传感器的值(例如,我的引擎的 RPM) )。效果很好。我想做的是将命令从文本文件传输到 nc 会话中以进行绘图。因此,我的理想结果是将 RPM 值和相关时间的恒定流转储到文本文件中。我可以从那里工作。但是,我并不完全知道该怎么做。我已经设置了一个commands.txt,其中有数千行“0145”,我想读取该文件并将其逐行传递给nc(我可能可以通过睡眠来控制采样间隔),然后读取输出并将其存储到文本文件中。我知道这个问题与标准输入和标准输出以及管道有关,但无论出于何种原因,我一直无法完全理解它。我绝不是其中任何一个的大师。我还想编写整个过程的脚本。
现在,如果我跑
cat <(echo 0145) - | nc -C 192.168.0.10 35000
Run Code Online (Sandbox Code Playgroud)
这为我提供了我想要的终端输出,但仅适用于单个值。但是,一旦我尝试将其放入循环中,将 0145 放入脚本中的 $commands 中,并从 txt 文件中逐行获取 $commands ,它就停止工作。事实上,即使我将其保留为 0145 并且不使用变量,它也会在任何循环或 if 块内停止工作。
所以,长话短说,我想编写脚本将 txt 文件逐行发送到 nc 连接,然后我想将每个响应提取到另一个文件中。如果它是无脚本的,我可以打开该 nc 连接并每 1 秒发送 0145 并获取这些响应(仍然不知道如何将它们传递到文件),但这几乎没有效率。我觉得应该有一种更简单的方法来做到这一点。我有点菜鸟,但我想我可以在这里尝试一下。任何帮助是极大的赞赏