1. 程式人生 > >python 操作AT指令

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)