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 22 Python
python合并同类型excel表格的方法
Apr 01 Python
Python列表切片操作实例总结
Feb 19 Python
解决python 读取excel时 日期变成数字并加.0的问题
Oct 08 Python
Python 使用type来定义类的实现
Nov 19 Python
python Opencv计算图像相似度过程解析
Dec 03 Python
Python如何通过百度翻译API实现翻译功能
Apr 02 Python
Django def clean()函数对表单中的数据进行验证操作
Jul 09 Python
彻底搞懂python 迭代器和生成器
Sep 07 Python
jupyter notebook远程访问不了的问题解决方法
Jan 11 Python
如何在Python中创建二叉树
Mar 30 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
Jun 11 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
PHP JSON格式数据交互实例代码详解
2011/01/13 PHP
Zend Studio (eclipse)使用速度优化方法
2011/03/23 PHP
PHP中的流(streams)浅析
2015/07/02 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
php基于session实现数据库交互的类实例
2015/08/03 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
获取网站跟路径的javascript代码(站点及虚拟目录)
2009/10/20 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
Nodejs全栈框架StrongLoop推荐
2014/11/09 NodeJs
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
javascript动态创建链接的方法
2015/05/13 Javascript
javascript工厂模式和构造函数模式创建对象方法解析
2016/12/30 Javascript
Vue.Draggable拖拽功能的配置使用方法
2020/07/29 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
Python爬取读者并制作成PDF
2015/03/10 Python
python简单的函数定义和用法实例
2015/05/07 Python
python获取一组汉字拼音首字母的方法
2015/07/01 Python
Python实现随机生成有效手机号码及身份证功能示例
2017/06/05 Python
Flask框架学习笔记之表单基础介绍与表单提交方式
2019/08/12 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
获取python运行输出的数据并解析存为dataFrame实例
2020/07/07 Python
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
业务员简历自我评价
2014/03/06 职场文书
职业生涯规划书结束语
2014/04/15 职场文书
工程承包协议书
2014/04/22 职场文书
小学生综合素质评语
2014/04/23 职场文书
2014年教师党员自我评议
2014/09/19 职场文书
党的群众路线查摆剖析材料
2014/10/10 职场文书
关于颐和园的导游词
2015/01/30 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
交通事故赔偿起诉书
2015/05/20 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
python爬虫selenium模块详解
2021/03/30 Python
如何有效防止sql注入的方法
2021/05/25 SQL Server