如何通过PuTTY按固定间隔重复发送串口命令?
问题解答
PuTTY内置功能说明
PuTTY本身没有内置定时发送命令的功能,它仅提供基础的串口连接与日志记录能力,无法自动定时触发指令发送。
现成解决方案
- AutoHotKey(AHK)脚本:这是最便捷的现成方案,只需几行代码就能实现定时向PuTTY窗口发送指令,同时处理窗口激活逻辑:
先启动PuTTY建立串口连接,再运行该AHK脚本即可后台自动执行定时操作。; 每隔5分钟(300000毫秒)触发一次读数命令 SetTimer, SendReadCmd, 300000 return SendReadCmd: ; 激活目标PuTTY窗口(替换为你的PuTTY窗口标题,比如"Serial - PuTTY") WinActivate, Serial - PuTTY ; 发送R命令+回车(多数串口设备需要回车确认指令) Send, R{Enter} return
其他实现建议
- 批处理+VBScript组合:如果不想用AHK,可通过批处理循环调用VBScript模拟按键:
- 编写
send_r.vbs脚本:Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.AppActivate "Serial - PuTTY" ' 替换为你的PuTTY窗口标题 WshShell.SendKeys "R{ENTER}" - 编写批处理文件:
@echo off :: 启动PuTTY并建立串口连接(替换为你的串口参数) start "" "C:\Program Files\PuTTY\putty.exe" -serial COM3 -sercfg 9600,8,n,1,N timeout /t 10 /nobreak >nul ' 等待PuTTY完成连接 :loop cscript //nologo send_r.vbs timeout /t 300 /nobreak >nul ' 等待5分钟(300秒) goto loop
- 编写
- 直接用Python替代PuTTY:既然后续要用Python整理日志,不如一步到位用Python直接操控串口,定时发送指令并记录数据,完全无需依赖PuTTY。借助
pyserial库实现的示例代码:
这种方式更灵活,能直接格式化数据,省去事后整理PuTTY日志的步骤。import serial import time from datetime import datetime # 配置串口参数(根据你的天平实际设置调整) ser = serial.Serial( port='COM3', baudrate=9600, parity=serial.PARITY_NONE, stopbits=serial.STOPBITS_ONE, bytesize=serial.EIGHTBITS, timeout=1 ) try: while True: # 发送R指令 ser.write(b'R\n') # 读取天平返回的读数 reading = ser.readline().decode('utf-8').strip() # 带时间戳写入日志文件 with open('balance_records.txt', 'a', encoding='utf-8') as f: f.write(f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S')},{reading}\n") # 间隔5分钟(300秒) time.sleep(300) except KeyboardInterrupt: ser.close() print("数据采集已终止")
内容的提问来源于stack exchange,提问作者bkhcatco
相关产品推荐
相关产品推荐

