我考虑过写下我遵循的所有步骤,以防万一像我这样的人(有点愚蠢)也在同样的情况下苦苦挣扎:
1 - 将 .ttl 与 Teraterm 宏应用程序相关联:
1a - 我转到我的宏,单击 R 鼠标,“打开方式...”,“选择另一个应用程序”,“更多应用程序”,“在此 PC 中查找另一个应用程序”并选中“始终使用此应用程序打开 .ttl 文件”。
1b - 我首先找不到该应用程序,然后我在 c:>Program Files (x86)> teraterm 中找到它并选择了可执行文件“ttpmacro.exe”。
2 - 修改宏以启动通信,因为必须关闭 Teraterm 才能工作,所以当宏启动 Teraterm 时,您需要指定端口:
2a - 我在我的 Teraterm 宏中添加:connect '/C=3' (在我的情况下,我将 Teraterm 与 COM 端口 3 连接)
2b - 整个宏:它看起来像这样:
connect '/C=3'
sendln '?'
sendln '|3'
sendln 'c'
sendln '3'
这通过 com 端口 3 连接,然后进入一个菜单并发送 c,然后发送 3。所以现在如果我双击宏,它会单独执行宏。
3 - 运行宏的脚本:另外我决定创建一个批处理文件来从 CAPL 运行它,我这样做了:
3a - 如果 Teraterm 已经打开,首先关闭它,因为 teraterm exe 和宏 exe 不能同时连接:
任务列表 /fi "IMAGENAME eq ttermpro.exe" | find /i "ttermpro.exe" > nul if not errorlevel 1 (taskkill /im ttermpro.exe) else (echo ttermpro already closed)
ttermpro.exe 是正常启动 Teraterm 时运行的应用程序名称。
3b - 启动宏:
"C:\workset\Teraterm_macros\mytmacro.ttl"
所以它看起来像这样:
@echo off
echo.
echo .................................
echo .................................
echo ..... My teraterm macro .....
echo .................................
echo .................................
echo.
echo If Teraterm is launched it will be closed now.
TIMEOUT /T 5 /NOBREAK
REM this was to give the user 5seconds to cancel.
tasklist /fi "IMAGENAME eq ttermpro.exe" | find /i "ttermpro.exe" > nul
if not errorlevel 1 (taskkill /im ttermpro.exe) else (echo ttermpro already closed)
REM this is to close Teraterm if it´s opened already.
echo The calibration macro will be launched now.
"C:\Teraterm_macros\mytmacro.ttl"
REM This is to start my macro. As I alread linked .ttl with the macro app it´ll open.
IF ERRORLEVEL 1 GOTO ERROR
GOTO END
:ERROR
echo my teraterm macro failed.
GOTO END
:END
::exit
4 - 我从 CAPL 调用它,因为我想要包含这个宏是一个测试:我添加了这一行:
TestWaitForSyscall("C:\Teraterm_macros","\"scriptwithmytmacro.bat",0,20000);
这在 CAPL 中打开批处理文件。它可以直接打开宏,但我想要一个 bat 脚本,这样我就可以添加诸如关闭 teraterm 之类的东西,如果它已经打开的话。