Python 读取串口数据,动态绘图的示例
作者:happyliuliming 时间:2021-11-15 19:36:24
最近工作需要把单片机读取的传感器电压数据实时在PC上通过曲线显示出来,刚好在看python, 就试着用了python 与uart端口通讯,并且通过matplotlib.pyplot 模块实时绘制图形出来。
1. 废话少说,上图
因为没有UI,运行时需要在提示符下输入串口相关参数,com端口,波特率...
代码如下:
#-*- 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控件来绘图。
来源:https://blog.csdn.net/happyliuliming/article/details/84845560
标签:Python,串口,数据,动态,绘图
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
python实现ping命令小程序
2022-12-14 02:16:26
![](https://img.aspxhome.com/file/2023/9/75159_0s.png)
Python实现EXCEL表格的排序功能示例
2021-05-17 20:50:11
![](https://img.aspxhome.com/file/2023/7/81727_0s.jpg)
python 实现单一数字取对数与数列取对数
2023-04-02 01:38:14
![](https://img.aspxhome.com/file/2023/3/96963_0s.png)
Python DPED机器学习之实现照片美化
2023-11-25 01:50:24
![](https://img.aspxhome.com/file/2023/5/86315_0s.jpg)
给Notepad++换主题
2009-05-04 14:43:00
![](https://img.aspxhome.com/file/UploadPic/20095/4/rhtml-39s.gif)
用python实现名片管理系统
2022-03-27 09:34:33
![](https://img.aspxhome.com/file/2023/9/75349_0s.jpg)
python利用datetime模块计算程序运行时间问题
2022-05-24 03:13:41
深入透析样式表滤镜(上)
2011-06-14 09:48:40
解析:轻松掌握在 Mac OS X中安装MySQL
2009-01-14 11:51:00
Python Base64编码和解码操作
2022-10-20 06:26:05
Python实现读取txt文件并转换为excel的方法示例
2023-07-25 15:20:16
兼容firefox的给每一个onClick再附加一个事件
2023-08-24 18:29:47
python求最大公约数和最小公倍数的简单方法
2022-08-31 22:05:45
python数字类型math库原理解析
2021-11-27 16:34:50
![](https://img.aspxhome.com/file/2023/1/103601_0s.png)
js字符串日期yyyy-MM-dd转化为date示例代码
2023-08-06 16:35:58
python机器学习使数据更鲜活的可视化工具Pandas_Alive
2022-09-26 04:57:12
![](https://img.aspxhome.com/file/2023/8/112968_0s.png)
tkinter自定义下拉多选框问题
2022-09-27 06:40:00
![](https://img.aspxhome.com/file/2023/2/107862_0s.png)
pd.read_csv读取文件路径出现的问题解决
2022-03-16 06:12:53
![](https://img.aspxhome.com/file/2023/9/86499_0s.png)
Python之京东商品秒杀的实现示例
2023-01-31 05:49:07
![](https://img.aspxhome.com/file/2023/4/72254_0s.png)
python数值基础知识浅析
2021-12-10 07:07:49