检测连接到FTDI芯片的特定串行端口

时间:2017-07-28 09:40:26

标签: python pyserial ftdi

我正在研究FTDI芯片,并希望通过串口将此芯片连接到操作系统Windows 10。我正在使用下面的代码,结果显示了我不想要的所有可见端口。我需要的是只检测芯片所连接的端口而忽略其余的端口。例如Com 4,所以我只想用Python编写的程序来检测Com4。 顺便说一下,我正在使用Pyserial。 我非常感谢并提前感谢你的帮助

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)
        s.close()
        result.append(port)
    except (OSError, serial.SerialException):
        pass
return result 

1 个答案:

答案 0 :(得分:0)

了解

  

serial.tools.list_ports

     

可执行此模块以获取端口列表(python -m serial.tools.list_ports)。
  它还包含以下功能。

serial.tools.list_ports.comports()
Returns:    an iterable that yields ListPortInfo objects.
     

该函数返回一个迭代,产生三个字符串的元组:
  端口名称,因为它可以传递给serial.Serial或serial.serial_for_url()
  人类可读形式的描述
          一种硬件ID。例如。可能包含VID:USB串行适配器的PID。