如何实现用串口助手实时绘制16位数据波形图

2023-05-16

先和大家kuan两句,哈哈。因为之前参加智能车想用波形显示来调节PID,找了很多工具也没有成功,心里也知道串口一次就是只能发送八位数据,很多时候可以用字符显示16位的,但是就不是数据,而是字符串,字符串和数据最大的不同应该在于是否能计算的差别吧,所以字符串肯定是不能用图形表示的。之后看到山外这款串口助手虚拟示波器“类型”中明明有无符号16位的,但是查了很多资料都没有发送16位数据的代码,也在其中放弃过找寻其他的软件,但是心里又一直坚信着这款软件的功能应该不会骗我的,哈哈,就试了几次代码,发现终于成功了。哈哈,挺开心的吧,自己一直相信的事情实现了,好啦不多说上正题!

1.工具:山外多功能调试助手

软件界面如图:
(软件非原创,下文的代码只能说是对于这个软件功能的扩展和补充)
(界面直观,非常友好~,哈哈)
在这里插入图片描述

2.代码:

这里用虚拟示波器画出图形是有协议的,如代码中一样,先发送前命令{0x03,0xFC};之后即发送对应的数据,以无符号 16 位为例,是先发送低八位,再发送高八位,其他的数据类型也是如此,由低八位到高八位发送数据,如 virtual_Osc_send_data 函数,当然,同时绘制多条波形图也是在这里,即用循环控制发送不同数组就 OK,如 virtual_Osc_send_array 函数;最后发送后命令{0xFC,0x03},代表数据发送完成。
即发送格式:
前命令{0x03,0xFC}+由低 8 位依次到高 8 位的数据+后命令{0xFC,0x03}。
(供大家参考,拿走不谢噢~)

/*
功能:串口值用山外虚拟示波器绘图出来,支持16位数据等
说明:串口发送函数依照不同的单片机而定;
      数据类型由自己宏定义,包括无符号整型和无符号字符型
*/
#define uint  unsigned int
#define uchar unsigned char

/**********************************************
函数功能:串口发送单个字节函数
函数参数:value:发送的单字节数据
注意:需要自己填充使用的串口发送函数以及串口号
**********************************************/
void  UART_PutChar(uchar value)
{
   //留给各位程序员们自己的操作空间。这里由于每个芯片封装的库函数名以及串口号不一样,我这里就不写了,大家自己根据实际情况移植过来就好
}

/**************************************
函数功能:将数据用虚拟示波器表示出来
函数参数:所要发送的值
**************************************/
void virtual_osc_send_data(uint value)
{
   uchar value_h,value_l;
   uchar cmdf[2] = {0x03,0xFC};    //串口调试 使用的前命令
   uchar cmdr[2] = {0xFC,0x03};    //串口调试 使用的后命令
   UART_PutChar(cmdf[0]);		 //发送前命令,代表开始虚拟示波器的数据
   UART_PutChar(cmdf[1]);  
   
   value_l=value%256;  //低八位
   value_h=value/256;  //高八位
   UART_PutChar(value_l);      //发送低八位
   UART_PutChar(value_h);      //发送高八位
   
   UART_PutChar(cmdr[0]);		//发送后命令,代表结束虚拟示波器的数据
   UART_PutChar(cmdr[1]);
}

/**************************************************
函数功能:将多个数组数据同时用虚拟示波器的图形表示出来
函数参数:array:所要发送的数组,最多支持8个数组
            len: 所发数组的长度,不得大于8
**************************************************/
void virtual_osc_send_array(uint *array,uchar len)
{
   uchar value_h[8],value_l[8],i;
   uchar cmdf[2] = {0x03,0xFC};    //串口调试 使用的前命令
   uchar cmdr[2] = {0xFC,0x03};    //串口调试 使用的后命令
   UART_PutChar(cmdf[0]);
   UART_PutChar(cmdf[1]);
   for(i=0;i<len;i++)
   {
      value_l[i]=array[i]%256;  //低八位
   	  value_h[i]=array[i]/256;  //高八位
      UART_PutChar(value_l[i]);      //发送低八位
      UART_PutChar(value_h[i]);      //发送高八位
   }
   UART_PutChar(cmdr[0]);		//发送后命令
   UART_PutChar(cmdr[1]);
}

