python串口讀取數據的實例
更新時間:2023年09月06日 10:06:22 作者:作一條大肥魚
這篇文章主要介紹了python串口讀取數據的實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
python串口讀取數據
python庫 serial
初學者學習使用串口接收數據,serial為python提供的串口通信庫
串口調試工具
串口調試工具使用:ssscom(習小猛版)
使用步驟:
1、連接設備至電腦,檢查是否識別具有驅動程序(我的電腦-管理-設備管理器-端口)
2、打開ssscom,自動識別設備,左上角點擊通訊端口,選擇使用串口的設備
3、設置串口設置
4、點擊打開串口、接收數據
5、觀察接收數據可得出通信頻率
注:port為端口號、baud rate為波特率、data bits為數據字節(jié),stop bits為停止字節(jié),parity為校驗位
serial庫
1、引入庫 import serial
2、串口常用的屬性
name
:設備名字port
:端口baudrate
:波特率bytesize
:字節(jié)大小parity
:校驗位stopbits
:停止位timeout
:讀超時設置
3、串口常用的方法
open()
:打開串口close()
:關閉串口inWaiting()
:返回緩存中的字節(jié)數,搭配time.sleep使用,否則數據會沒有進入緩存區(qū)而結束程序
注:如果需要持續(xù)接收數據,可設置一個定時器,反復調用接收串口數據
編程實例
import serial import time serialport = serial.Serial() serialport.port = 'COM4' serialport.baudrate = 115200 serialport.bytesize = 8 serialport.parity = serial.PARITY_NONE serialport.stopbits = 1 serialport.timeout = 0.001 serialport.close() if not serialport.is_open: serialport.open() time.sleep(0.05) #時間設置參考串口傳輸速率 num = serialport.inWaiting() if num > 0: data = serialport.read(num) print(data)
python串口讀取數據及下發(fā)數據
import sqlite3 import threading from datetime import datetime import serial import time def dh(): t=threading.Timer(1, run) t.start() def run(): dh() serialport = serial.Serial() serialport.port = 'COM4' serialport.baudrate = 115200 serialport.bytesize = 8 serialport.parity = serial.PARITY_NONE serialport.stopbits = 1 serialport.timeout = 20 serialport.close() if not serialport.is_open: serialport.open() time.sleep(0.5) # 時間設置參考串口傳輸速率 num = serialport.inWaiting() if num > 0: data = serialport.read(num)# 讀取數據解析數據插入sqlite 數據庫 print( data.decode().strip().split(",")[0]) sql = "insert into t_table (code,weight,feedIntake,time)values(?,?,?,?)" conn = sqlite3.connect("test.db") c = conn.cursor() try: c.execute(sql, data.decode().strip().split(",")) conn.commit() print("數據插入成功") except Exception as e: print("數據插入失敗", e) finally: code = data.decode().strip().split(",")[0] gg = tuple([code]) #searchcode(gg) conn.close() return "數據插入成功" dh()
# 串口發(fā)送數據 def FeedComposia(a,b,c): serialport = serial.Serial() serialport.port = 'COM3' serialport.baudrate = 115200 serialport.bytesize = 8 serialport.parity = serial.PARITY_NONE serialport.stopbits = 1 serialport.timeout = 20 serialport.close() if not serialport.is_open: serialport.open() time.sleep(0.5) # 時間設置參考串口傳輸速率 t=a,b,c #數據要轉換一下,才能接受 v = json.dumps(t, ensure_ascii=False) serialport.write(v.encode()) print("a", a) print("b", b) return a, b
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。