Python PySerial FileNotFoundError

Python PySerial FileNotFoundError,python,Python,我正在尝试使用PySerial来接受来自RFID阅读器的输入。根据答案,我尝试使用WinObj并发现了一些奇怪的东西:在GLOBAL???文件夹中没有指向“更特定于驱动程序”的COM3端口。但是,当我运行命令python-m serial.tools.list\u ports,它确实会抛出COM3。当我尝试一个简单的程序时,如: import serial ser = serial.Serial() ser.port = 2 print(ser) ser.open() 我得到以下输出: Ser

我正在尝试使用PySerial来接受来自RFID阅读器的输入。根据答案,我尝试使用WinObj并发现了一些奇怪的东西:在
GLOBAL???
文件夹中没有指向“更特定于驱动程序”的
COM3
端口。但是,当我运行命令
python-m serial.tools.list\u ports
,它确实会抛出
COM3
。当我尝试一个简单的程序时,如:

import serial
ser = serial.Serial()
ser.port = 2
print(ser)
ser.open()
我得到以下输出:

Serial<id=0x45e8198, open=False>(port='COM3', baudrate=9600, bytesize=8, parity='N', stopbits=1, timeout=None, xonxoff=False, rtscts=False, dsrdtr=False)
serial.serialutil.SerialException: could not open port 'COM3': FileNotFoundError(2, 'The system cannot find the file specified.', None, 2)

我也非常感谢您的想法。

我要检查的第一件事是您所连接的com端口的内容以及当前正在使用的内容:

import serial.tools.list_ports
import sys

list = serial.tools.list_ports.comports()
connected = []
for element in list:
    connected.append(element.device)
print("Connected COM ports: " + str(connected))
# compliments of https://stackoverflow.com/questions/12090503/listing-available-com-ports-with-python#14224477
""" 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'):
# !attention assumes pyserial 3.x
    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
print("Availible COM Ports: " + str(result))
然后,确保使用所需参数调用串行端口构造函数:

ser = serial.Serial(
    port="com2", # assumes pyserial 3.x, for 2.x use integer values
    baudrate=19200,
    bytesize=8,
    parity="E",  # options are: {N,E,O,S,M}
    stopbits=1,
    timeout=0.05)

当您在没有任何参数的情况下调用“serial.serial()”然后添加端口ID时,我不完全确定它将执行什么操作,我总是显式引用我要在那里使用的端口。

您的问题在于,串行对象正在查找字符串“COMXX”,否则它将无法工作。我不知道它是否需要资本化

确保您这样配置它

serial.Serial(port = "COM2")
serial.Serial(port = "COM2")