Arduino Uno插入PC时自动启动cmd.exe并执行dir /s的技术问询
Arduino Uno插入电脑自动启动CMD并运行dir /s的实现方法
首先明确:你在Arduino代码里调用system("cmd")没用,因为Arduino的代码是运行在单片机本身的,不是电脑系统上。AVR架构的Arduino没有类似Windows的操作系统环境,system()是PC端C语言的系统调用函数,在单片机里根本不支持,自然不会有任何效果。
要实现插入Arduino时自动触发电脑端的CMD命令,得从电脑端做文章,以下是两种可行方案:
方案一:用Python脚本监听串口连接
写一个Python脚本,持续检测电脑的串口列表,当Arduino对应的COM口出现时,自动启动CMD并执行dir /s命令。
示例代码:
import serial.tools.list_ports import subprocess import time # 记录初始串口列表 initial_ports = [port.device for port in serial.tools.list_ports.comports()] while True: current_ports = [port.device for port in serial.tools.list_ports.comports()] # 检查是否有新串口加入 new_ports = list(set(current_ports) - set(initial_ports)) if new_ports: # 假设Arduino的串口是新加入的那个 print(f"检测到新设备:{new_ports[0]}") # 启动CMD并运行dir /s,pause让窗口保持不关闭 subprocess.Popen(["cmd.exe", "/c", "dir /s && pause"]) # 更新初始列表,避免重复触发 initial_ports = current_ports time.sleep(1)
使用说明:
- 先安装依赖库:
pip install pyserial - 将脚本设置为开机自启,电脑启动后会自动监听,插入Arduino时触发命令。
方案二:Windows任务计划程序(无需编程)
利用Windows自带的任务计划,监听设备连接事件触发CMD命令:
- 打开「任务计划程序」,点击「创建任务」
- 「常规」标签:给任务命名,勾选「不管用户是否登录都要运行」
- 「触发器」标签:点击「新建」,选择「事件」,设置:
- 日志:选择「系统」
- 来源:选择「PlugPlayManager」
- 事件ID:选择「2003」(设备连接事件)
- 点击「筛选器」→「新建筛选器」,选择「事件数据」,输入Arduino Uno的硬件ID(可在设备管理器中查看),避免其他设备误触发
- 「操作」标签:点击「新建」,选择「启动程序」,程序或脚本填
cmd.exe,添加参数/c dir /s && pause - 保存任务后,插入Arduino时就会自动触发CMD执行命令。
内容的提问来源于stack exchange,提问作者Coding with Ayush
相关产品推荐
相关产品推荐

