python 串口通讯+波形显示

该工程通过CH340芯片进行ADC数据的串口通信,以波特率115200上传。利用pyqtgraph库在上位机进行数据可视化,创建了一个移动的数据缓冲区,每接收新数据时更新显示。程序通过多线程处理串口读取,主线程使用定时器每30ms刷新波形图,展示振动值的变化。
摘要由CSDN通过智能技术生成

本次工程的目标是为了实现ADC采集信号的上位机显示。

硬件方面是通过CH340虚拟串口上传ADC数据,波特率115200

代码如下

import serial
import pyqtgraph as pg
import numpy as np
import array
import threading

#函数以外定义的是全局变量,函数以内的是局部变量
def COM():
    while True:
        ad_value = int(com.readline().decode('ascii'))
        print(ad_value)
        if len(data)<N:       
            data.append(ad_value)     #添加数据            
        else:
            data[:-1] = data[1:]  #实现移动
            data[-1] = ad_value

def plotData():
    curve.setData(data)

    
app = pg.mkQApp()
#建立显示数组和显示界面
data = array.array('d')
N = 500
win = pg.GraphicsLayoutWidget(show=True)
win.resize(800,400)
win.setWindowTitle('NX-CBm波形采集')
#建立波形显示区域
p = win.addPlot()
p.showGrid(x=True,y=True)
p.setRange(xRange=[0,N-1],yRange=[-500,500],padding=0) #X,Y坐标显示
p.setLabels(left='数据轴',bottom='时间轴',title='振动值')
# 建立一条线
curve = p.plot(pen='y')    

#打开串口,读取数据
com = serial.Serial('COM8',115200)
#ad_vaule = com.readline().decode('ascii') #这里是ascii显示


th = threading.Thread(target=COM)#目标函数一定不能带()被这个BUG搞了好久
th.start()

timer = pg.QtCore.QTimer()
timer.timeout.connect(plotData)  #30ms刷新波形
timer.start(10)

app.exec_()

8-16行为串口通讯和实现显示的移动

18-19是显示线条

22-35建立界面

39 打开串口

42-43给串口单独开个线程

45-47定时刷新波形

效果如下,不知道怎么做动态效果,实际整个波形是向右边移动的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值