0
我有一個愚蠢的python問題。pyserial,如果和文件讀取
我想從文件中讀取,每次我從串行連接得到一個「就緒」消息的行,所以我寫了這個:
import serial
from time import sleep
port = "/dev/tty.usbserial-A400fYTT"
speed = 57600
polarfile = 'polarfile.pg'
f = open(polarfile, 'r')
ser = serial.Serial(port, speed, timeout=0)
while True:
data = ser.read(9999)
if len(data) > 0:
if(data == 'READY'):
f.readline()
else:
sleep(0.5)
sleep(1)
ser.close()
但它不工作,但是如果我更換中頻(數據==「就緒」塊的打印數據,我得到的就緒消息。
而且我可以閱讀我的f.readline()文件...
由於到PY給意見新手
- 編輯: 重要信息,系列不接收只有「準備」消息,但一堆其他,但我想只是在收到「準備」消息時作出反應。
好吧我似乎發現了問題。 這不是python代碼的問題,而是串口線上收到的消息。 這不僅僅是「準備好」,而是一個更復雜的字符串,如「READY \ n」或其他新的行內容。 我不知道哪一個,但我會發現。 對不起,噪音! –
爲了防止腳本收到比'READY'更多的數據,比如新行字符或其他消息,可以在數據中使用'if'READY':'。另一種(傳統的)方法是每次讀取一個字符並使用非零超時值,逐步構建「READY」消息,並在不匹配時重新開始。 –
感謝這幾乎是我所做的:用'data = ser.readline(9999)'替換'data = ser.read(9999)',它通過輸入數據的第二行給出消息,而不是第二個消息,然後替換' if(data =='READY'):'by'if(data.startswith('READY')):'現在它工作:) –