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用于url解码和中文解析的小脚本(python url decoder)
Aug 11 Python
Python使用百度API上传文件到百度网盘代码分享
Nov 08 Python
Python 搭建Web站点之Web服务器网关接口
Nov 06 Python
python验证码识别实例代码
Feb 03 Python
Python基于sklearn库的分类算法简单应用示例
Jul 09 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
Jan 04 Python
详解Python 定时框架 Apscheduler原理及安装过程
Jun 14 Python
python中对数据进行各种排序的方法
Jul 02 Python
Pytorch保存模型用于测试和用于继续训练的区别详解
Jan 10 Python
Python属性和内建属性实例解析
Jan 14 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
python math模块的基本使用教程
Jan 16 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 分库分表hash算法
2009/11/12 PHP
解析smarty 截取字符串函数 truncate的用法介绍
2013/06/20 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
PHP验证终端类型是否为手机的简单实例
2017/02/07 PHP
PHP合并数组函数array_merge用法分析
2017/02/17 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
2018/04/21 PHP
Laravel手动返回错误码示例
2019/10/22 PHP
建立良好体验度的Web注册系统ajax
2007/07/09 Javascript
js wmp操作代码小结(音乐连播功能)
2008/11/08 Javascript
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
javascript一些实用技巧小结
2011/03/18 Javascript
Javascript模块化编程详解
2014/12/01 Javascript
浅谈jQuery构造函数分析
2015/05/11 Javascript
JS实现的表格行上下移动操作示例
2016/08/03 Javascript
利用python分析access日志的方法
2016/10/26 Javascript
jquery.validate[.unobtrusive]和Bootstrap实现tooltip错误提示问题分析
2016/10/30 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
2017/07/17 jQuery
图片懒加载imgLazyLoading.js使用详解
2020/09/15 Javascript
Material(包括Material Icon)在Angular2中的使用详解
2018/02/11 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
详解package.json版本号规则
2019/08/01 Javascript
解决layui的input独占一行的问题
2019/09/10 Javascript
JQuery使用属性addClass、removeClass和toggleClass实现增加和删除类操作示例
2019/11/18 jQuery
Python通过调用有道翻译api实现翻译功能示例
2018/07/19 Python
Python实现的连接mssql数据库操作示例
2018/08/17 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
如何在Cloud Studio上执行Python代码?
2019/08/09 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
Python爬虫设置ip代理过程解析
2020/07/20 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
应用英语专业自荐信
2014/01/26 职场文书
情侣餐厅的创业计划书范本!
2019/07/26 职场文书
Python 中random 库的详细使用
2021/06/03 Python
python井字棋游戏实现人机对战
2022/04/28 Python