【发布时间】:2023-03-30 14:31:01
【问题描述】:
我正在尝试使用 python 和 PySerial 在 Linux PC 中编写一个使用串行端口的应用程序。但是在这台电脑上还有其他应用程序使用串口。 在尝试使用端口之前,如何知道端口是否已被其他 App 打开?
谢谢
【问题讨论】:
标签: pyserial
我正在尝试使用 python 和 PySerial 在 Linux PC 中编写一个使用串行端口的应用程序。但是在这台电脑上还有其他应用程序使用串口。 在尝试使用端口之前,如何知道端口是否已被其他 App 打开?
谢谢
【问题讨论】:
标签: pyserial
PySerial 网站上的文档似乎很糟糕,这对我有用:
ser = serial.Serial(DEVICE,BAUD,timeout=1)
if(ser.isOpen() == False):
ser.open()
有点人为的例子,但你明白了。 我知道这个问题是很久以前提出的,但我今天也有同样的问题,并且觉得其他找到此页面的人会很高兴找到答案。
【讨论】:
ssx。 Python 现在可以使用它来检测它而无需中止,并使用os.system("killall ssx") 自行停止另一个。这仅在我进行更改时发生,但这足以让我搜索。你在这里。 TNX。
查看Serial.serial的返回输出,返回一个可以被捕获的无效异常
http://pyserial.sourceforge.net/pyserial_api.html http://pyserial.sourceforge.net/pyserial_api.html#serial.SerialException
除此之外,如果在您的程序尝试访问它时端口实际上已关闭,则抛出的错误不是致命的,并且很清楚它失败的原因。
【讨论】:
这是我在尝试防止我的应用程序因停止并重新启动而失败时提供的帮助。
import serial
try:
ser = serial.Serial( # set parameters, in fact use your own :-)
port="COM4",
baudrate=9600,
bytesize=serial.SEVENBITS,
parity=serial.PARITY_EVEN,
stopbits=serial.STOPBITS_ONE
)
ser.isOpen() # try to open port, if possible print message and proceed with 'while True:'
print ("port is opened!")
except IOError: # if port is already opened, close it and open it again and print message
ser.close()
ser.open()
print ("port was already open, was closed and opened again!")
while True: # do something...
【讨论】: