美文网首页
pyserial查找可用串口失效的解决办法

pyserial查找可用串口失效的解决办法

作者: 维度攻城狮 | 来源:发表于2022-05-05 12:05 被阅读0次

    在网上查找了许久,多数是用serial.tools.list_ports的方法来查找可用串口的。但是,经过我多次尝试,没有得到想要的结果。后来,我最终在Stack Overflow找到解决办法,这个比较暴力,直接对每个COM口进行try操作,如果能连上,则存储COM号。

失效代码

import serial.tools.list_ports
port_list = list(serial.tools.list_ports.comports())
if len(port_list) == 0:
   print('找不到串口')
else:
    for i in range(0,len(port_list)):
        print(port_list[i])

可用代码(Linux平台也可用)

import sys
import glob
import serial

def serial_ports():
    """ Lists serial port names

        :raises EnvironmentError:
            On unsupported or unknown platforms
        :returns:
            A list of the serial ports available on the system
    """
    if sys.platform.startswith('win'):
        ports = ['COM%s' % (i + 1) for i in range(256)]
    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

if __name__ == '__main__':
    print(serial_ports())

参考
https://stackoverflow.com/questions/12090503/listing-available-com-ports-with-python

相关文章

网友评论

      本文标题:pyserial查找可用串口失效的解决办法

      本文链接:https://www.haomeiwen.com/subject/dkinyrtx.html