之前写了一款串口调试上位机,有很大的功能欠缺,整体感觉十分不爽。这次在原有基础上进行了优化,并且增加了协议帧捕获功能,使用QCustomPlot进行波形绘图的功能,可应用于实时动态绘图。(直男审美,实在不懂UI设计,望吐槽时嘴下留情)

GitHub源码仓库:源码下载

波形界面展示:

左侧是绘图区,右侧为控制区。最大可以显示20条曲线,可对波形、散点、背景、坐标进行设置。

绘图散点功能展示:

右侧 曲线/散点设置 的功能,依次为:隐藏/显示、颜色选择、加粗显示、值显示、线连接方式、散点形状。

每条曲线的颜色、线连接方式、散点形状均可调。线连接方式包括:点、线左对齐、右对齐、居中对齐、平行y轴的高线。

自发自收,波形绘图测试:

百万字节绘图测试:

百万字节接收绘图测试:CPU占用率保持在20%左右(7代i5四核四线程),内存占用随历史接收的增加而增加。

协议帧格式介绍:

协议帧兼容匿名四轴调试上位机,在mainwindow.h中修改宏定义可自定义帧头、功能字。

每帧数据包含 N条绘图波形的一个点,类型为int16,每输入一帧便会在波形界面中绘制出N个点,并且X轴显示坐标加1。连续不断发送便可实时动态绘图。

固定帧头 3A 3B,用于帧起始位置的识别。(默认3A 3B,可在代码中修改)

功能字 01,意义为波形绘图,暂时只定义了这一个有效功能字。

有效字的总字节长度范围为 2~40,只能为偶数,对应着 1~20条曲线。

单个有效字的字节长度为 2Byte,int16类型,由于计算机存储数据时使用补码,手动计算需要转换为补码。

校验和为此帧前面所有数据的累加,取末位的1字节,做校验和。校验比对正确则进行绘图,不正确则误码数量加1。

例1,包含2条波形:

3A 3B 01 04 FF 38 13 14 D8(16进制显示)
3A 3B 01 04 FF 38 13 14 D8
固定帧头 功能字 有效字的总长度,4 第1有效字,-200的补码 第2有效字,4884的补码 校验和

例2,包含20条波形:

3A 3B 01 28 00 C8 01 90 02 58 03 20 03 E8 04 B0 05 78 06 40 07 08 07 D0 FF 38 FE 70 FD A8 FC E0 FC 18 FB 50 FA 88 F9 C0 F8 F8 F8 30 94(16进制显示)
3A 3B 01 28 00 C8 01 90 02 58 03 20 03 E8 04 B0 05 78 06 40 07 08 07 D0 FF 38 FE 70 FD A8 FC E0 FC 18 FB 50 FA 88 F9 C0 F8 F8 F8 30 94
固定帧头 功能字 有效字的总长度,40 200的补码 400 600 800 1000 1200 1400 1600 1800 2000 -200 -400 -600 -800 -1000 -1200 -1400 -1600 -1800 -2000 校验和

补码计算器:补码在线计算

详细功能介绍:

自动扫描可用串口端口,同时显示端口硬件信息(无须再查看设备管理器,方便选择),波特率可手动输入。

发送/接收字节、速率统计、帧统计、误码统计。

接收区每2000字节强制换行,避免一行的内容太多,导致CPU占用过高从而卡顿,已测试过累计千万字节不卡顿。(仅仅是在接收显示里加换行,实际的真实数据不受影响)

支持中文收发,默认GB2312编码,如需Unicode/UTF8/UTF16需要更改代码。(单片机中文编码大多使用GB2312,占用空间小)

收/发区,无缝16进制转换,GB2312中文不乱码。输入框可作为转换框,无须在计算后重复输入。

增加帧捕获功能,用户可自定义修改两字节的帧头,帧协议兼容匿名四轴调试上位机。

增加捕获帧调试界面,方便调试。

波形绘图最多可显示20条曲线。曲线连接方式,颜色、散点形状可任意设置。可隐藏,可加粗显示。

曲线连接方式支持:点、线连接、左台阶、右台阶、居中台阶、纵值绘图。

波形散点形状支持:x形、+形、空心圆、实心圆、矩形、菱形、星形、正三角、倒三角、x框、+框、x圆、+圆、和平。

动态绘图支持: X轴自动跟随、Y轴范围自适应。

图页显示范围可在右下角手动输入调整。

支持滚轮Y轴缩放、左键拖拽、单击曲线加粗显示,不支持拖拽缩放。

未完善功能:

(对体验影响不大,更新要等到猴年马月了)

曲线值显示。跟随鼠标显示,波形名称显示。

QSetting记录用户设置。

波形名称可点击修改。

保存数据为txt/excel。

GitHub源码仓库:源码下载

