像 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

解决了