11

我正在尝试使用 python 和 PySerial 在 Linux PC 中编写一个使用串行端口的应用程序。但是在这台电脑上还有其他应用程序使用串口。在尝试使用端口之前,我如何知道端口是否已被其他应用程序打开?

谢谢

4

3 回答 3

23

似乎在 PySerial 网站上的记录很差,这对我有用:

ser = serial.Serial(DEVICE,BAUD,timeout=1)
if(ser.isOpen() == False):
    ser.open()

有点人为的例子,但你明白了。我知道这个问题是很久以前提出的,但我今天也有同样的问题,并且觉得其他任何人找到这个页面都会很高兴找到答案。

于 2013-05-27T09:17:36.030 回答
1

查看 Serial.serial 的返回输出,它返回一个可以被捕获的无效异常

http://pyserial.sourceforge.net/pyserial_api.html http://pyserial.sourceforge.net/pyserial_api.html#serial.SerialException

除此之外,如果当您的程序尝试访问它时端口实际上已关闭,则抛出的错误是非致命的,并且很清楚它失败的原因。

于 2011-07-23T14:38:23.093 回答
1

这就是我在试图防止我的应用程序失败时提供的帮助,因为它被停止并重新启动。

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...
于 2016-11-21T16:15:40.537 回答