开发者

Python PySerial.How to know if a port is already open?

开发者 https://www.devze.com 2023-03-09 13:38 出处:网络
I\'m trying to write an App that uses serial ports in a Linux PC, using python and 开发者_运维问答PySerial. But in this PC there are other Apps using serial ports.

I'm trying to write an App that uses serial ports in a Linux PC, using python and 开发者_运维问答PySerial. But in this PC there are other Apps using serial ports. How can I know if a port is already open by other App before trying to use it?

thanks


Seems to be badly documented on the PySerial website, this works for me:

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

A bit of a contrived example, but you get the idea. I know this question was asked a long time ago, but I had the same question today and felt anyone else finding this page would appreciate finding an answer.


This is what me helped when trying to prevent my application from failing because it was stopped and started again.

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


Check the return output of Serial.serial, it returns an invalid exception that can be caught.

API documentation
Exceptions documentation

Other than that, if the port is in fact closed when your program attempts to access it, the error thrown is non-fatal and is fairly clear about the reason it failed.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号