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

前端 未结 3 1167
面向向阳花
面向向阳花 2021-02-20 12:54

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

相关标签:
3条回答
  • 2021-02-20 13:35

    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...
    
    0 讨论(0)
  • 2021-02-20 13:49

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

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

    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 讨论(0)
  • 2021-02-20 13:59

    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.

    0 讨论(0)
提交回复
热议问题