5

バッチ ファイルを使用して、COM ポートからデータを自動的に取得しようとしています。

com ポートを構成し、他のデバイスにコマンドを送信して、デバイスに情報を求めることができます。

問題は、デバイスが送信するデータをキャプチャできないことです。RealTerm を試してみましたが、デバイスは動作しており、情報を PC に送り返していますが、自動的に実行するにはバッチ ファイルが本当に必要です。コードは次のとおりです。

echo off

MODE COMxx ...

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

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

助言がありますか?

4

2 に答える 2

1

DOS LABEL に対して DOS GOTO コマンドを使用して、再帰ループで TYPE コマンドを使用します。「出力の追加」を使用して、TYPE COM1:>>Data.txt のようなテキストをキャプチャします。二重の > は、Data.txt に継続的に連結 (または追加) することを意味します。単一の > または「リダイレクト出力」は、ループごとに Data.txt のテキストを置き換えます (com データがポートに存在する場合)。モニター画面にリダイレクトする 2 行目を追加して、アクティビティも監視できるようにします (つまり、TYPE COM1:>CON [CON はコンソールまたはモニター画面を意味しますが、いずれにしてもコンソールがデフォルトであるため省略できます])。

Control-Z は TYPE コマンドでは必要ありません。オペレーターが Control-C を実行してから Y を実行してループを中断するまで、テキストを継続的にダンプします。バッチ ファイルの処理がすべて完了していない限り、ループを停止する必要はありません。Data.txt ファイルは他のプログラムがライブで使用でき、このバッチ ファイルがまだループしている間に NOTEPAD.EXE などの別のプログラムでアクセスしようとしても、「共有違反」は発生しません。

また、バッチ ファイルに TYPE COM1:>Data1.txt [リダイレクトが 1 つだけあることに注意してください] という 3 行目を作成すると、次の反復で消えるインスタント テキストが 1 行になります。ただし、必要なデータが 1 行だけの場合は、これが役立つ場合があります。DOS の FIND コマンドを使用して、1 行のデータを別のテキスト ファイルに抽出する独創的な方法があります。

于 2014-09-13T17:49:01.677 に答える
0

読み取り中は、COPYファイルの終わりを検出するまでコマンドが続行されます。ソースはデバイス (潜在的に無限のストリームを持つ) であるため、ファイルの終わりマーカーを検出したときにのみ停止することを認識します。これは Ctrl-Z (0x1A) 文字です。

TYPEコマンドを使用して読み取るという重複した質問の提案は、同じ問題を引き起こす可能性があります。

1 行を読み取るための標準的なメカニズムはありません。アプリケーションを PowerShell に移植できる場合は、1 行で期待どおりの結果を読み取ることができるはずです。

于 2014-02-11T20:13:34.307 に答える