python串口读取数据的实例
作者:作一条大肥鱼
这篇文章主要介绍了python串口读取数据的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
python串口读取数据
python库 serial
初学者学习使用串口接收数据,serial为python提供的串口通信库
串口调试工具
串口调试工具使用:ssscom(习小猛版)
使用步骤:
1、连接设备至电脑,检查是否识别具有驱动程序(我的电脑-管理-设备管理器-端口)
2、打开ssscom,自动识别设备,左上角点击通讯端口,选择使用串口的设备
3、设置串口设置
4、点击打开串口、接收数据
5、观察接收数据可得出通信频率
注:port为端口号、baud rate为波特率、data bits为数据字节,stop bits为停止字节,parity为校验位
serial库
1、引入库 import serial
2、串口常用的属性
name
:设备名字port
:端口baudrate
:波特率bytesize
:字节大小parity
:校验位stopbits
:停止位timeout
:读超时设置
3、串口常用的方法
open()
:打开串口close()
:关闭串口inWaiting()
:返回缓存中的字节数,搭配time.sleep使用,否则数据会没有进入缓存区而结束程序
注:如果需要持续接收数据,可设置一个定时器,反复调用接收串口数据
编程实例
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串口读取数据及下发数据
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()
# 串口发送数据 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
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。