Python と PySerial を使用して、Linux PC でシリアル ポートを使用するアプリを作成しようとしています。しかし、この PC には、シリアル ポートを使用する他のアプリがあります。ポートを使用する前に、ポートが他のアプリによって既に開いているかどうかを知るにはどうすればよいですか?
ありがとう
Python と PySerial を使用して、Linux PC でシリアル ポートを使用するアプリを作成しようとしています。しかし、この PC には、シリアル ポートを使用する他のアプリがあります。ポートを使用する前に、ポートが他のアプリによって既に開いているかどうかを知るにはどうすればよいですか?
ありがとう
PySerial Web サイトの文書化が不十分なようですが、これは私にとってはうまくいきます。
ser = serial.Serial(DEVICE,BAUD,timeout=1)
if(ser.isOpen() == False):
ser.open()
少し不自然な例ですが、アイデアはわかります。この質問はずっと前に出されたことは知っていますが、今日同じ質問があり、このページを見つけた他の誰かが答えを見つけてくれるとありがたいと感じました.
Serial.serial の戻り出力を確認してください。キャッチできる無効な例外が返されます。
http://pyserial.sourceforge.net/pyserial_api.html http://pyserial.sourceforge.net/pyserial_api.html#serial.SerialException
それ以外に、プログラムがポートにアクセスしようとしたときにポートが実際に閉じられている場合、スローされるエラーは致命的ではなく、失敗した理由についてかなり明確です。
これは、アプリケーションが停止して再び開始されたためにアプリケーションが失敗するのを防ぐために私が助けたものです。
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...