Python PySerial.How知道端口是否已经打开?

时间:2011-05-30 16:34:33

标签: pyserial

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

感谢

3 个答案:

答案 0 :(得分:18)

似乎在PySerial网站上有详细记录,这对我有用:

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

一些人为的例子,但你明白了。 我知道很久以前就问了这个问题,但我今天也有同样的问题,觉得找到这个页面的其他人都希望找到答案。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

这是我在尝试阻止我的应用程序失败时所帮助的,因为它已停止并重新启动。

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...