使用批处理文件从COM端口检索数据

5

我正试图使用批处理文件自动从COM端口检索数据。

我能够配置串口并发送命令以请求设备信息。

问题在于我无法捕获设备发送的数据。我已经尝试过使用RealTerm,设备工作并将信息发送回计算机,但我真的需要批处理文件来自动完成这个过程。以下是代码:

echo off

MODE COMxx ...

COPY retrievecommand.txt \\\\.\COMxx:

COPY \\\\.\COMxx: data.txt

有什么建议吗?

2个回答

1
使用DOS GOTO命令在递归循环中使用TYPE命令。使用“附加输出”来捕获文本,例如:TYPE COM1:>>Data.txt。双>表示持续连接(或追加)到Data.txt。单>或“重定向输出”将在每个循环中替换Data.txt中的文本(如果端口上存在COM数据)。添加第二行以重定向到监视屏幕,以便您也可以观看活动(即:TYPE COM1:>CON [CON表示控制台或监视屏幕,但您可以省略它,因为控制台默认为任何情况下])。
TYPE命令不需要使用Control-Z。它会不断地转储文本,直到操作员执行Control-C然后按Y来跳出循环。除非您完全完成批处理文件,否则您真的不需要停止循环。Data.txt文件将实时可用于其他程序,并且在此批处理文件仍在循环时尝试使用NOTEPAD.EXE等其他程序访问它时不会出现“共享冲突”。
此外,如果您在批处理文件中添加第三行,写上TYPE COM1:>Data1.txt [注意只有一个重定向符号],您将得到一行即时文本,该行将在下一次迭代时消失。但是,如果您只需要一行数据,这有时会很有帮助。使用DOS FIND命令有创造性的方法可以将一行数据提取到另一个文本文件中。

0

在读取时,COPY 命令会一直执行,直到检测到文件结束。由于源是一个设备(具有潜在的无限流),它只知道在检测到文件结束标记时停止。这是 Ctrl-Z(0x1A)字符。

在重复的问题中建议使用 TYPE 命令进行读取,可能会导致相同的问题。

没有标准机制来读取单行。如果您可以将应用程序移植到 PowerShell,则应该能够读取单行并获得您期望的结果。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接