Tera Term hangs/freezes 远程启动时连接

Tera Term hangs/freezes on connect when started remotely

我写了一个 Tera Term 宏来连接到串行端口,记录传入的数据,并发送一些测试命令。如果我从本地 PC 手动 运行 宏,一切正常。我 运行 宏 ttpmacro.exe.

我在远程系统上使用 PsExec.exe 到 运行 一些批处理脚本。当我尝试 运行 我的 Tera Term 宏作为那些批处理脚本的一部分时,它在尝试连接时 hangs/freezes。宏只是停止并且什么都不做。我确定那是它挂起的地方,因为我在执行命令后将宏写入文件。如果我从 Tera Term 宏中删除 "connect" 命令(我的其他命令保留在宏中)并改为连接 "ttermpro.exe /C=1 /BAUD=115200 /M=C:\path-to-macro\",它仍然是 hangs/freezes。宏没有运行并且串口没有打开(如果我在启动远程脚本后远程桌面,我可以打开一个到那个串口的PuTTY会话)。

如果这听起来令人困惑,我深表歉意。我将尝试提供一个简化的示例: 在我的远程系统上,我创建了四个文件,test_ttermpro.bat、test_ttermpro.ttl、test_ttpmacro.bat 和 test_ttpmacro.ttl.

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 端口并各自写入自己的会话日志文件。

但是,对于远程系统上的这四个文件,从我的本地系统,我试图 运行:

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,但我可以打开串口。 test_ttermpro.bat 从未启动其会话日志(宏从未启动)。 test_ttpmacro.bat 确实有一个会话日志,但只是在连接命令时冻结。在我通过 Windows 任务管理器结束进程之前都没有退出。

我正在使用 Tera Term 4.87 版。

关于远程启动 Tera Term 时为什么 "connect" 命令似乎 hang/freeze 的任何想法?我是否缺少命令行参数?有没有更好的方法远程启动 Tera Term 并使用宏?

使用ttermpro.exe的可用解决方案:

我更改了 test_ttermpro.bat 以使用“/I”参数。该 .bat 文件现在看起来包含:

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

添加该参数允许 Tera Term 连接到串行端口,并在使用 Psexec.exe.

远程调用该 .bat 文件时 read/write/log 数据