我正在尝试使用批处理文件从COM端口自动检索数据。
我可以配置com端口并在其他位置发送命令以询问我的设备信息。
问题是我无法捕获设备发送的数据。我已经尝试使用RealTerm并且设备正在工作并将信息发送回电脑,但我真的需要批处理文件自动完成,这里是代码:
echo off
MODE COMxx ...
COPY retrievecommand.txt \\\\.\COMxx:
COPY \\\\.\COMxx: data.txt
有什么建议吗?
答案 0 :(得分:1)
使用DOS GOTO命令在DOS LABEL的递归循环中使用TYPE命令。使用'append output'来捕获文本,如TYPE COM1:>> Data.txt double>表示连续连接(或追加)到Data.txt。单个>或“重定向输出”将在每个循环中替换Data.txt中的文本(如果端口上存在com数据)。添加第二行重定向到监视器屏幕,以便您也可以观看活动(即TYPE COM1:> CON [CON表示控制台或监视器屏幕,但您可以省略它,因为控制台是默认的)]
TYPE命令不需要Control-Z。它将继续转储文本,直到操作符执行Control-C,然后执行Y来打破循环。除非你完全使用批处理文件,否则你真的不需要停止循环。 Data.txt文件将可供其他程序实时使用,如果您尝试使用其他程序(如NOTEPAD.EXE)访问它时不会出现“共享冲突”,而此批处理文件仍在循环播放。
此外,如果您在批处理文件中创建了第3行,其中显示TYPE COM1:> Data1.txt [通知只有一个重定向],您将拥有一行即时文本,这些文本将在下一次迭代时消失。但是,如果您只需要一行数据,有时这会很有帮助。有一些创造性的方法可以使用DOS FIND命令将一行数据提取到另一个文本文件。
答案 1 :(得分:0)
读取时,COPY
命令将继续,直到检测到文件结束。由于源是一个设备(具有潜在的无限流),它只知道在检测到文件结束标记时停止。这是Ctrl-Z(0x1A)字符。
使用TYPE
命令读取的重复问题中的建议可能会导致同样的问题。
没有标准机制来读取单行。如果您可以将应用程序移植到PowerShell,那么您应该能够读取具有预期结果的单行。