如何使用PowerShell自动识别Arduino连接的串口号
PowerShell自动识别Arduino串口方案
查询Arduino当前串口号的方法
Windows系统会将所有已识别的串口设备信息存储在WMI类中,Arduino(含使用CH340、CP2102等USB转串口芯片的兼容板)的设备名会携带特定标识,直接运行以下PowerShell命令即可过滤出对应设备的串口号,输出的DeviceID字段即为COM端口号:
Get-CimInstance -ClassName Win32_SerialPort | Where-Object { $_.Name -match 'Arduino|CH340|CP210x|USB Serial Device|USB-SERIAL' } | Select-Object DeviceID, Name
自动识别串口的修改版脚本
将原脚本中固定写死的COM8替换为动态查询得到的端口即可,脚本同时增加了设备不存在的异常提示、串口资源安全释放逻辑:
# 查找已连接的Arduino设备端口 $arduinoCom = Get-CimInstance Win32_SerialPort | Where-Object { $_.Name -match 'Arduino|CH340|CP210x|USB Serial Device|USB-SERIAL' } | Select-Object -First 1 -ExpandProperty DeviceID if (-not $arduinoCom) { Write-Error "未检测到Arduino设备,请检查USB连接与驱动安装状态" exit 1 } Write-Host "识别到Arduino端口:$arduinoCom,正在发送数据" $serial = New-Object System.IO.Ports.SerialPort $arduinoCom,9600,None,8,one try { $serial.Open() $serial.WriteLine("1") Start-Sleep -Milliseconds 50 # 短暂等待确保数据传输完成 } finally { # 无论发送是否成功,都确保关闭串口释放资源 if ($serial.IsOpen) { $serial.Close() } }
适配说明
- 如果使用小众兼容板出现识别不到的情况,打开设备管理器找到对应串口的设备名称,把名称里的特征关键字加到脚本的
-match匹配规则中即可。 - 若同时连接多台Arduino设备,上述脚本默认选择枚举到的第一台设备,需要指定特定设备时可在匹配规则中增加专属的设备名特征。
内容的提问来源于stack exchange,提问作者Adriano
相关产品推荐
相关产品推荐

