3
我沒有找到一個合理的好例子,說明如何使用pyserial與串行調制解調器對話。我創建了一個代碼片段,應該做到以下幾點,給定一個實例化對象pyserial ser
:使用pyserial與調制解調器通信
- 儘快發送AT命令到調制解調器
- 返回調制解調器答案儘可能
- 返回例如在沒有超時的情況下無
- 處理腳本和調制解調器之間的通信最合理,健壯且簡單。
下面是摘錄:
def send(cmd, timeout=2):
# flush all output data
ser.flushOutput()
# initialize the timer for timeout
t0 = time.time()
dt = 0
# send the command to the serial port
ser.write(cmd+'\r')
# wait until answer within the alotted time
while ser.inWaiting()==0 and time.time()-t0<timeout:
pass
n = ser.inWaiting()
if n>0:
return ser.read(n)
else:
return None
我的問題:這是很好的,健壯的代碼,或者片被改變/簡化?我特別不喜歡read(n)
方法,我希望pyserial提供一段只返回整個緩衝區內容的代碼。另外,我/我是否應該在開始時刷新輸出,以避免在輸出緩衝區中存在一些廢話?
感謝 亞歷克斯
注意行結尾,你確定''\ r''是正確的行結尾嗎?通常它是簡單的換行符(''\ n'')或回車符和換行符(''\ r \ n'')。 –
@Joachim:這是我無法回答的一個好點。它應該被視爲問題的一部分。 – Alex