2013-10-24 27 views
5

我試圖使用批處理文件從COM端口自動檢索數據。使用批處理文件從COM端口檢索數據

我可以配置com端口併發送其他命令來詢問設備的信息。

問題是我無法捕獲設備發送的數據。我試着RealTerm和設備是否正常工作,併發送信息返回給PC機,但我真的需要批處理文件來自動執行,這裏是代碼:

echo off 

MODE COMxx ... 

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

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

有什麼建議?

+0

使用'類型COMxx' –

+2

可能的重複[如何使用批處理文件從COM端口讀取數據?](http://stackoverflow.com/questions/3923894/how-to-read-data-from-com-端口使用分批文件) – peet

回答

0

讀取時,COPY命令將繼續,直到它檢測到文件結束爲止。由於源是一個設備(具有潛在的無限流),只有當它檢測到文件標記結束時纔會停止。這是Ctrl-Z(0x1A)字符。

使用TYPE命令讀取的重複問題中的建議很可能導致同樣的問題。

沒有標準的機制來讀取單行。如果您可以將您的應用程序移植到PowerShell,那麼您應該可以讀取符合您預期結果的單行。

1

在使用DOS GOTO命令的DOS LABEL遞歸循環中使用TYPE命令。使用'append output'來捕獲類似COM1的文本:>> Data.txt double>表示不斷連接(或追加)到Data.txt。單個>或'重定向輸出'將在每個循環中替換Data.txt中的文本(如果com數據存在於端口上)。添加第二行,重定向到監視器屏幕,以便您也可以觀看活動(例如,類型COM1:> CON [CON表示控制檯或監視器屏幕,但您可以省略它,因爲控制檯是默認設置]

Control-Z是TYPE命令不需要。它將不斷地轉儲文本,直到操作員執行Control-C,然後是Y來打破循環。除非完成了批處理文件,否則你不需要停止循環。 Data.txt文件現在可用於其他程序,如果嘗試在NOTEPAD.EXE等其他程序中訪問該文件,並且該批處理文件仍處於循環狀態,則不會顯示「共享衝突」。

此外,如果您在批量文件中創建類型爲COM1的第三行:> Data1.txt [只注意一個重定向],您將獲得一行即時文本,並在下一次迭代時消失。但是,如果您只需要一行數據,那麼有時候這會很有幫助。有創造性的方法使用DOS FIND命令將一行數據提取到另一個文本文件。