我正試圖編寫一個應用程序,使用Python和PySerial在Linux PC中使用串行端口。但在這臺PC中還有其他的應用程序使用串行端口。 在嘗試使用它之前,如何知道其他應用程序是否已經打開一個端口?Python PySerial.How要知道一個端口是否已經打開?
感謝
我正試圖編寫一個應用程序,使用Python和PySerial在Linux PC中使用串行端口。但在這臺PC中還有其他的應用程序使用串行端口。 在嘗試使用它之前,如何知道其他應用程序是否已經打開一個端口?Python PySerial.How要知道一個端口是否已經打開?
感謝
檢查Serial.serial返回輸出,它返回一個無效的異常可以被捕獲
http://pyserial.sourceforge.net/pyserial_api.html http://pyserial.sourceforge.net/pyserial_api.html#serial.SerialException
除此之外,如果端口實際上是在關閉時你的程序試圖訪問它,拋出的錯誤是非致命的,並且對其失敗的原因相當清楚。
似乎被嚴重記錄了PySerial網站上,這個工作對我來說:
ser = serial.Serial(DEVICE,BAUD,timeout=1)
if(ser.isOpen() == False):
ser.open()
一個人爲的例子一點,但你的想法。 我知道這個問題很久以前就被問過了,但我今天也有同樣的問題,並且覺得有人發現這個頁面會喜歡找到答案。
這是我在嘗試阻止我的應用程序失敗時所幫助的,因爲它已停止並重新啓動。
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...
剛纔意識到這個問題是提出一些與此稍有不同的問題,但我希望這個答案仍然會有幫助! – StampyCode 2013-05-27 09:20:03
2017年8月,我剛剛在Google上找到了這一名單 - 感謝您以這種方式發佈此信息。它完全回答了我的問題。就我而言,這意味着程序已經在運行。我在電腦中使用ssh,有時我從控制檯運行數據記錄程序'ssx'。 Python現在可以使用它來檢測它而不會中止,並使用'os.system(「killall ssx」)'來自行停止另一個。這隻有在我進行修改時纔會發生,但對於我來說搜索已經足夠了。在這裏,你是。 TNX。 – SDsolar 2017-08-24 01:19:46