通过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>]
”
任何帮助将不胜感激!如果您需要更多详细信息,请告诉我。 谢谢,
答案 0 :(得分:2)
经过进一步的研究,我意识到将RS232 USB插入PC时,我们需要花一些时间来打开流。听起来好像是在为其创建临时文件时将其打开。 尽管可以识别出一个COM端口几乎立即可用,但是在我尝试创建Serial实例时还没有准备好,这就是为什么我遇到FileNotFound错误的原因。
一个半秒的简单睡眠功能解决了这个问题!