【Qt串口波形绘图】基于QCustomPlot的串口波形绘图上位机,源码开放相关推荐

  1. FPGA驱动FT601实现USB3.0相机 OV5640视频采集 提供2套工程源码和QT上位机源码

    目录 1.前言 2.FT601芯片解读和时序分析 FT601功能和硬件电路 FT601读时序解读 FT601写时序解读 3.我这儿的 FT601 USB3.0通信方案 4.vivado工程1--彩条视 ...

  2. FPGA驱动FT601实现USB3.0相机HDMI视频采集 提供工程源码和QT上位机源码

    目录 1.前言 2.FT601芯片解读和时序分析 FT601功能和硬件电路 FT601读时序解读 FT601写时序解读 3.我这儿的 FT601 USB3.0通信方案 4.详细设计方案 5.vivad ...

  3. QT上位机源码+STM32图像采集

    QT上位机源码+STM32图像采集 ID:6915673042556427

  4. 开源一个串口上位机源码

    是杰杰之前做的 一个参赛小作品 其实在做这个恒温控制系统项目的时候,师弟就问我,什么是上位机.....可能很多师弟师妹都没一个大概的概念. 现在,就来看下什么是上位机: 上位机是指可以直接发出操控命令 ...

  5. Qt6串口多功能助手64位版本上位机源码

    开发平台:Qt 6.3 编译环境:MinGW 11.2.0  64bit 源码免费下载方式在文末!部分功能参照源码学习使用! 一.继承QSerialPort类创建子类Serial(serial.h) ...

  6. 基于RYU应用开发之负载均衡(源码开放)

    为什么80%的码农都做不了架构师?>>>    编者按:本文介绍的是如何在RYU上通过使用select group 来实现multipath,从而实现流量的调度,完成简单的负载均衡D ...

  7. python可见图算法_基于自适应显着性的图像分割(源码开放)

    点击上方"小白学视觉",选择"星标"公众号 重磅干货,第一时间送达 本文介绍算法的源码在github上给出 https://github.com/TimChin ...

  8. 【QT/C++】基于QT开发的一款A-SOUL元素的视频播放器(附源码)

    [QT/C++]基于QT开发的一款关于A-SOUL的视频播放器(附源码) 前言 一.软件使用说明 1.运行软件的界面如下 2.操作软件的步骤 二.软件设计说明 1.UI界面的设计 2.主代码中的部分函 ...

  9. 通过串口通讯实现LabWindows/CVI对GDM-906X万用表的上位机控制

    前言:本篇介绍了如何通过串口通讯实现对GDM-906X万用表的上位机控制,由于小明还在对LabWindows/CVI的学习阶段,只是实现了对AC/DC电压电流和电阻的测量. 界面演示: 一.创建uir ...

  10. Modbus RTU 51单片机从机源码与组态软件通信支持485和232串口通信,该从机源码可直接用于51系列和STC12系列单片机的

    Modbus RTU 51单片机从机源码与组态软件通信支持485和232串口通信,该从机源码可直接用于51系列和STC12系列单片机的,支持功能码01,02,03,04,05,06,0F,10等常用功 ...

最新文章

  1. 如何成为一个合格的项目经理?
  2. PHP函数库之BC高精确度函数库
  3. 中国工程院院士:物联网市场须走出碎片化
  4. awstats+jawstats自动分析日志
  5. Visual Paradigm(一)简介和软件初步
  6. 仅用38天 2021年快递业务量已超100亿件
  7. c语言单链表功能,[数据结构]单链表(C语言)的各种功能
  8. google浏览器不能登录
  9. asp.net 中http协议及相关知识(零碎知识记录)
  10. 证明n次根号下n阶乘等价于n/e
  11. BAT批处理自动安装软件
  12. 0xc0150002(0xc0150002一键修复win10)
  13. 全外显子测序(WES)由入门到精通记录
  14. LM2596电源模块原理图及PCB分享
  15. linux网络端口失效( Device eth0 does not seem to be present,delaying initialization)解决方法
  16. kappa一致性检验教程_Kappa一致性分析
  17. 【jQuery】jQuery本地时间与世界时间时差转换
  18. 第五章 整合视图层技术
  19. 经验分享:移动客户端设计开发经验-流程篇
  20. 云原生|kubernetes |一文带你搞懂pod调度策略,驱逐策略,污点、容忍调度

热门文章

  1. MAC下安装xgboost
  2. html中的a标签、img标签、iframe标签、列表标签
  3. jvm堆内存设置原理
  4. AngularJS 技术总结
  5. 杂笔,Objective-C的认知
  6. SQL SERVER 用户自定义函数如何定义.
  7. 『商务口语』2010.01.11--你要在这里停留多久?
  8. SwiftUI 打开高德地图
  9. 【网络信息安全】鉴别和密钥分配协议
  10. 1月份Github上热门Python开源项目