我正试图编写一个应用程序,使用Python和PySerial在Linux PC中使用串行端口。但在这台PC中还有其他的应用程序使用串行端口。 在尝试使用它之前,如何知道其他应用程序是否已经打开一个端口?Python PySerial.How要知道一个端口是否已经打开?
感谢
我正试图编写一个应用程序,使用Python和PySerial在Linux PC中使用串行端口。但在这台PC中还有其他的应用程序使用串行端口。 在尝试使用它之前,如何知道其他应用程序是否已经打开一个端口?Python PySerial.How要知道一个端口是否已经打开?
感谢
检查Serial.serial返回输出,它返回一个无效的异常可以被捕获
http://pyserial.sourceforge.net/pyserial_api.html http://pyserial.sourceforge.net/pyserial_api.html#serial.SerialException
除此之外,如果端口实际上是在关闭时你的程序试图访问它,抛出的错误是非致命的,并且对其失败的原因相当清楚。
似乎被严重记录了PySerial网站上,这个工作对我来说:
ser = serial.Serial(DEVICE,BAUD,timeout=1)
if(ser.isOpen() == False):
ser.open()
一个人为的例子一点,但你的想法。 我知道这个问题很久以前就被问过了,但我今天也有同样的问题,并且觉得有人发现这个页面会喜欢找到答案。
这是我在尝试阻止我的应用程序失败时所帮助的,因为它已停止并重新启动。
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...
刚才意识到这个问题是提出一些与此稍有不同的问题,但我希望这个答案仍然会有帮助! – StampyCode 2013-05-27 09:20:03
2017年8月,我刚刚在Google上找到了这一名单 - 感谢您以这种方式发布此信息。它完全回答了我的问题。就我而言,这意味着程序已经在运行。我在电脑中使用ssh,有时我从控制台运行数据记录程序'ssx'。 Python现在可以使用它来检测它而不会中止,并使用'os.system(“killall ssx”)'来自行停止另一个。这只有在我进行修改时才会发生,但对于我来说搜索已经足够了。在这里,你是。 TNX。 – SDsolar 2017-08-24 01:19:46