核心概念:at 命令和串口助手
我们需要明确这两个角色在自动化任务中的分工:

-
at命令 (任务计划程序)- 它是什么:
at是 Windows 系统自带的一个命令行工具,用于安排在特定日期和时间运行命令和程序,它本质上是 “任务计划程序” 的命令行版本。 - 它的作用:
at命令不直接发送串口数据,它的核心作用是 “指挥官” 或 “闹钟”,它负责在指定的时间点 启动 一个程序或脚本,而这个程序/脚本才是真正负责发送串口数据的“执行者”。
- 它是什么:
-
串口助手
- 它是什么:串口助手(如 SSCOM, PuTTY, Tera Term, 或用 Python/Node.js/C# 等语言编写的自定义脚本)是一个运行在电脑上的程序,用于与串口设备进行通信(发送数据、接收数据)。
- 它的作用:串口助手是 “执行者” 或 “士兵”,它接收
at命令的启动指令,然后按照预设的逻辑,通过指定的串口向目标设备发送特定的命令(AT+RESET)。
工作流程总结:
at 命令(指挥官) --> 在设定时间 --> 启动 --> 串口助手脚本(士兵) --> 发送 --> 串口数据 --> 到 --> 目标设备
准备工作
在开始之前,请确保你已经:

- 硬件连接:你的电脑已经通过 USB 转串口线连接好了目标设备(如单片机、模块等),并且电脑已经正确识别了该串口(在“设备管理器”中可以看到,如
COM3)。 - 选择串口助手:
- 图形界面方案:像 SSCOM 这样的串口调试助手,优点是直观,但自动化能力较弱,通常需要配合脚本启动器。
- 脚本方案(推荐):使用 Python、C#、VBScript 等脚本语言来编写串口发送程序,这是最强大、最灵活的自动化方案,我们主要以 Python 为例进行讲解。
实现步骤
我们将分三步走:
- 编写“执行者”脚本:一个能发送串口数据的程序。
- 使用
at命令“调度”:让这个脚本在指定时间运行。 - 进阶:编写更复杂的任务。
创建串口发送脚本(以 Python 为例)
Python 有一个非常强大的库 pyserial,可以轻松实现串口通信。
-
安装 pyserial: 打开命令提示符(CMD)或 PowerShell,运行:
pip install pyserial
-
编写 Python 脚本: 创建一个名为
send_at_command.py的文件,将以下代码复制进去。请务必根据你的实际情况修改COM_PORT和BAUD_RATE。# send_at_command.py import serial import time # --- 请根据你的实际情况修改以下参数 --- COM_PORT = 'COM3' # 你的串口号,如 COM3, COM4 BAUD_RATE = 9600 # 波特率,必须与目标设备一致 COMMAND_TO_SEND = 'ATI\r\n' # 你想发送的命令,'AT+RESET\r\n' 或 'ATI\r\n' # -------------------------------------- def send_command(): try: # 打开串口 ser = serial.Serial(COM_PORT, BAUD_RATE, timeout=1) print(f"成功打开串口 {COM_PORT}") # 等待一小段时间,确保串口稳定 time.sleep(2) # 发送命令 print(f"正在发送命令: {COMMAND_TO_SEND.strip()}") ser.write(COMMAND_TO_SEND.encode('utf-8')) # 等待并读取设备的响应(可选) print("等待设备响应...") time.sleep(3) # 给设备一些处理时间 if ser.in_waiting > 0: response = ser.read(ser.in_waiting).decode('utf-8', errors='ignore') print("设备响应:") print(response) else: print("未收到设备响应。") # 关闭串口 ser.close() print("串口已关闭。") except serial.SerialException as e: print(f"错误: 无法打开串口 {COM_PORT},请检查串口是否存在或被其他程序占用。") print(f"详细信息: {e}") except Exception as e: print(f"发生未知错误: {e}") if __name__ == '__main__': send_command() -
测试脚本: 在命令行中运行这个脚本,确保它能正常工作:
python send_at_command.py
如果一切正常,你的串口助手应该能看到发送的命令,并且目标设备会有相应的反馈。
使用 at 命令调度脚本
我们让 at 命令来启动这个 Python 脚本。
-
打开管理员权限的命令提示符:
at命令需要管理员权限才能执行,请在开始菜单中搜索cmd,右键点击“命令提示符”,选择“以管理员身份运行”。 -
基本语法:
at \\\\computername time command\\\\computername:如果是在本地电脑执行,可以省略或写localhost,如果是在局域网内的另一台电脑上执行,需要写那台电脑的名称。time:指定运行时间,格式为HH:MM(24小时制)。command:要执行的命令。
-
示例:在晚上 11 点执行脚本 假设现在是下午 3 点,你希望脚本在晚上 11 点(23:00)运行。
at 23:00 "python C:\path\to\your\script\send_at_command.py"
注意:
- 路径最好使用双引号 括起来,特别是路径中包含空格时。
- 确保 Python 已经被添加到了系统的环境变量
PATH中,这样系统才能找到python命令,如果没有,你需要使用完整的 Python 解释器路径,at 23:00 "C:\Python39\python.exe C:\path\to\your\script\send_at_command.py"
-
查看已安排的任务:
at
你会看到一个类似下面的列表,显示所有已安排的任务及其ID号。
ID Date Status --- 1 2025/10/27 23:00:00 OK -
删除已安排的任务: 如果你不需要某个任务了,可以使用它的 ID 号来删除。
at 1 /delete
进阶 - 使用 at 命令的更多选项
at 命令非常灵活,你可以通过选项来控制任务的执行。
-
每天重复执行: 使用
/every选项。at 23:00 /every:M,T,W,Th,F,S,Su "python C:\path\to\your\script\send_at_command.py"
这里的
M,T,W,Th,F,S,Su分别代表周一到周日,你也可以只选几天,/every:M,F表示只在周一和周五执行。 -
交互式模式: 如果你需要输入密码或者进行交互,可以使用
/interactive选项。对于我们的串口脚本,通常不需要这个选项。at 23:00 /interactive "my_program.exe"
替代方案:schtasks 命令(更现代)
虽然 at 命令经典,但微软已经推荐使用更强大、更灵活的 schtasks 命令来替代它。schtasks 是“任务计划程序”的命令行接口,功能更全面,支持更多触发条件(如系统启动、用户登录等)。
使用 schtasks 实现相同功能
-
创建一个基本任务:
schtasks /create /tn "MySerialTask" /tr "python C:\path\to\your\script\send_at_command.py" /sc once /st 23:00
/tn "MySerialTask":任务名称。/tr "...":要运行的程序/命令(任务运行)。/sc once:计划类型,这里是“一次”。/st 23:00:开始时间。
-
创建每天重复的任务:
schtasks /create /tn "DailySerialTask" /tr "python C:\path\to\your\script\send_at_command.py" /sc daily /st 02:00
/sc daily:计划类型为“每天”。/st 02:00:每天凌晨2点执行。
-
列出所有任务:
schtasks /query
-
删除任务:
schtasks /delete /tn "MySerialTask" /f
/f:表示强制删除,无需确认。
总结对比
| 特性 | at 命令 |
schtasks 命令 |
|---|---|---|
| 定位 | 经典、简单的任务计划器 | 现代、功能强大的任务计划器 |
| 权限 | 需要管理员权限 | 同样需要管理员权限 |
| 功能 | 功能相对基础 | 功能非常强大,支持多种触发器、条件、操作 |
| 推荐度 | 适用于简单、临时的任务 | 强烈推荐,是 Windows 自动化的标准工具 |
| 语法 | at time "command" |
schtasks /create /tn name /tr "command" ... |
对于串口自动化任务,特别是需要长期、稳定、复杂调度的场景,强烈建议你直接学习和使用 schtasks,但理解 at 命令的原理对于掌握自动化任务调度非常有帮助。
