精华内容
下载资源
问答
  • 串口数据波形显示

    2018-09-26 17:00:26
    串口上传的数据波形的方式显示出来。开发环境VS2012,MFC。语言:C++,混合C语言。使用了TeeChart控件。 压缩包里含有代码移植说明。
  • 串口数据波形显示助手.zip
  • 串口数据波形显示助手,支持两条波形的显示,为单片机爱好者开发
  • 接收16位串口数据(高位在前),显示波形,可以配置采样频率和显示周期
  • 基于vs2010-mfc简易串口数据波形显示软件(入门篇) Simple serial data waveform display software based on vs2010-mfc (entry)
  • 基于VB6.0开发环境,使用MSComm控件开发的串口数据收发软件源码,支持8路数据波形显示。较适合与单片机通信调试。
  • ....在嵌入式开发过程中,也有大量的传感器数据需要分析,这些数据在调试过程中都是由串口发送到串口助手查看,可是,面对串口助手里一行行的数据,真的可以分析出问题吗?串口发送的数据都是以...

    . 1. 推荐语

    数据可视化一词缘于Python的流行,在Python中有诸如pyecharts,matplotlib等工具库可以调用,将一堆数据绘制成形象的图表,比如条形图,饼图等等,可以一眼就看出数据的变化趋势

    在嵌入式开发过程中,也有大量的传感器数据需要分析,这些数据在调试过程中都是由串口发送到串口助手查看,可是,面对串口助手里一行行的数据,真的可以分析出问题吗?

    串口发送的数据都是以时间点为单位的,即每个时间点发送一个数据,这样的数据,如何做到可视化?显然,波形显示是最好的方式!

    本文中推荐的工具是作者一直使用的,由 VCAN 我行科技开发的一款多功能串口助手,这里只介绍其中的虚拟示波器功能用法及使用案例,该工具获取方式见文末。

    虚拟示波器功能界面如下:

    2d643496fc956caf44d7b42bc656bffa.png

    波形显示工具的优势如下:

    • 支持多达8个通道

    • 通道数据类型可选

    • 通道名称可修改

    • 通道可隐藏

    • 可鼠标控制界面缩放和移动

    • 可自动追踪数据

    • 可快速把Y轴归零

    这么好用的工具,如何使用呢?接下来慢慢讲述。

    . 2. 工具用法

    使用该工具时,首先在工具中打开对应下位机的串口,并设置好波特率,然后对应的下位机(嵌入式系统)只需要按照规定的格式发送数据即可,一次数据传输的通信协议的格式为:

     [0x03] [0xFC][…数据…][0xFC][0x03]

    其中[…数据…]是一次的波形,不同的波形数量和数据类型,数据的长度就不相同。

    eg.

    假设现在单片机需要发送 5 个通道的数据显示, 都是uint8_t 类型(unsigned char),那么数据就是 5 个字节,从左往右是波形 1 到波形 5 的波形数据,单片机发送一次数据的流程如下:

    • 先发送帧头:0x03,0xFC

    • 接着发送全部波形的数据(5个字节)

    • 最后发送帧尾:0xFC,0x03

    这样就完成一次波形数据发送,可以在波形显示工具中看到波形。

    . 3. 使用案例 —— 一次ADC采集电压的可视化分析过程

    在一次制作数字电压表的过程中,使用STM32自带的ADC采样直流电压并通过串口发送,但是在调节电位器变化ADC所采样的电压时,在串口助手中只有单纯的文字显示,只能看到变化前的电压值和变化后的电压值,在变化的这个阶段根本没法分析,所以就想到了使用该工具进行可视化分析。

    根据之前所规定的协议,在发送电压值数据时加入了帧头和帧尾,这样工具里就可以用波形显示出ADC采样情况,果然,在ADC采样电压数据有变化时,波形如下:

    d2e324b644572d552ac91fbeac01f676.png

    数据看似还算平稳,可是这是在0-3.3V整体范围内的情况,再放大一下看看:

    9908b941f3ef16031db14917d8a49b01.png

    这是在+-1V的范围内,可以看到数据出现了剧烈抖动,如果没有这个工具,这个问题是根本没法诊断出来的,接下来我对ADC采样的数据进行软件滤波,消除电位器引起的脉冲性抖动噪声,软件滤波算法采用递推平均滤波算法,把连续取到的10个采样值看成一个队列,每次采样到一个新的数据放入队尾,并扔掉原来队首的一次数据,将队列中的10个数据进行算术平均运算,获得滤波结果。

    加入滤波算法之后再次用波形显示软件观察相同点数据,如图所示,可以看到数据稳定在69.0,变为一条平滑的直线:

    5b9f8dcd255f17de16666ae1ae156c83.png

    最后再观察整个0-5V采样范围内的波形显示,如图所示,波形平滑:

    143dbddd4e4eb2b46ea401eac69a9eae.png

    以上就是我使用该工具的一个典型案例,在嵌入式开发中还有很多的地方可以使用该工具可以帮助我们诊断一些细节问题:
    • 在电赛中使用FDC2214测电容值时;

    • 在项目中测量MQ-2气体传感器数据时,使用该工具可针对性的设计算法,避免误报警;

    • ……

    说了这么多,还没说该工具如何获得,老规矩:

    在公众号『mculover666』回复下面的关键词即可获得安装包:

    串口数据可视化

    更多精彩文章及资源,欢迎关注我的微信公众号:『mculover666』。

    bd6901bf846d391e224e377095d048f6.png
    展开全文
  • 数据读取完毕后,我们要将数据描绘成波形并动态的显示出来。线程读取完Excel表格数据后,发送request信号,触发槽函数showData(),此槽函数首先在chart上初始化前1000个点。connect(&m_thread,&...

    7744a3a45aedaf4f22c8b1f5d0984c10.png

    当数据读取完毕后,我们要将数据描绘成波形并动态的显示出来。线程读取完Excel表格数据后,发送request信号,触发槽函数showData(),此槽函数首先在chart上初始化前1000个点。
    connect(&m_thread, &threadReadData::requestthis, &MainWindow::showData);
    void MainWindow::showData(const QVariant var){//    QList> excel_list;//用于将QVariant转换为Qlist的二维数组    QVariantList varRows=var.toList();    if(varRows.isEmpty())    {        QMessageBox::information(nullptr, "错误", "数据表格为空,\n请重新选择!",                                 QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);        ui->actionOpen->setEnabled(true);        progressBarValue = 0;        ui->progressBar->setValue(progressBarValue);        progressBarTimer.stop();        return;    }    const int row_count = varRows.size();    qDebug()<    ui->labelRows->setNum(row_count);    QString str = QString::number(row_count, 10);    ui->lineEditEnd->setText(str);    ui->lineEditEnd->setEnabled(false);    max_count = row_count;    QVariantList rowData;    excel_list.clear();    for(int i=0;i    {        rowData = varRows[i].toList();        excel_list.push_back(rowData);    }//转换完毕//    qDebug()<    progressBarValue = 100; //数据读取完成,进度条显示100%    ui->checkBoxLP->setEnabled(true);    ui->checkBoxBP->setEnabled(true);    ui->checkBoxHP->setEnabled(true);    m_buffer.reserve(1000);    for (int i = 0; i < 1000; ++i)        m_buffer.append(QPointF(i, 0));    for(int i = 0; i < 1000; i++)    {        m_buffer[i].setY(excel_list.at(i).at(2).toDouble());    }    chartData->m_series->replace(m_buffer);}
    在主函数中建立定时器信号槽机制,由开始按钮触发定时器,当点击按钮时,定时器开始刷新波形。
    connect(&chartDataTimer, &QTimer::timeout, this, &MainWindow::handleTimeout);chartDataTimer.setInterval(mscChanged);
    开始按钮打开定时器函数
    void MainWindow::on_actionStart_triggered(){    ui->actionOpen->setEnabled(false);    ui->actionStart->setEnabled(false);    ui->actionPause->setEnabled(true);    ui->actionStop->setEnabled(false);    ui->actionForward->setEnabled(true);    ui->actionBackward->setEnabled(true);    chartDataTimer.start();}

    定时器触发槽函数handleTimeout(),此函数负责刷新波形,在添加数据点之前要先判断数据是否超出范围,防止数据溢出出现程序崩溃。

    void MainWindow::handleTimeout(){    qreal x = chartData->plotArea().width() / chartData->m_axisX->tickCount();    m_buffer.reserve(100);    if(1000 + 100 * chartDataCount >= max_count - 100)  //防止数据溢出    {        chartDataTimer.stop();        return;    }    for (int i = 1000+100*chartDataCount; i < 1000+100*(chartDataCount+1); ++i)    {        m_buffer.append(QPointF(i, 0));    }    for (int i = 1000+100*chartDataCount; i < 1000+100*(chartDataCount+1); ++i)    {        m_buffer[i].setY(excel_list.at(i).at(2).toDouble());    }    chartData->m_series->replace(m_buffer);    chartData->scroll(x, 0);    QVector inVec(1024);    QVector outVec(1024);    qreal temp[512], mymax, mymin;    for (int i = 0+100*chartDataCount; i < 1024+100*chartDataCount; i++)            inVec[i-100*chartDataCount].rl = excel_list.at(i).at(2).toDouble();    myfft.fft1(inVec, 1024, outVec);    m_bufferFFT.reserve(512);    for (int i = 0; i < 512; i++)    {        m_bufferFFT.append(QPointF(i, 0));        temp[i] = qAbs(outVec[i].rl);    }    mymax = *max_element(temp, temp + 512);    mymin = *min_element(temp, temp + 512);    for(int i = 0; i < 512; i++)    {        m_bufferFFT[i].setY((temp[i] - mymin) / (mymax - mymin));    }    QString _valueLP = ui->lineEditLP->text();    QString _valueHP = ui->lineEditHP->text();    int valueLP = _valueLP.toInt();    int valueHP = _valueHP.toInt();    if(ui->checkBoxLP->isChecked() == true)    {        for(int i = valueLP; i < 512; i++)        {            m_bufferFFT[i].setY(0);        }    }    if(ui->checkBoxBP->isChecked() == true)    {        for(int i = 0; i < valueLP; i++)        {            m_bufferFFT[i].setY(0);        }        for(int i = valueHP; i < 512; i++)        {            m_bufferFFT[i].setY(0);        }    }    if(ui->checkBoxHP->isChecked() == true)    {        for(int i = 0; i < valueHP; i++)        {            m_bufferFFT[i].setY(0);        }    }    m_bufferFFT[0].setY(0); //去除直流分量    chartFFT->m_series->replace(m_bufferFFT);    m_bufferFFT.clear();    chartDataCount++;}

    至此,数据波形的动态显示就完成了。

    efec6887c21286b3826b750b1f2558a9.png

    关注微信公众号 小白技术栈 | lakalako,获取更多的内容,欢迎大家关注哦!

    4e832dbbe927b331b88671bdeed52a27.png

    展开全文
  • 想用python和pyserial做个串口测试软件,用来接收传感器发送过来的串口数据,发现接收到的数据对不上。发现串口助手发送的数据如果小于0x20,就能正确显示出来,超过0x20好像就又重零开始了。例如发送0x20会接收到 b...

    想用python和pyserial做个串口测试软件,用来接收传感器发送过来的串口数据,发现接收到的数据对不上。

    c761babc3e71e6c6befe705ff1b625e7.png

    发现串口助手发送的数据如果小于0x20,就能正确显示出来,超过0x20好像就又重零开始了。例如发送0x20会接收到 b'x00,十分奇怪。

    代码很简单,就是定期检查串口有没有数据,有得话就读出来显示

    1e463aa94c99fe1e859cc59385c237f6.png

    不知道有没有哪位同学有遇到过这种问题的,可否指导以下。谢谢!

    展开全文
  • 串口接收程序框图:串口接收程序框图介绍:当串口状态为真时,调用串口属性节点””,如果串口缓冲区有字节的数据就接收字节的数据。然而,作为测试计量的激励源和显示器,它们一方面体积笨重,使用不方便;另一方面...

    唐山国产myDAQ数据采集卡软件 ejsnb5p

    唐山国产myDAQ数据采集卡软件 .串口接收程序框图:串口接收程序框图介绍:当串口状态为真时,调用串口属性节点””,如果串口缓冲区有字节的数据就接收字节的数据。然而,作为测试计量的激励源和显示器,它们一方面体积笨重,使用不方便;另一方面,价格昂贵,一般电子爱好者和基层工不具备使用条件。拥有一台属于自己的性能良好、使用方便、价格便宜的信发生器和示波器成为许多工的一大愿望。

    247e33f14dbf80d3e7b1a86d7e1f7a89.png

    唐山国产myDAQ数据采集卡软件 车载终端市场需求对于大多数人来说,购买汽车都是为了出行方便,外出办事时耗费在路上的时间。

    但是由于,虽然在满足机器运动控制等方面已经绰绰有余,但在易用性、互操作性、带宽和设备成本上都存在一些不足,是当前大数据和云计算等进入工业控制领域、要求和融合的背景下,不仅要保证大数据传输,而且要保证传输的实时性和确定性,这协议就显得更力不从心。

    在此介绍一种使用方便,能满足一般测试任务要求,基于和计算机声卡的音频段信发生器和双通道数字示波器。系统构成本装置不需要增加额外投入,只要你的机子上装有声卡(是位或更高,输出信噪比较高的中高档数字串口数据处理_串口通信介绍了一个简单的串口通信的机的例子。

    在实际应用过程中,仪器具有更加强大的灵活性。

    d63ed055788abefe7194d886eb9a30ed.png

    单片机不断向串口发送数据。机之显示串口发来的数据。添加上之后前面板会出现在后面板会出现一.在后面板添加一个串口配置的控件接下来对对串口配置控件进行配置.“启用终止符”配置布尔型变量“”,就是取真。

    987cd6b65e0bdf80911630d70fecaa77.png

    唐山国产myDAQ数据采集卡软件 单端有源是典型的有源,具有.的输入电容和Ω的输入电阻。

    .“终止符”我们不对其进行配置,选择默认终止符——“”.’’超时’为其配置的常量.资源名称与“资源名称“控件相连接.波特率这里我们为其配置大小为““的常量.其余各项不进行配置,默认系。

    不要使用按钮来停止程序,隐藏按钮。

    它与编程语言有着诸多相似之处,如相似的数据类型、数据流控制结构、程序调试工具等。但二者的区别在于:编程语言是用文本语言编程,而用图形语言(即各种图标、图形符、连线等)编程。编程简单方便,界面形象直观,具有强大的数据可视化分析和仪器控制能力。

    唐山国产myDAQ数据采集卡软件 仪器软、硬件均采用模块化设计。在名字里包括单位信息。运用这些可以灵活的进行数据分析和处理。

    bde5e0f8563413ba12ba9ac0c6ba8207.png

    有丰富的文件操作函数库,可以方便地进行文件的读写。可以读写文本文件、数据报表文件、二进制文件和测试文件。主程序中从的端读上来的数据需要转换成表格数据进行保存,数据的保存分为两个阶段。

    认真排列控件的位置,使用下拉菜单的排列对象和分配对象。

    f408759a74080203328eb184fdd84e45.png

    如果你正在使用布尔控件来控制两个选项,考虑使用枚举控件来替代,因为以后可能会有更多的选项加入。

    唐山国产myDAQ数据采集卡软件 :普通(标准)触发,必须有满足条件的触发事件才会采样波形;:自动触发,在等待一段时间后,若没有符合条件的触发事件出现,则会强制触发并采样波形;由于触发位置是随机的,往往会导致波形显示不。连线你可以使用在工具条上的下拉菜单来排列分配目标对象在中的对称位置。

    展开全文
  • 最新版本Ver.1.3.3 -新增消息自动回复 -接收数据对中文支持做了近一步优化【下载地址:https://gitee.com/fengmeitech/Micro-Lab】做嵌入式开发的同学都遇到过这种让人欲哭无泪的调试场景:串口数据无法保存或者打开...
  • 采集板与计算机之间存在两种实时数据通道:通过USB-RS232转接串口,波特率为460800通过WiFi-UART模块,波特率为460800,但是实际传输速率要小于460800为了能够利用 STC WiFi下载程序[2] 界面作为接受数据的缓冲界面...
  • 波形调试器目前最大可以存储8GB的调试数据,支持同时持续记录32768个内部信号,硬件加速测试工具读取和显示大规模的数字和模拟波形数据。 · Xilinx版支持Zynq、7系列和UltraScale(+)系列 · Intel版本支持10系列 ...
  • 百度文库下的,不过在我这里下载不要积分
  • ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阈值。ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。1,使用STM3...
  • 校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验数据传送的正确性。就比如传输“A”(01000001)为例。(字符‘A’的二进制是 0100 0001)当为奇数校验:”A”字符的8个bit位中...
  • 【专题教程第6期】SEGGER的J-Scope波形上位机软件,RTT模式波形上传速度可狂飙到500KB/S左右说明:1、在实际项目中,很多时候,我们需要将传感器或者ADC的数值以波形的...2、J-Scope波形显示软件主要有RTT和HSS两种...
  • 暑假在学校里随便找了个实验室打工,被安排了做点关于DSP采集数据的工作。之前一度感觉要做完收工了,但昨天找老师聊天时被告知做的完全没用,有点伤心。原因是我之前打算采用ASCII码的形式来传递数字,但是这样对于...
  • 在新版本中,支持将安卓设备数据转移至苹果设备,下载的应用可以批量同时安装至多台设备,在刷机固件中还增加了特性描述,打开电脑端爱思助手,点击右下角“检查更新”按钮,更新后即可体验更多最新功能。...
  • 串口数据保存、波形显示,TXT数据实时保存,可以保存为Excel格式保存串口数据保存、波形显示,TXT数据实时保存,可以保存为Excel格式保存
  • C# 串口助手波形显示

    2018-01-08 14:01:27
    简单设计的一个基于winform的串口助手,包括了波形显示功能,数据的发送与接收。是当初初学C#时做的一个小东西
  • 串口接收数据,并对数据进行图形化显示串口通信,图形化显示,坐标
  • 通过STM8单片机串口输出三组数据,然后通过串口波形显示软件实时显示单片机输出的数据。这种方法可以在ADC数据采集的时候实时显示数据波形,方便调试。
  • 串口数据采集带波形显示 费了很大的劲才找到 能以文件形式存储数据 并查询以前数据 对技术开发很有用 欢迎下载评论
  • 1、帮助用户调试串口数据,并且把串口数据波形图的形式显示出来。 2、支持接收与发送串口数据。 3、支持波特率:110---921600,支持所有标准的波特率。 4、支持悬浮窗体,让用户可以更加灵活的查看设备状态。 3、...
  • MATLAB;GUI;实时串口数据采集;曲线显示
  • ModBus RTU协议数据接收和串口波形显示,采集自己所需要的数据,可以将数据进行波形显示串口助手用的是win10系统中微软自带的串口助手,波形显示需要升级为专业版,脚本采用JavaScript语言
  • 串口采集数据显示波形显示频率,幅度,绝对的好
  • 可以实现与下位机进行串口通讯,非常简单的一个程序。将串口接收到的数据进行波形显示,适合初学者下载并学习

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 471
精华内容 188
关键字:

串口数据波形显示