/*************************************
函数功能:一个简单的调用函数测试用
*************************************/
void virtual_Osc_Test(void)
{
    unsigned int MICVmin[8];           
	while(1)
	{
		MICVmin[0]=ADC_Read(ADC0);
		MICVmin[1]=ADC_Read(ADC1);
		MICVmin[2]=ADC_Read(ADC2);
		MICVmin[3]=ADC_Read(ADC3);
		MICVmin[4]=ADC_Read(ADC4);
		MICVmin[5]=ADC_Read(ADC5);
		MICVmin[6]=ADC_Read(ADC6);
		MICVmin[7]=ADC_Read(ADC7);
		virtual_osc_send_array(MICVmin,8);
	}
}

3.说明:

(这里也要细心噢~)
定义了同时发送的数组个数以及数据类型要和软件对应,比如同时发送8个数组,发送的数据类型为无符号16位数,即如图设置:
在这里插入图片描述

4.运行效果:

(当当当 当~,这不就出来啦)
在这里插入图片描述

5.现在我们就可以愉快地用串口发送数据用图形表示出来啦~

软件获取:
1.关注公众号“脑补空间”发送“山外助手”即可获取网盘链接~
2.直接下载我的资源:https://download.csdn.net/download/weixin_46582567/76124961?spm=1001.2014.3001.5503
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何实现用串口助手实时绘制16位数据波形图 的相关文章

