0

Tera Term マクロを作成して、シリアル ポートに接続し、入ってくるデータをログに記録し、いくつかのテスト コマンドを送信しました。マクロをローカル PC から手動で実行すると、すべて問題なく動作します。ttpmacro.exe でマクロを実行します。

PsExec.exe を使用して、リモート システムでいくつかのバッチ スクリプトを実行しています。これらのバッチ スクリプトの一部として Tera Term マクロを実行しようとすると、接続しようとするとハングまたはフリーズします。マクロはただ停止し、何もしません。コマンドの後にマクロをファイルに書き込むようにしたので、そこがハングしていることは確かです。Tera Term マクロから「接続」コマンドを削除し (他のコマンドはマクロに残ります)、代わりに「ttermpro.exe /C=1 /BAUD=115200 /M=C:\path-to-macro\」で接続するとします。 "、まだハング/フリーズします。マクロが実行されず、シリアル ポートが開かれていません (リモート スクリプトの開始後にリモート デスクトップを使用すると、そのシリアル ポートへの PuTTY セッションを開くことができます)。

紛らわしく聞こえる場合は申し訳ありません。簡単な例を示します。私のリモート システムでは、test_ttermpro.bat、test_ttermpro.ttl、test_ttpmacro.bat、test_ttpmacro.ttl の 4 つのファイルを作成しました。

test_ttermpro.bat の内容:

"C:\Program Files (x86)\teraterm\ttermpro.exe" /C=1 /BAUD=115200 /M=C:\Users\Public\test_ttermpro.ttl

test_ttermpro.ttl の内容:

SessionLog='C:\Users\Public\'
strconcat SessionLog 'macrooutput_pro.txt'
fileopen sessionlogfile SessionLog 0 0
if sessionlogfile=-1 exit

;write to file to verify macro gets executed
filewriteln sessionlogfile '1'

disconnect
closett
exit

test_ttpmacro.bat の内容:

"C:\Program Files (x86)\teraterm\ttpmacro.exe" C:\Users\Public\test_ttpmacro.ttl

test_ttpmacro.ttl の内容:

SessionLog='C:\Users\Public\'
strconcat SessionLog 'macrooutput.txt'
fileopen sessionlogfile SessionLog 0 0
if sessionlogfile=-1 exit

filewriteln sessionlogfile '1'

ConnectString='/C=1 /BAUD=115200'

filewriteln sessionlogfile ConnectString

; Connect to serial port 1 at 115200 baud
connect ConnectString
disconnect
closett
exit

リモート システムにリモートでログインしているときに、リモート システムからバッチ スクリプトを開始すると、バッチ スクリプトは問題なく実行されます。COM ポートを開き、それぞれが独自のセッション ログ ファイルに書き込みます。

しかし、リモート システム上のこれら 4 つのファイルを使用して、ローカル システムから次のコマンドを実行しようとしました。

psexec.exe /accepteula \\%REMOTE_SYSTEM% C:\Users\Public\test_ttermpro.bat

psexec.exe /accepteula \\%REMOTE_SYSTEM% C:\Users\Public\test_ttpmacro.bat

各コマンド (異なるスクリプトをテストするために個別に実行) を実行した後、リモート システムで、Windows タスク マネージャーのプロセスのリストに ttermpro.exe が表示されましたが、COM ポートを開くことができました。test_ttermpro.bat はセッション ログを開始しませんでした (マクロは開始されませんでした)。test_ttpmacro.bat にはセッションログがありましたが、接続コマンドでフリーズしました。Windowsタスクマネージャーでプロセスを終了するまで、どちらも終了しませんでした。

Tera Term バージョン 4.87 を使用しています。

Tera Term をリモートで起動すると、「接続」コマンドがハング/フリーズするように見える理由について何か考えはありますか? コマンド ライン パラメータがありませんか? Tera Term をリモートで起動してマクロを使用するより良い方法はありますか?

4

1 に答える 1

0

ttermpro.exe を使用した使用可能なソリューション:

"/I" パラメータを使用するように test_ttermpro.bat を変更しました。その .bat ファイルには次のものが含まれているように見えます。

"C:\Program Files (x86)\teraterm\ttermpro.exe" /I /C=1 /BAUD=115200 /M=C:\Users\Public\test_ttermpro.ttl

そのパラメータを追加すると、Tera Term がシリアル ポートに接続し、その .bat ファイルが Psexec.exe でリモートで呼び出されたときにデータの読み取り/書き込み/ログを記録できるようになります。

于 2015-08-11T15:32:18.667 に答える