【发布时间】:2026-02-20 22:35:01
【问题描述】:
我正在尝试构建一个简短的代码来测试所有串行 COM 端口(我在 Windows 上)以进行回复。例如,我在 COM3 上连接了一个 Arduino,当它连接时,它会发送一条串行消息。
我希望当我运行 python 脚本时,它会自动检测使用哪个 COM 端口。
我有列出所有端口的功能,但我无法测试所有端口并检测 arduino 连接的位置。
Python:
import serial
import time
import _winreg as winreg
import itertools
import datetime
def enumerate_serial_ports():
""" Uses the Win32 registry to return an
iterator of serial (COM) ports
existing on this computer.
"""
path = 'HARDWARE\\DEVICEMAP\\SERIALCOMM'
try:
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, path)
except WindowsError:
raise IterationError
for i in itertools.count():
try:
val = winreg.EnumValue(key, i)
yield str(val[1])
except EnvironmentError:
break
connected = False
for porta in enumerate_serial_ports():
print "TRYING PORT: " + porta
start = datetime.datetime.now()
delta=0
ser = serial.Serial(porta,9600,timeout=0)
if ser.isOpen():
while ser.isOpen() and delta < 1:
delta = (datetime.datetime.now()-start).seconds
r = ser.read()
if r == None:
print "connected!"
Arduino 代码
void setup(){
// Open serial connection.
Serial.begin(9600);
pinMode(13, OUTPUT);
Serial.write(6);
}
void loop(){
}
谢谢!!
【问题讨论】:
标签: python serial-port arduino