Python 读取串口数据,动态绘图的示例


Posted in Python onJuly 02, 2019

最近工作需要把单片机读取的传感器电压数据实时在PC上通过曲线显示出来,刚好在看python, 就试着用了python 与uart端口通讯,并且通过matplotlib.pyplot 模块实时绘制图形出来。

1. 废话少说,上图

Python 读取串口数据,动态绘图的示例

因为没有UI,运行时需要在提示符下输入串口相关参数,com端口,波特率...

Python 读取串口数据,动态绘图的示例

代码如下:

#-*- coding: utf-8 -*-
 
# 串口测试程序
import serial
import matplotlib.pyplot as plt
import numpy as np
import time
import re
 
 
# User input comport and bundrate
comport = input('Please input comport (like COM3) for your connected device: ')
baudrate = input('Please input baudrate (like 9600) for your connected device: ')
bytes = input('Please input bytes type of uart data (1->1 byte, 2->2 bytes): ')
bytes = int(bytes)
print('You selected %s, baudrate %d, %d byte.' % (comport, int(baudrate), bytes))
 
serialport = serial.Serial(comport, int(baudrate), timeout=1, parity=serial.PARITY_EVEN, rtscts=1)
if serialport.isOpen():
	print("open success")
else:
	print("open failed")
 
plt.grid(True) # 添加网格
plt.ion()	# interactive mode
plt.figure(1)
plt.xlabel('times')
plt.ylabel('data')
plt.title('Diagram of UART data by Python')
t = [0]
m = [0]
i = 0
intdata = 0
data = ''
count = 0
 
while True:
	if i > 300:  # 300次数据后,清除画布,重新开始,避免数据量过大导致卡顿。
		t = [0]
		m = [0]
		i = 0
		plt.cla()
	count = serialport.inWaiting()
	if count > 0 :
		if (bytes == 1):
			data = serialport.read(1)
		elif (bytes == 2):
			data = serialport.read(2)
		if data !='':
			intdata = int.from_bytes(data, byteorder='big', signed = False)
			print('%d byte data %d' % (bytes, intdata))
			i = i+1
			t.append(i)
			m.append(intdata)
			plt.plot(t, m, '-r')   
			# plt.scatter(i, intdata)
			plt.draw()
 
	plt.pause(0.002)

目前功能比较简单,但是发现一个问题,但单片机送出数据速度很快时, python plot 绘图会明显卡顿。

为解决此问题,已经用C# 重新做了个winform UI, 使用chart控件来绘图。

以上这篇Python 读取串口数据,动态绘图的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python数据结构树和二叉树简介
Apr 29 Python
python实现根据ip地址反向查找主机名称的方法
Apr 29 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
python实现SMTP邮件发送功能
Jun 16 Python
Python matplotlib画图实例之绘制拥有彩条的图表
Dec 28 Python
python字符串常用方法
Jun 14 Python
Python多线程编程之多线程加锁操作示例
Sep 06 Python
解决Python pandas plot输出图形中显示中文乱码问题
Dec 12 Python
Python startswith()和endswith() 方法原理解析
Apr 28 Python
详解python百行有效代码实现汉诺塔小游戏(简约版)
Oct 30 Python
python-图片流传输的思路及示例(url转换二维码)
Dec 21 Python
Django和Ueditor自定义存储上传文件的文件名
Feb 25 Python
python中对数据进行各种排序的方法
Jul 02 #Python
Python虚拟环境的原理及使用详解
Jul 02 #Python
python输出电脑上所有的串口名的方法
Jul 02 #Python
如何更优雅地写python代码
Jul 02 #Python
Python pip替换为阿里源的方法步骤
Jul 02 #Python
python set内置函数的具体使用
Jul 02 #Python
ZABBIX3.2使用python脚本实现监控报表的方法
Jul 02 #Python
You might like
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
php实现源代码加密的方法
2015/07/11 PHP
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
jQuery 使用手册(六)
2009/09/23 Javascript
jquery 经典动画菜单效果代码
2010/01/26 Javascript
选择TreeView控件的树状数据节点的JS方法(jquery)
2010/02/06 Javascript
javascript实现的使用方向键控制光标在table单元格中切换
2010/11/17 Javascript
javascript 获取图片尺寸及放大图片
2013/09/04 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
jQuery扁平化风格下拉框美化插件FancySelect使用指南
2015/02/10 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
相册展示PhotoSwipe.js插件实现
2016/08/25 Javascript
Vue.js快速入门实例教程
2016/10/15 Javascript
整理关于Bootstrap排版的慕课笔记
2017/03/29 Javascript
详解基于vue-router的动态权限控制实现方案
2017/09/28 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
vue-cli+iview项目打包上线之后图标不显示问题及解决方法
2019/10/16 Javascript
python批量生成本地ip地址的方法
2015/03/23 Python
python使用clear方法清除字典内全部数据实例
2015/07/11 Python
运动检测ViBe算法python实现代码
2018/01/09 Python
Python使用matplotlib绘制随机漫步图
2018/08/27 Python
python Tkinter版学生管理系统
2019/02/20 Python
PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上
2019/04/01 Python
Python 编程速成(推荐)
2019/04/15 Python
Python中函数的基本定义与调用及内置函数详解
2019/05/13 Python
Python threading模块condition原理及运行流程详解
2020/10/05 Python
CSS3 实现雷达扫描图的示例代码
2020/09/21 HTML / CSS
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
在印度上传处方,在线订购药品:Medlife
2019/03/28 全球购物
SQL里面如何插入自动增长序列号字段
2012/03/29 面试题
优秀员工自荐信范文
2013/10/05 职场文书
计算机系毕业生推荐信
2013/11/06 职场文书
大学生个人事迹材料
2014/01/21 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python