精华内容
下载资源
问答
  • 代码基于stm32f103c8t6,通过串口将数据发送到匿名上位机,并将数据波形显示出来,方便调试参数。
  • 通过串口接收数据,将数据通过波形显示串口可自动识别串口号。 使用ZedGraph控件。每个通道可单独隐藏。 线宽可调整。
  • 串口波形上位机

    2014-08-14 16:40:16
    上传一款好用的电脑波形上位机,通过串口发送数据,然后再电脑端显示数据波形(文件内包含上位机串口通讯协议,以及使用代码,在stm32上亲测好用)
  • 串口上位机

    2015-04-26 16:06:47
    C#语音开发的波形显示上位机,用于串口接收和发送数据,简易的代码很具有参考价值,可移植性较强
  • 串口 上位机 PID 调试

    2018-05-10 20:39:37
    串口 上位机 PID 调试 通过串口接收单片机发送的pid数据,并通过波形显示pid,便于使用者直观调pid。
  • C# WinForm写的简单串口助手及波形显示
  • 通常的解决办法是用串口上位机,USB接口上位机或者MDK的逻辑分析仪功能,使用这三种方式都比较繁琐。本期专题为大家讲解的J-Scope波形软件简单易用。2、J-Scope波形显示软件主要有RTT和HSS两种...

    【专题教程第6期】SEGGER的J-Scope波形上位机软件,RTT模式波形上传速度可狂飙到500KB/S左右

    说明:

    1、在实际项目中,很多时候,我们需要将传感器或者ADC的数值以波形的形式显示。通常的解决办法是用串口上位机,USB接口上位机或者MDK的逻辑分析仪功能,使用这三种方式都比较繁琐。本期专题为大家讲解的J-Scope波形软件简单易用。

    2、J-Scope波形显示软件主要有RTT和HSS两种工作方式。本期专题教程为大家讲解RTT模式的使用方法。RTT模式的波形显示速度非常快,而且随时随地都可以连接目标板,不影响目标板的正常功能,不需要额外资源。同时可以设置上升沿,下降沿或者双沿触发。

    3、大家买的D版JLINK,基本都是来自JLINK BASE,需要使用V9或者V10版本才行。而JLINK PRO或者JLINK ULTRA使用V4及其以上版本即可。

    4、J-Scope专题教程的HSS模式已经在第4期专题教程做了讲解。

    5、更多相关内容和注意事项,看教程即可。

    3a1e6b6509ed8f882dde10b19a20b133.gif

    专题教程下载:

    专题教程第6期:J-Scope波形软件使用方法(下)V1.1.pdf (1.35MB)

    J-Scope下载:

    Setup_JScope_V611m.exe (2.08MB)

    配套例子(含MDK和IAR):

    STM32F103ZET6开发板:

    V4-J-Scope波形软件之RTT模式.7z (957.59KB)

    STM32F407IGT6开发板:

    V5-J-Scope波形软件之RTT模式.7z (2.11MB)

    STM32F429BIT6开发板:

    V6-J-Scope波形软件之RTT模式.7z (3.06MB)

    教程目录:

    f3ce93a85d819e612bd67d255c13953e.png

    RTT的GIF图片效果:

    未设置触发,200KHz上传速度,16位数据,速度对应400KB/S(上传速度在右下角)。

    9f1355c9cc6cfc1bb5b7b8729d3109ca.png

    设置触发,200KHz上传速度,16位数据,速度对应400KB/S(上传速度在右下角)。

    5da4b92f8f724f80f786b5747b872447.png

    再来一张动态调整的效果:

    a361a302525dfd01381ad2c2dbaf2596.gif
    展开全文
  • 开源一款基于Qt的串口波形显示上位机 & 以“笔”会友写在前面简要介绍基本界面功能简介开源地址最后的说明 写在前面 大家好!我是大学里一枚菜鸡在读本科生。这是我第一次在CSDN上发博客,我想开源一个我近几日...

    开源一款基于Qt的串口波形显示上位机 & 以“笔”会友

    写在前面

    大家好!我是大学里一枚菜鸡在读本科生。这是我第一次在CSDN上发博客,我想开源一个我近几日编写的一个基于Qt的串口波形显示上位机 ,这个上位机参考了一些Qt官方的example代码,也在一些琐碎的地方结合了一些网上大神网友的新奇思路。之所以开源这个东西,是想以此为“敲门砖”,在网上寻找和我一样对Qt&嵌入式&编程 等等感兴趣的志同道合的朋友,然后在以后的学习、工作和生活中多多交流、互相帮助。当然,由于本人水平及其有限,因此代码不仅显得拙劣不堪,甚至可能漏洞百出,因此如果可能的话,我希望诸君在取阅之后能指点一二

    简要介绍

    基本界面

    波形显示界面
    基本收发界面

    功能简介

    1.Qt上位机,由串口完成数据通信,分为波形显示面板、基本收发面板和位于底部的串口状态信息面板三部分构成。
    2.串口状态信息面板可选择端口(COM口)及波特率,刷新按钮用于检测此时计算机的所有串口并更新,打开按钮用于
    打开和关闭串口。RX与TX标签显示串口通信的收发字节数,也可用于判断串口通信是否正在进行,而LineEdit为系统控制辅助显示。
    3.基本收发面板用于基本的数据接收,支持发送与接收的ASCII(其实是GBK)与HEX形式发送,对应的按钮功能“顾名思义”即可。特别地,发送框中按下[Ctrl]+[Enter]可快速发送。
    4.波形显示面板用于图形化显示下位机发送来的参数,最多支持20个变量的显示,且变量类型均应为float(IEEE754标准)。
    5.单击波形显示面板“变量”区的各变量名可设置各个变量显示与否,下方的LineEdit用于显示对应变量在当前光标下的实时值(如无光标则默认显示最新值)。
    6.波形显示面板“控制”区的各控件功能“顾名思义”即可,其中“截图”和“保存数据”会在当前程序目录下新建“/SavedData”和“/SavedImage”文件夹。
    7.波形显示面板“控制”区的“设置”按钮会弹出设置框,在该设置框的设置应用后,会自动记录到ini文件中,作为下次程序启动的参数信息。

    开源地址

    点击这里进入Github地址
    打算在没有人加入更新的情况下就在2019年9月1日前删除上述地址。

    最后的说明

    1.要想测试波形画的效果,请在下位机编写相应程序或者直接导入我所给出下载地址的 ./SavedData/ 文件夹下我预存的数据文件,那是我在编程测试的时候留下的一个数据。
    2. 第一次发布源码和写博客,文笔拙劣,并且有很多东西没有说清楚,所以,还是希望诸君主动联系。可以联系Leowootsi@outlook.com.

    展开全文
  • 开源QT写的串口调试上位机(带波形显示

    万次阅读 热门讨论 2014-11-23 19:08:36
    为了方便PC机同单片机(下位机)进行通信,需要开发一款基于串口协议的上位机辅助调试软件。软件不仅能够向下位机发送数据,发送指令进而控制下位机,而且还应该能准确接收下位机发来的数据,便于对下位机的一些...

    为了方便PC机同单片机(下位机)进行通信,需要开发一款基于串口协议的上位机辅助调试软件。软件不仅能够向下位机发送数据,发送指令进而控制下位机,而且还应该能准确接收下位机发来的数据,便于对下位机的一些传感器采集的信号进行分析。

    首先,在考虑到单片机跟PC机通信的问题时,一般的解决方案是通过一根串口线,通过UART协议实现上位机和单片机的通信,但是这样只能进行一些数据的接收.比如在进行AD采集时,陀螺仪和加速度传感器的采集回来的信号不能很好的用上位机软件进行显示,必须先把数据存储到硬盘,再通过matlab实现数据的缩放,波形的显示分析。这样处理起来比较浪费时间。

    其次,在完成前面一系列的硬件电路搭建,驱动编写,调试,以及后面的软件算法初步整定后,又遇到了新的问题。由于我们所在的组别需要实现两轮直立行走的可循迹的智能车,中间涉及到的参数比较多,调试起来很困难,最开始比较笨,也是比较常规的方法是每改动一遍程序,就重新烧录一次程序,这个过程相对起来时比较慢的。最后想到利用单片机的串口中断实现对智能车行进过程中的参数动态整定。

    最后,通过无线串口实现上位机和单片机的通信。由于自己比较熟悉QT,于是就用QT开发了SerialPort这款串口调试工具。

    (1)开发工具介绍


    Qt Creator 是 Qt 被 Nokia 收购后推出的一款新的轻量级集成开发环境(IDE)。此 IDE 能够跨平台运行,支持的系统包括 Linux(32位及64 位)、MacOS X 以及 Windows。根据官方描述,QtCreator 的设计目标是使开发人员能够利用 Qt 这个应用程序框架更加快速及轻易的完成开发任务。

    在功能方面,Qt Creator 包括项目生成向导、高级的 C++ 代码编辑器、浏览文件及类的工具、集成了Qt Designer、图形化的 GDB 调试前端,集成qmake 构建工具等。

    IAR System是全球领先的嵌入式系统开发工具和服务的供应商。公司成立于1983年,迄今已有27年,提供的产品和服务涉及到嵌入式系统的设计、开发和测试的每一个阶段,包括:带有C/C++编译器和调试器的集成开发环境(IDE)、实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。

    (2)实现功能

    1).可以实时接收显示数据,同时也可以向单片机发送数据;2).可以读取文件中数据,不断发送给下位机;

    3).可以实时的显示波形;并通过一些软件算法对采集的信号进行滤波;

    4).可以对智能车所涉及的直立控制模块,速度控制模块,方向控制模块中的7个参数进行在线调试;当然,如需更多的参数,下位机程序需进行相应的修改。

    (3)软件主界面,如下图:


    (4).软件波形显示界面


    (5).QT编写程序时的相关代码截图:


    (6).自动定时发送数据给下位机:


    (7)加载数据文件进行显示,并可以通过相应的滤波算法对数据进行处理:



    github链接:https://github.com/zhouguangfu09/SerialPortQT.git



    展开全文
  • 一.简介 最近粗略地学习了一下上位机的编程,大致了解了底层硬件与上位机之间的串口通信逻辑,TCP通信和UDP通信暂时还未学习。 ...2.波形显示界面 三.QT软件下载 下载地址:清华镜像网 ★按以下

    一.简介

    最近粗略地学习了一下上位机的编程,大致了解了底层硬件与上位机之间的串口通信逻辑,TCP通信和UDP通信暂时还未学习。

    本次把学习思路分享一下,主要学习视频是b站上北京迅为的QT教学视频,我的笔记也是在此基础上总结出来。很多细节在视频中已经介绍,篇幅有限,仅分享大致流程。

    源码附在文章最后,希望和各位多多交流。

    视频链接:【北京迅为】嵌入式学习之QT学习篇
    同时分享一篇很好的相关博客:开源一款基于Qt的串口波形显示上位机 & 以“笔”会友

    二.界面展示

    界面制作较为简陋,代码也较为粗糙,多多包涵。

    1.基础界面:

    在这里插入图片描述

    2.波形显示界面

    在这里插入图片描述

    三.QT软件下载

    下载地址:清华镜像网

    ★按以下步骤依次点开:在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    选择需要下载的版本,以v5.12.1为例:
    在这里插入图片描述
    在这里插入图片描述
    下载windows版本:
    在这里插入图片描述
    安装教程视频中有详细介绍。唯一需要改变的是
    在选择安装组件时多勾选一个,用于后面的波形显示:
    在这里插入图片描述

    四.创建工程

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    五.工程文件结构

    在这里插入图片描述

    六.串口基本收发编写

    注意:对于新手,请务必看完视频的基础教程再继续浏览,后续不包含基础教学,只提及一些学习过程中的难点和关键点。
    串口的打开和普通的数据收发在迅飞的视频中均有介绍,在此不做过多讲解。

    1.十六进制与字符之间的转换发送/接收

    /************************发送数据按钮槽函数************************/
    void Widget::on_sendBt_clicked()
    {
        //将发送栏的数据输出
        long long a=0;
        //字符串形式
        if(ui->is16SendQch->checkState() == false)
        {
            a=serialPort->write(ui->lineEdit->text().toLocal8Bit().data());
        }
        else    //16进制发送(将16进制转换成Ascll码对应的字符发送)
        {
            a=serialPort->write(QByteArray::fromHex(ui->lineEdit->text().toUtf8()).data()); //16进制数据解码后发送
        }
        //如果发送成功,a获取发送的字节长度,发送失败则返回-1;
    
        if(a > 0)
        {
            sendNum += a;
            set_num_on_label(ui->sendLbl,"S:", sendNum);	//显示发送的数据量
        }
    }
    
    connect(serialPort, SIGNAL(readyRead()), this, SLOT(serialPortReadyRead_Slot()));
    //把接收数据信号与接收槽函数关联,加在构造函数中。
    /************************接收数据槽函数,需要手动关联************************/
    void Widget::serialPortReadyRead_Slot()
    {
        QString buf;
        QByteArray recBuf;
        int bufNum;
        uint8_t checkNum=0;   //计算校验码
    
        //读取所有字节
        recBuf=serialPort->readAll();
        //接收字节计数
        recvNum += recBuf.size();
    
        if(ui->is16RecvQch->checkState() == false)  //不使用16进制接收
        {
            buf = QString(recBuf);
        }
        else
        {
            buf = QString(recBuf).toUtf8().toHex();     //转成16进制
    
            //每个16进制数据之间用空格分隔
            bufNum = buf.length();
            while(bufNum-2 > 0)
            {
                bufNum = bufNum - 2;
                buf.insert(bufNum," ");
            }
        }
        ui->plainTextEdit->insertPlainText(buf);         //把接收到的数据显示到接收栏上
        ui->plainTextEdit->moveCursor(QTextCursor::End); //光标设置,确保滚轮滚动
    
        //状态栏显示接收数据量
        set_num_on_label(ui->recvLbl, "R:", recvNum);
    }
    

    2.以16进制/字符发送切换(接收暂未编程)

    /************************字符串/16进制发送切换槽函数************************/
    void Widget::on_is16SendQch_stateChanged()
    {
        QString str;
        int strNum;
    
        if(ui->is16SendQch->checkState() == false)  //转成字符串
        {
            ui->lineEdit->setText(QByteArray::fromHex(ui->lineEdit->text().toUtf8()).data());   //解码16进制
        }
        else    //转成16进制
        {
            str=ui->lineEdit->text().toUtf8().toHex().data();
    
            //每个16进制数据之间用空格分隔
            strNum = str.length();
            while(strNum-2 > 0)
            {
                strNum = strNum - 2;
                str.insert(strNum," ");
            }
    
            ui->lineEdit->setText(str);
        }
    }
    

    该代码实现当切换16进制/字符发送时,发送框内的数据会自动转换:
    在这里插入图片描述
    在这里插入图片描述

    3.定时发送

    connect(&timer,SIGNAL(timeout()),this,SLOT(on_sendBt_clicked())); 
    //把定时器溢出信号与串口发送槽函数关联,加在构造函数中。
    /************************定时发送开始/关闭槽函数************************/
    void Widget::on_timeSendQch_stateChanged()
    {
        long counter;
        if(ui->timeSendQch->checkState() == false)  //定时发送关闭
        {
            timer.stop();       //关闭定时器
        }
        else    //定时发送打开
        {
            counter = (ui->timeSendQl->text()).toLong();    //转换成长整型
            if(counter>0 && ui->lineEdit->text() != "" && isSerialConnect == true)     //定时时间需大于0ms且发送栏须有字符,否则关闭
            {
                timer.start(counter);   //打开定时器,单位ms
            }
            else
            {
                timer.stop();   //关闭定时器
            }
        }
    }
    

    使用展示:
    在这里插入图片描述

    七.波形显示

    在这里插入图片描述
    上图是由测试数据直接显示,基本没有问题。但是根据接收数据进行实时绘制会出现问题。

    1.示波器显示可以最多两个通道;
    2.可以控制波形显示的更新与暂停,以及波形1/波形2是否显示。
    3.与匿名上位机等类似,需要使用特定的帧格式。
    4.显示主题可以切换。
    5.仍存在一些未解决的BUG(文章最后会提到)。
    6.代码中包含测试波形的程序。

    波形显示基础界面借鉴了下面这篇博客,博客中博主也分享了源码:
    QtChart——简单的动态波形图

    1.波形数据接收并判断

    在之前的就收槽函数中,加入了后面一部分波形数据的接收判断。

    /************************接收数据槽函数,需要手动关联************************/
    void Widget::serialPortReadyRead_Slot()
    {
        QString buf;
        QByteArray recBuf;
        int bufNum;
        uint8_t checkNum=0;   //计算校验码
    
        //读取所有字节
        recBuf=serialPort->readAll();
        //接收字节计数
        recvNum += recBuf.size();
    
        if(ui->is16RecvQch->checkState() == false)  //不使用16进制接收
        {
            buf = QString(recBuf);
        }
        else
        {
            buf = QString(recBuf).toUtf8().toHex();     //转成16进制
    
            //每个16进制数据之间用空格分隔
            bufNum = buf.length();
            while(bufNum-2 > 0)
            {
                bufNum = bufNum - 2;
                buf.insert(bufNum," ");
            }
        }
        ui->plainTextEdit->insertPlainText(buf);         //把接收到的数据显示到接收栏上
        ui->plainTextEdit->moveCursor(QTextCursor::End); //光标设置,确保滚轮滚动
    
        //状态栏显示计数值
        set_num_on_label(ui->recvLbl, "R:", recvNum);
    
        if(wa->isHidden() == false &&                   //界面打开后才进行波形显示
           static_cast<uint8_t>(recBuf[0]) == 0xAA &&   //同时要保证帧头和地址正确
           static_cast<uint8_t>(recBuf[1]) == 0xCC)
        {
            //计算校验位
            for(uint8_t i=3;i<7;i++)
                checkNum += recBuf[i];
    
            if(checkNum == static_cast<uint8_t>(recBuf[7])) //校验位正确
            {
                //数据类型转换并转移到Ware的属性中
                wa->head    = static_cast<uint8_t>(recBuf[0]);
                wa->address = static_cast<uint8_t>(recBuf[1]);
                wa->length  = static_cast<uint8_t>(recBuf[2]);
                wa->ware1   = static_cast<uint8_t>(recBuf[3])*256+static_cast<uint8_t>(recBuf[4]);
                wa->ware2   = static_cast<uint8_t>(recBuf[5])*256+static_cast<uint8_t>(recBuf[6]);
                wa->check   = static_cast<uint8_t>(recBuf[7]);
                wa->isValid = true;
            }
            else
            {
                wa->isValid = false;
            }
            wa->serial_updata_data(wa->isValid);   //波形绘制
        }
    }
    

    2.使用波形测试数据时需要如下调整

    1.去除下列注释符号:
    Ware::Ware(QWidget *parent)
    {
    	//timer->setInterval(50); //定时50ms
    	//timer->start();
    }
    
    void Ware::init_slot()
    {
    	//connect(timer, SIGNAL(timeout()), this, SLOT(timerSlot())); //定时器溢出信号
    }
    
    2.把下述代码用注释代码替换
    void Ware::update_data()
    {
    	//double dataY1,dataY2;
    	int16_t dataY1,dataY2;
    	
    	//获取波形数据
    	//dataY1 = 10 * sin(M_PI * count * 4 / 180);   //获取新数据
    	//dataY2 = 10 * cos(M_PI * count * 4 / 180);
    	dataY1 = ware1;
    	dataY2 = ware2;
    }
    

    其余代码直接下载源码查看。

    八.打包与部署(生成.exe文件)

    1.把工程切换到release模式,然后编译。

    在这里插入图片描述

    2.找到release模式构建的文件夹

    在这里插入图片描述

    3.把图标文件添加到工程文件夹下,从而更换.exe文件的图标。(图标格式必须为.ico这个格式的)

    在这里插入图片描述
    然后在.pro文件中添加如下代码:
    在这里插入图片描述
    ★USB.ico为图片文件名称。

    4.使用QT的工作台进行封包的操作

    (1).直接通过windows的搜索功能找到QT工作台:
    在这里插入图片描述
    (2).然后在电脑桌面上建立新的文件夹(注意:文件夹名称不能出现中文
    再把工程文件中的.exe文件复制到新文件夹中。

    (3).接着在QT工作台中输入:cd /d C:\Users\pc\Desktop\serial tools(后面为新建的文件夹路径)进入文件夹。
    在这里插入图片描述
    (4).然后输入:windeployqt serial.exe进行封包:
    在这里插入图片描述
    (5).封包结束后即可在文件夹中看到应用文件,双击即可使用。
    在这里插入图片描述

    九.待解决的问题

    1.接收数据的波形数据高8位/低8位不能为0,否则无法正常显示波形;
    2.使用测试数据进行波形绘制时不会卡顿;但是,当使用接收的数据进行波形绘制时,接收的数据量变大后容易卡顿,只有清除串口接收界面的数据才可以缓解;
    3.鼠标移动可能会引起波形绘制错误。

    十.源码分享

    基于QT的串口收发和波形绘制上位机程序

    展开全文
  • 附件内容分享的是基于LabVIEW上位机串口通信,通过LabVIEW上位机显示波形,在分享其实现的源码同时,分享一段LabVIEW上位机串口通信工作原理。基于LabVIEW的串口波形上位机界面展示:定义通信格式及功能因为数据...
  • stm32用匿名上位机V65串口通信,数据用波形显示,便于观察,单片机stm32C8T6,可移植,stm32用匿名上位机串口通信,数据用波形显示,便于观察,单片机stm32C8T6,可移植
  • 首先添加两个文件到自己的工程,放在arduion的libraries里面,网盘链接链接:https://pan.baidu.com/s/1iyk-d83fVJ59Gab-RsZiGQ 提取码:hty3 红色框这里要修改成wirte这个函数,其他函数不行,默认已经修改和...
  • 一个单片机的串口上位机工程文件;注释详细,可自行修改代码获得个性化的上位机;使用VS2012;有三个调参通道,三个可选波形显示通道。根据需求可以自己模仿增加通道。
  • 之前写了一款串口调试上位机,有很大的功能欠缺,整体感觉十分不爽。这次在原有基础上进行了优化,并且增加了协议帧捕获功能,使用QCustomPlot进行波形绘图的功能,可应用于实时动态绘图。(直男审美,实在不懂UI...
  • 此软件为上位机波形显示,集成串口助手的所有功能,并能够进行波形显示,显示速度要在源文件里调
  • 附件内容分享的是基于LabVIEW上位机串口通信,通过LabVIEW上位机显示波形,在分享其实现的源码同时,分享一段LabVIEW上位机串口通信工作原理。 基于LabVIEW的串口波形上位机界面展示: 定义通信格式及功能 因为...
  • 匿名科创地面站v4.34
  • 功能:C#开发的上位机波形软件,双通道,串口数据上传,10位AD采样,分高八位,第八位。即,串口4字节发送数据。
  • 处理完成后将信号通过与STM32串口连接的蓝牙模块传输到上位机中,同时信号波形显示在与STM32连接的OLED显示模块上并计算出此时人体的心率数据,当上位机接收到信号后对信号进行SG平滑滤波,最终处理完的信号可以通过...
  • 一共分为三个m文件,需要注意的是在ARM上的ADC采集数据要尽量高一点。... hold on %这一句经测试是必要的,没有这句的话~波形显示的句柄好像无法调用 global t; global x; global m; global i...
  • LabVIEW实现接受串口数据并绘制波形上位机

    千次阅读 多人点赞 2019-10-29 22:57:18
    最近学LabVIEW的时候,用LabVIEW搭建了一个可以接受串口数据并显示波形上位机,在这里分享一下。 有需要的朋友可以在下面这个链接下载: 『上位机链接』 串口连接到电脑上后,会在设备中显示出来 『设备图』 我们...
  • 关于c#的上位机记录 第一部分(包含完整普通串口助手及单条波形实时显示) 适合新手 串口实时显示 鼠标滚动放缩 shift
  • C#串口通信上位机(含源代码),接收HEX和ASCII码可设置,并有仪表显示,波形显示

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 276
精华内容 110
关键字:

串口上位机波形显示