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。

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

我正在使用 Tera Term 4.87 版。

关于远程启动 Tera Term 时为什么“连接”命令似乎挂起/冻结的任何想法?我是否缺少命令行参数?有没有更好的方法来远程启动 Tera Term 并使用宏?

4

1 回答 1

0

使用 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 文件时读取/写入/记录数据。

于 2015-08-11T15:32:18.667 回答