无法使用 Python 检测任何串行端口



我正在尝试找到设备连接到的正确 com 端口,然后才能运行 Python 脚本的其余部分。

我试过使用它:

    import serial.tools.list_ports
    ports = list(serial.tools.list_ports.comports())
    for p in ports:
        print p

而这个:

    import wmi
    c = wmi.WMI()
    wql = "Select * From Win32_SerialPort"
    for item in c.query(wql):
        print item

而这个:

    def serial_ports():
    if sys.platform.startswith('win'):
        ports = ['COM%s' % (i + 1) for i in range(256)]
        print ports 
    elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
        # this excludes your current terminal "/dev/tty"
        ports = glob.glob('/dev/tty[A-Za-z]*')
    elif sys.platform.startswith('darwin'):
        ports = glob.glob('/dev/tty.*')
    else:
        raise EnvironmentError('Unsupported platform')
    result = []
    for port in ports:
        try:
            s = serial.Serial(port)
            s.close()
            result.append(port)
        except (OSError, serial.SerialException):
            pass
    return result

所有这些方法都是我从其他堆栈交换帖子中找到的方法;但是,使用这两个功能,当我尝试打印com端口列表时,我得到一个空白列表?任何帮助/见解将不胜感激,提前感谢!

像这样:

import serial,os,sys,glob

def serial_ports():
    if sys.platform.startswith('win'):
        ports = ['COM%s' % (i + 1) for i in range(256)]
        print ports 
    elif sys.platform.startswith('linux') or sys.platform.startswith('cygwin'):
        # this excludes your current terminal "/dev/tty"
        ports = glob.glob('/dev/tty[A-Za-z]*')
    elif sys.platform.startswith('darwin'):
        ports = glob.glob('/dev/tty.*')
    else:
        raise EnvironmentError('Unsupported platform')
    result = []
    print ports
    for port in ports:
        try:
            s = serial.Serial(port,9600)
            s.close()
            result.append(port)
        except (OSError, serial.SerialException):
            pass
    return result
print serial_ports()

永远无法在没有速度(时钟)定义的情况下打开任何serial端口。

在linux:run as root上,普通用户无法访问/dev(不要更改权限cos name_space动态创建。坏主意!

最新更新