Python 2.7:serial.serialutil.SerialException:端口已经打开。如何关闭此端口?

问题描述 投票:1回答:2

我试图将整数发送到Arduino,因此我在Python 2.7版本中编写了以下代码:

import serial
import time

ser  = serial.Serial('COM8', 9600, timeout = 1)
# let it initialize
ser.open()
time.sleep(2)


ser.write(1)


while 1:
    bytess = ser.readline()
    print 'you sent : ' + bytess

在这里,我忘记使用ser.close()所以现在当我再次尝试运行上面的代码时,它显示错误:

File "D:/python/python to arduino.py", line 20, in <module>
    ser.open()
  File "C:\Python27\lib\site-packages\serial\serialwin32.py", line 41, in open
    raise SerialException("Port is already open.")
serial.serialutil.SerialException: Port is already open.

为了避免这个错误,我拔掉我的Arduino电缆并重新启动Python,但它没有帮助。在Matlab中针对同样的问题,如果我们关闭Matlab,问题就解决了,但是Python没有发生同样的事情。我现在想知道如何关闭这个开放端口。即使重启我的笔记本电脑,也会出现同样的错误。

谢谢。

python-2.7 serial-port pyserial
2个回答
2
投票

pySerial documentation about the Serial class

当给出端口时,在创建对象时立即打开端口。当端口是None并且需要连续调用open()时,它不会打开。

因此,当您执行ser = serial.Serial('COM8', 9600, timeout = 1)时,您已经在指定'COM8'时打开了端口,因此您无需再次打开它。


0
投票

我也发现了这个问题。我的串口是RS232,只需将接地/ RX / TX从我的设备连接到笔记本电脑。我只是忽略了打开步骤并直接将cmd写入序列,但我得到了收集反馈。所以,我想我们在某些情况下处理它之前不必打开序列号

© www.soinside.com 2019 - 2024. All rights reserved.