96SEO 2026-02-19 10:08 19
当前嵌入式系统的运用非常普遍。

无论是智能家居还是各类机器人控制系统都离不开嵌入式硬件和软件的支撑。
而在各类系统的开发、使用和维护过程中数据可视化都是一项重要内容。
通过可视化界面达到“测”与“控”的目的。
“测”即监测系统运行过程中的各类状态以数字、仪表、曲线等形式进行展示。
“控”即通过上位机进行指令下发达到参数修改、远程指挥的目的。
然而嵌入式系统一般称为下位机的开发和可视化界面一般称为上位机的开发都是有难度的。
熟悉嵌入式系统开发的工程师、学生并不一定擅长上位机的开发。
有时候做一些小项目仅仅只需要监测一两个数据专门去开发一个可视化软件耗时耗力、并不经济。
本人长期从事基于单片机的机器人控制系统研发略懂一点可视化软件开发经常是一个嵌入式系统就要配套一个上位机开发周期长、维护难度大。
另外经常收到各类关于上位机开发的咨询深知这方面需求巨大。
因此基于快速开发的需求本软件开发了一款通用的上位机软件。
使用者只需按照本软件提供的通信协议进行工程移植即可使用本软件进行嵌入式系统远程“测”“控”。
本软件非常适合对上位机开发不熟悉的工程师、学生使用可以快速构建自己的远程数据采集系统大大缩短开发周期。
尤其对学生而言、可快速构建测控系统方便采集数据加速论文写作。
软件和配套STM32工程、说明文档的下载地址嵌入式系统远程测控软件-串口示波器-远程修改参数
如何实现上位机和下位机通信熟悉单片机开发的对串口调试助手肯定不陌生。
串口调试助手就是一个上位机它可收可发只是它只能以文本显示原始数据帧。
当我们定义好通信协议下位机和上位机都按照协议进行数据发与收自然就能解析出我们想要的数据。
本软件也是基于串口通信的使用的是自定义通信协议。
历史数据保存。
以日志文件形式保存部分监测的数据供后期进行数据处理。
电脑环境本软件基于Qt5.14开发发行版为绿色免安装版本无需安装开发环境。
电脑上安装CH340、CP2102等串口驱动即可。
直接双击exe文件即可打开主界面。
启动后主界面如图所示界面由多个区域组成。
其中左侧两个区域“端口”框内为设备连接操作部分下方是快速设置寄存器值。
右侧区域为标签页区域有四个标签页“数据曲线”标签页是进行数据显示上行数据“更改参数”标签页是进行数据修改下发数据“串口数据”标签页显示串口原始16进制数据。
“ReadMe”标签页里面是一些版本信息和说明文字。
其中“数据曲线”标签页又分成了多个标签页。
“数据曲线00”是地址为0x00的数据“数据曲线01”是地址为0x02的数据依次类推。
“自定义曲线1”和“自定义曲线2”两个标签页可以任意选择地址进行数据显示可以分别最多显示4条曲线。
1通过下拉框设置串口号、波特率、数据位、停止位、校验位等串口参数其中默认参数为波特率115200、数据位8、停止位1、校验位无。
串口号在软件启动时自动搜索计算机当前可用串口并可以通过下拉框选取当没有设备连接时下拉框为空不可选择。
4当软件运行过程中出现插拔通信线会改变可用串口设备点击“更新设备列表”按钮即可在串口号下拉框中选取最新的可用串口设备。
目前暂时是这样需要手动更新
数据的传输和解析都是是按照地址——数据的形式进行的。
目前设置了8个子标签页每个子标签页包含一个图表用于数据曲线显示。
其中“数据曲线00”是地址显示0x00的数据“数据曲线01”显示地址为0x01的数据依次类推前6个图表都只显示一条曲线。
“自定义曲线1”和“自定义曲线2”两个标签页分别可以显示四条曲线即四个地址的数据并且这四个地址是可以自己设置的。
下图显示的是“数据曲线00”标签页的数据图表下方横坐标是时间时间是动态滚动的左侧纵坐标是数据值。
图表下侧以文本框形式显示数据的具体值。
图表上方有三个输入框。
“设置显示点数”设置图表区域显示的数据个数这个数值越大显示的点数越多横坐标时间跨度越长。
“设置y坐标范围”可以设置y轴坐标的最小值和最大值使曲线能够完整显示在图框中。
“数据曲线01”、“数据曲线02”、“数据曲线03”、“数据曲线04”、“数据曲线05”使用方法一样。
下图显示的是“自定义曲线1”标签页的数据图表下方横坐标是时间时间是动态滚动的左侧纵坐标是数据值。
图表上方有两排输入框。
第一排三个输入框“设置显示点数”设置图表区域显示的数据个数这个数值越大显示的点数越多横坐标时间跨度越长。
“设置y坐标范围”可以设置y轴坐标的最小值和最大值使曲线能够完整显示在图框中。
第二排四个输入框“数据1”设置数据1的数据地址“数据2”设置数据2的数据地址“数据3”设置数据3的数据地址“数据4”设置数据4的数据地址。
四个数据前都有一个复选框当勾选相应的复选框时图像中就会显示这个数据的曲线当取消勾选相应的复选框时图像中就会不显示这个数据的曲线。
“自定义曲线2”标签页使用方法一样。
左侧有一个“设置显示点数”的编辑框所有的曲线显示时长我都改成在这个地方统一设置了相应标签页的“设置显示点数”没激活。
如果下位机每隔20ms上传一帧数据那么500个点就是500*20ms
数据修改也是是按照地址——数据的形式进行的在“更改参数”标签页和左侧“快速设置寄存器值”都可以修改参数。
“更改参数”标签页里“参数修改”那一块可以修改0x80~0x8F一共16个数据地址固定。
点“查询参数”就可以查看当前值点“载入参数”就把当前值填充到设置值那里这一步非必须只是为了方便不需要一个一个再敲进去然后在设定值那一列进行修改即可改成自己想要的参数。
最后点“写入参数”即可将参数写入进去。
右侧“指令下发”那一块可以指定起始地址和数据个数这样就可以应对所有场合了。
比如将起始地址改成0xA0数据个数改成10点击“写入指令”就会将从0xA0开始的10个数据写到单片机了。
不能超过16个数据因为只给了16个框框。
主界面左方“快速设置寄存器值”那里也是可以灵活修改参数每个地址框都是可以滚动或敲入修改的从而修改地址。
数据框里的值一旦滚动或敲入则会自动下发数据下去。
这个地方一次只能修改一个地址的数据适用于测试场合。
除了数据测控外软件的第三大核心功能是数据保存这个保存过程是在后台自动进行的当软件启动时就会开始记录直到软件关闭时停止记录。
日志文件的生成和命名也是自动的。
格式为“data_year_month_date_hh_mm.csv”。
其存放位置为.exe文件的同级目录下。
如图所示。
文件打开之后的格式如图13所示。
第一行为表头从左至右前四列为小时、分钟、秒、毫秒四位数据标记数据接收的时间之后依次显示每个地址的数据0x00地址的数据0x01地址的数据……0x0F地址的数据。
本版本软件暂时设置只保存到0x0F的数据即最多保存17个数据使用者在使用的过程中要注意虽然曲线显示是没有地址限制的但是超过0x0F地址的数据是不被保存的。
所以要优先使用低地址的数据。
最后说明一下本软件的硬件连接方式。
本软件与单片机的连接方式可为串口ttl、485、232任意一种只要是UART通信协议即可。
电脑与单片机之间可以使用一根数据线进行连接。
这种方式是有线方式。
也可以使用无线数传模块进行连接。
电脑和单片机各连接一个无线数传模块即可实现远程无线通信。
依照本软件所规定的通信协议进行数据上传本软件才能正确解析数据进行显示和保存。
否则通信失败软件无法正常使用。
本软件使用的自定义通信协议数据帧长度为任意字节可以一次发送所有数据也可以分多个数据帧上传数据。
当数据过多时建议分多个数据帧发送否则一帧长度过长出错概率增大。
数据的保存和传输按照“地址-数据”形式按照浮点数32位保存每个数据占4个字节。
每个数据都有自己的地址地址从0开始编号。
查询从起始地址开始的N个数据查询帧是6个字节。
下位机收到数据按照上传数据格式上传。
数据的传输最简单的是传输整形数据本软件的早期版本是传输uint16类型数据每个数据占用两个字节。
这种方法的缺点是1传输浮点数时需要进行倍数处理。
例如0.12将其乘100变成整形的12上位机收到后除100变成浮点型的0.12。
这种方法较麻烦哪些地址的数据需要进行倍数需要下位机和上位机同时定义清楚。
2有符号和无符号类型数据区分。
uint16类型数据较简单直接传输直接解析没问题。
int16上位机解析时就需要进行类型转换了。
哪些地址的数据要进行(int16_t)类型转换也要定义清楚。
3表示的数据范围有限16位整形无符号数只能到65535有符号数除2减半。
如果是浮点数乘掉了倍数表示范围直接缩水。
如果是翻100倍只能表示到655。
所以最方便的就是直接传输浮点数省去很多麻烦。
当然浮点数的缺点就是一个数据要占用4个字节。
因此效率是传输整形数据的一半。
};f_data和byte[4]共用4个字节的内存单元成员f_data是实际使用的数据成员byte[4]是通信时用的数据各司其职。
}出来的结果是一样的0.12。
聪明的读者可以发现me和you对应下位机和上位机。
只要me和you按照这种方式进行传输就可以传输浮点数。
传输多个浮点数me和you就可以定义为一个数组例如me[100],
i)Uart1_send_char(data[i]);delay_ms(20);}
}这段代码即按照通信协议进行“填空”数据的起始地址是0x0000,有效数据长度是4即一个数据一帧数据总长为10个字节最后一个字节是校验和。
这段循环结构按照20ms的间隔定期上传数据。
i)Uart1_send_char(data[i]);data[0]
i)Uart1_send_char(data[i]);delay_ms(20);
}这段代码分两帧数据进行了数据传输。
第一帧数据从0x0000地址开始传输了一个数据对应地址0x0000。
第二帧从0x0005开始传输了两个数据(对应地址0x00050x0006)。
1工程里加入两个文件transmission.h和transmission.c
i){Uart1SendChar(send_buf[i]);}return
4*i];}ComSendData(addr,data_num);
要查询的寄存器数据数量ComSendData(addr,data_num);
float_register[255]内存大小可以自己修改这里给的255。
2定义上传函数u8
len)解析一帧数据如果是写指令就更新float_register中的值并且更新完了把新的数据上传上去。
如果是读指令就按照给定的起始地址和数据量上传数据。
HAL_UART_RxCpltCallback(UART_HandleTypeDef
6字节{USART1_RX_BUF[USART1_RX_STA]
){//analyseData(USART1_RX_BUF[0]);
USART1_RX_STA);LED3_TOGGLE();memset(USART4_RX_BUF,
}串口中断函数随便怎么定义我这里给的是字节中断你可以按DMA空闲中断去写都行总之就是要按照前面给的通信协议把上位机下发下来的“修改数据”或“查询数据”的数据帧解析出来然后调用transmission.c中的void
{while((USART1-SR0X40)0);//循环发送,直到发送完毕
提供的STM32工程里面使用地址0x90作为正弦波和方波的幅值地址0x91作为正弦波和方波的频率。
地址0x00是正弦波值地址0x01是方波值每20ms上传一次数据。
上位机通过修改0x90和0x91地址的数据就可以更改正弦波和方波的幅值和频率。
代码为
output0;if(input0){output1;}else
if(input0){output0;}else{output-1;}return
frequency0.5;float_register[0x90].f_data
float_register[0x90].f_data;frequency
测试从机主动上传数据float_register[0].f_data
sin(2*3.14*run_cnt*frequency*dt*0.001);float_register[1].f_data
Sign(float_register[0].f_data);ComSendData(0,2);
}效果如图。
开始时幅值为100频率为0.5Hz修改为1Hz、幅值200波形变化了两次。
1由于本软件是通用软件所以都是以“地址0x80”之类的命名而不是参数的实际意义例如“PID参数”、“前进速度”等。
这就需要聪明的你自己在脑袋里定义了。
鱼和熊掌不可兼得。
2开发上位机有很多软件如LabWindows、labview、Qt、C#等包括万能的Matlab各有利弊。
就本人近几年的开发经验Matlab的实时性是灾难LabWindows界面太丑、Labview的非编程开发方式习惯不了。
相对而言Qt功能是最为强大的很适合实时系统大名鼎鼎的飞控地面站QGroundControl就是Qt开发的。
想学习上位机编程的强烈建议Qt。
3本软件及其配套STM32示例工程下载需要一点点费用。
一方面是作者的劳动成果请养成知识付费的思想和行动自觉本人平时也是经常性为知识付费花几块几十块钱解决大问题是非常非常划算的。
另一方面付费的东西能够帮助你筛选掉一些无用资源。
使用过程中有任何问题欢迎私信。
本软件的下载地址嵌入式系统远程测控软件-串口示波器-远程修改参数
上位机软件源码后续也会陆续开源一定的知识付费供有兴趣的伙伴学习并定义自己的界面。
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback