像 Arduino IDE 一样发现 OTA "ports"
Discover OTA "ports" like Arduino IDE
我这样做是为了列出 windows 和 unix 中可用的 com 端口。
Windows:
def listWindowsPorts():
serial_ports = []
has_ports = False
path = 'HARDWARE\DEVICEMAP\SERIALCOMM'
try:
reg = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, path,)
has_ports = True
except WindowsError:
pass
if has_ports:
for i in range(128):
try:
name, value, type = winreg.EnumValue(reg, i)
except WindowsError:
pass
else:
serial_ports.append(value)
return serial_ports
UNIX (Linux-OSX):
def listUnixPorts(system):
serial_ports = []
dev_path = '/dev/'
if('osx' in system):
dev_names = ['tty.*', 'cu.*']
else:
dev_names = ['ttyACM*', 'ttyUSB*']
for dev_name in dev_names:
pattern = dev_path + dev_name
serial_ports += glob.glob(pattern)
return serial_ports
arduino的IDE,除了显示COM端口外,它还可以在配置后自动显示OTA "ports"。我想知道 python 中是否有办法做到这一点,所以我可以同时显示串行端口和 OTA 端口。
有人可以举个例子或提供包含此信息的网站吗?
我查看了 pyserial 库的文档,但直到现在我还没有找到 "autodiscover" 功能
这个问题的答案是使用 mDNS 浏览器,在我的情况下,因为我使用 python,我用 zeroconf
解决了
我这样做是为了列出 windows 和 unix 中可用的 com 端口。
Windows:
def listWindowsPorts():
serial_ports = []
has_ports = False
path = 'HARDWARE\DEVICEMAP\SERIALCOMM'
try:
reg = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, path,)
has_ports = True
except WindowsError:
pass
if has_ports:
for i in range(128):
try:
name, value, type = winreg.EnumValue(reg, i)
except WindowsError:
pass
else:
serial_ports.append(value)
return serial_ports
UNIX (Linux-OSX):
def listUnixPorts(system):
serial_ports = []
dev_path = '/dev/'
if('osx' in system):
dev_names = ['tty.*', 'cu.*']
else:
dev_names = ['ttyACM*', 'ttyUSB*']
for dev_name in dev_names:
pattern = dev_path + dev_name
serial_ports += glob.glob(pattern)
return serial_ports
arduino的IDE,除了显示COM端口外,它还可以在配置后自动显示OTA "ports"。我想知道 python 中是否有办法做到这一点,所以我可以同时显示串行端口和 OTA 端口。
有人可以举个例子或提供包含此信息的网站吗?
我查看了 pyserial 库的文档,但直到现在我还没有找到 "autodiscover" 功能
这个问题的答案是使用 mDNS 浏览器,在我的情况下,因为我使用 python,我用 zeroconf
解决了