python 操作AT指令
最近除錯iot模組,一直想搞一個串列埠工具,但是linux下面的工具太操蛋(onenet 接入IOT有時間限制),所以想寫一個串列埠程式,但是C語言寫起來太複雜,Python寫出來簡單,但是使用的是read_all函式,沒有阻塞的效果,我還以為是我的串列埠有問題,原來read_all是非阻塞函式,最後想出來這個辦法。
程式碼如下:
# -*- coding: utf-8 -*-
import serial
import os
from time import sleep
if __name__ == '__main__':
serial = serial.Serial('/dev/ttyUSB0', 9600,timeout = 3600)
if serial.isOpen() :
print("open success")
else :
print("open failed")
while True:
send_data = input("input a data: ")
send_data = send_data + '\r\n'
serial.write(send_data.encode())
data=serial.read(1)#阻塞讀直到讀出第一個資料,然後用serial.inWaiting()計算出接收緩衝區還有多少個數據,使用read讀出來
sleep(0.1) #有些AT指令的回覆太長,延遲一段時間,希望開發板的串列埠已經將AT指令的回覆已經全部接收到緩衝區
data = (data + serial.read(serial.inWaiting())).decode()
print(data)