Python:找不到文件(pySerial)

时间:2019-06-22 08:40:03

标签: python while-loop pyserial

通过pySerial打开串行/控制台端口有一个小问题。 我的程序旨在获取活动的com端口,打开控制台连接,然后发送数据。程序运行时,插入RS232 USB时,出现SerialException错误。 (更具体地说,“无法打开端口:FileNotFoundError”)

在运行程序的情况下,它将继续打印“未连接RS232”,但是当连接了RS232 USB时,程序将中断并遇到SerialException错误。

如果在运行程序之前先插入RS232 USB,然后再运行它,它将读取并执行正常操作而没有问题。

    ports = serial.tools.list_ports.comports(include_links=False)

    if not ports:
        print("No RS232 Connected")
    if ports:
        for port in ports:
            print('Found port ' + port.device)
            ser = serial.Serial(port.device)

            if ser.isOpen():
                ser.close()
        break
console = serial.Serial(port.device, baudrate=9600, parity="N", stopbits=1, bytesize=8, timeout=0.4)

我一般对Python和编程都不熟悉,但是我感觉到问题可能出在“端口”列表周围,由于while True循环,该端口已经被填充了两次。然后,当我们通过打开端口来创建控制台时,我们期望列表中有一个条目,但是有两个条目。 由于我们在同一个COM端口上不能有2个打开的控制台连接,因此会收到错误消息。

如果我打印“端口”列表,我会得到这个。

[<serial.tools.list_ports_common.ListPortInfo object at 0x000002B5D77F0D68>] [<serial.tools.list_ports_common.ListPortInfo object at 0x000002B5D77F0D68>]

任何帮助将不胜感激!如果您需要更多详细信息,请告诉我。 谢谢,

1 个答案:

答案 0 :(得分:2)

经过进一步的研究,我意识到将RS232 USB插入PC时,我们需要花一些时间来打开流。听起来好像是在为其创建临时文件时将其打开。 尽管可以识别出一个COM端口几乎立即可用,但是在我尝试创建Serial实例时还没有准备好,这就是为什么我遇到FileNotFound错误的原因。

一个半秒的简单睡眠功能解决了这个问题!