随机推荐

  • 解决ubuntu1604联网以后网页还是打不开的问题

    ubuntu系统连接正常的联网的网线但是网页还是打不开 xff0c 所有联网的软件也打不开 xff0c 在路由器工作正常的情况下 xff0c 可能出现的问题为dns解析异常 xff0c 关于dns解析异常的解决方法 xff1a 这段时间在u
  • 操作系统--线程并发实验三

    操作系统 线程并发实验三 一 实验目的 线程的运行时并发的 xff0c 如果互不相干的线程交替运行不会产生问题 但是如果有共享资源 合作关系的线程之间由于交替运行可能产生问题 xff0c 例如偶尔出现程序的结果不正常 理解临界区的概念 xf
  • 安装OOQP遇到问题

    Ubuntu20 04 安装OOQP遇到问题 OOQP安装 OOQP安装 MA27是OOQP的依赖 在安装MA27时容易出现找不到fortran77等情况 xff0c 在配置这些环境时容易出现其他错误导致系统环境出现问题 选择其他版本的安装
  • 15个好用的百度网盘搜索引擎

    15个好用的百度网盘搜索引擎 前言 分享 15 个好用的百度网盘搜索引擎 xff0c 方便大家搜索百度云网盘分享的资源文件 挑出来这 15 个效果还不错 xff0c 都可以正常使用 挑选标准 xff1a 免费 xff0c 大部分不登录可用
  • 操作系统死锁实验六

    操作系统死锁实验六 一 实验目的 如果一个进程集合中的每个进程都在等待只能由该进程集合中的其他进程才能引发的事件那么该进程集合就是死锁的 产生死锁的必要条件 xff1a 互斥 xff1b 请求资源和保持已获得资源不释放 xff1b 不可抢占
  • 修复 Windows11 打不开 Windows安全中心

    修复 Windows 打不开 Windows安全中心 遇到以上问题我们直接上解决方法 win10的话直接WIN 徽标 43 X键 win11 菜单栏输入 PowerShell 管理员启动 管理员权限打开PowerShell xff0c 依次
  • webstorm/idea 配置less环境

    看了一下发现大多数教程少了最关键的一步 如果这个lessc不能自动识别的话 需要手动寻找lessc cmd的路径 xff0c 可以在终端中通过 where lessc查找 复制lessc cmd位置就可以了
  • 自定义http钩子

    简单创建一个自定义http钩子函数 span class token keyword import span span class token punctuation span useState span class token punct
  • React Redux 工具包 Redux Toolkit 初步学习

    Redux 工具包 xff08 Redux Toolkit xff09 的目标是帮助简化常见的 Redux 用例 它并不是你想要用 Redux 做的所有事情的完整解决方案 xff0c 但它应该使你需要编写的许多与 Redux 相关的代码变得
  • 卫星导航模拟器GSS7000测试NTRIP RTK--以Ublox F9P 为例.rtklib原始观测量解算固定解FIX

    GSS7000 Ntrip 测试指南 Ntrip Networked Transport of RTCM via Internet Protocol 通过互联网进行RTCM网络传输的协议 是在互联网上进行RTK数据传输的协议 Ntrip是一
  • Ubuntu网络调试助手安装后无法打开

    转载自 解决Ubuntu网络调试助手安装后无法打开问题
  • 微机原理与接口技术之8060微处理器

    微机原理与接口技术之Intel8060微处理器 这篇bolg主要讲的是8060微处理器的内部结构 xff0c 引脚功能以及总线时序 8086内部结构 xff1a 8086CPU是由执行指令部件EU和总线接口部件BIU两部分注组成 1 EU部
  • Qt的三个基类QObject、QApplication和QWidget

    一 Qt介绍 1 概述 Qt是一个跨平台的C 43 43 图形用户界面应用程序框架 由挪威TrollTech公司出品 1996年Qt进入商业领域 xff0c 它已经成为全世界范围内数千种成功的应用程序的基础 Qt也是流行的Linux桌面环境
  • 锂电池串联放电并联充电自动转换电路

    直接通过5v充电器给串联锂电池组充电可以大大提高充电器的利用率 毕竟现在手机充电器都有 再去买个专用的锂电池平衡充电器又感觉没啥必要 一般给串联锂电池组充电的方案就是通过升压模块将5v升压后再充电 感觉有弊端 1 一般没有平衡充电功能 造成
  • Linux(Ubuntu)配置Cuda,Pytorch,Anaconda

    近期需要在Linux xff08 Ubuntu20 04 xff09 上运行一个工程 xff0c 需要搭建相关环境 xff0c 这是首次在Linux系统上完成anaconda xff0c cuda xff0c 及Pytorch的下载与配置
  • Visual Studio配置OpenGL

    近期工作中需要用到OpenGL 而之前一直是用Opencv工作 xff0c 这就需要在VS上配置OpenGL 因为是首次在VS上配置OpenGL xff0c 以备自己和有需要的小伙伴不时之需 我的VS是2022版的 xff0c 但配置流程各
  • Pycharm终端问题: python : 无法将“python”项识别为 cmdlet、函数、脚本文件或可运行

    发现这个问题的起因是我打算尝试用Django练习做网站 xff0c 需要在Pycharm终端输入一些命令以运行脚本 xff0c 我的Pycahrm配置了anaconda xff0c 但在终端运行命令时一直报错 xff1a python 无法
  • Python:把列表内容按行数写入txt

    事情的起因是我需要把一个元素全为数字的列表按固定列数写入txt文件 xff0c 也就是每行几个元素 xff0c 用逗号隔开 看了一些网上的分享觉得都不太合适 xff0c 于是自己想了一个办法 xff0c 一行代码解决 xff0c 废话少说
  • 解决Git提交代码报错: ERROR: commit xxxxx: missing Change-Id in message footer

    在近期的工作中完成代码修改提交代码时Git报错并提示提交不成功 xff0c 具体错误如下 xff1a 原因是Change Id缺失 至于解决方法 xff0c Git在报错时已经提示了 xff0c 如下图黄框所示 xff1a 首先 xff0c
  • 如何实现用串口助手实时绘制16位数据波形图

    先和大家kuan两句 xff0c 哈哈 因为之前参加智能车想用波形显示来调节PID xff0c 找了很多工具也没有成功 xff0c 心里也知道串口一次就是只能发送八位数据 xff0c 很多时候可以用字符显示16位的 xff0c 但是就不是数