使用python pyserial模塊串口通信方式
python pyserial模塊串口通信
最近調(diào)試通信模塊時,需要用UART串口輸入AT命令控制模塊,手動輸入不便于自動化,所以就學(xué)習(xí)了下使用python進行串口控制。
serial模塊安裝
pip install pyserial??
常用的方法函數(shù)
導(dǎo)入串口模塊import serial;
打開串口ser = serial.Serial(端口名稱,...其他參數(shù)),ser.open()方法可以在close之后再次打開相應(yīng)端口;
關(guān)閉串口ser.close();
通過串口寫入ser.write(b''),參數(shù)需要使用字節(jié)bytes類型,如果是str類型,則可以使用encode('utf-8')的方式進行轉(zhuǎn)換;
讀取模塊信息的方法如下,x = ser.read()讀取一個字節(jié),x=read(n)讀取n個字節(jié),readline()可以用來讀取一行。
查看COM口工具
python -m serial.tools.list_ports -v
可以列出所有串口名稱及屬性。
Serial參數(shù)說明
port
端口名字,windows下為'COM1'等;baudrate (int)
波特率,可以設(shè)置的范圍9600到115200;bytesize
為每個字節(jié)的比特數(shù),設(shè)置值為FIVEBITS, SIXBITS,SEVENBITS, EIGHTBITS 5-8比特;parity
設(shè)置校驗位PARITY_NONE, PARITY_EVEN,PARITY_ODD PARITY_MARK, PARITY_SPACE,用來設(shè)置校驗位;stopbits
停止位,用來指示字節(jié)完成,可以選擇的設(shè)置STOPBITS_ONE,
STOPBITS_ONE_POINT_FIVE, STOPBITS_TWO;
write_timeout(float)
寫入超時設(shè)置;timeout (float)
讀出超時設(shè)置;xonxoff (bool)
軟件流控開關(guān);rtscts (bool)
硬件RTS/CTS流控開關(guān);dsrdtr (bool)
硬件DSR/DTR流控開關(guān)。
關(guān)于UART流控兩線方式?jīng)]有硬件流控,四線方式采用DSR、DTR進行流控,而RS232標準中可以有DSR、DTR的流控方式。
RTS-request to send
CTS- clear to send
DSR-data set ready
DTR-Data Terminal Ready
一個簡單示例
#!usr/bin/python3.6 import serial import sys import os import time import re global MAX_LOOP_NUM global newCmd MAX_LOOP_NUM = 10 def waitForCmdOKRsp(): maxloopNum = 0 while True: line = ser.readline() maxloopNum = maxloopNum + 1 try: print("Rsponse : %s"%line.decode('utf-8')) except: pass if ( re.search(b'OK',line)): break elif(maxloopNum > MAX_LOOP_NUM): sys.exit(0) def sendAT_Cmd(serInstance,atCmdStr,waitforOk): print("Command: %s"%atCmdStr) serInstance.write(atCmdStr.encode('utf-8')) #or define b'string',bytes should be used not str if(waitforOk == 1): waitForCmdOKRsp() else: waitForCmdRsp() ser = serial.Serial("COM5",9600,timeout=30) sendAT_Cmd(ser,'AT+CFUN=1\r',1) ser.close()
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
python數(shù)學(xué)建模之三大模型與十大常用算法詳情
這篇文章主要介紹了python數(shù)學(xué)建模之三大模型與十大常用算法詳情,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,感想取得小伙伴可以參考一下2022-07-07Python調(diào)用各大機器翻譯API的實現(xiàn)示例
本文主要介紹了Python調(diào)用各大機器翻譯API的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07python中cv2.imdecode()與cv2.imencode()的使用小結(jié)
本文介紹了cv2.imencode()和cv2.imdecode()函數(shù)的使用,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01