找回密码
 立即注册

QQ登录

只需一步,快速开始

帖子
查看: 2818|回复: 8
收起左侧

stm32单片机串口如何连续接收帧数据并提取所需数据?

[复制链接]
ID:978025 发表于 2022-2-9 15:53 | 显示全部楼层 |阅读模式
如下图所示为设备通信指令解析

QSOL_10XAWF77$RDBSHBTIB.png

当发送启动测距指令“01 10 00 28 00 01 02 00 04 A1 BB”之后,设备开始启动测距,并不断发送测距数据。
接收到的数据如下图示

[I]3ZDR%TQV3N(7YBE51hei.png

当发送“01 10 00 28 00 01 02 00 04 A1 BB”后设备会发送一次回复指令和n次测距数据直到收到停止命令 ,窗口助手接收到回复指令“01 10 00 28 00 01 81 C1”,然后就不断地发送测距数据帧 总共有47个字节,每个字符的含义在第一张图的数据解析。我想取出数据帧中的 第15个字节和第17个字节,也就是A基站和B基站的测量数据。

串口接收数据格式为 “一次回复指令+n次测距数据帧”

我使用了中断和IDLE中断,结合判断帧头为 “01 03 2A”的方法没能成功,请教各位实现
回复

举报

ID:752974 发表于 2022-2-10 09:39 | 显示全部楼层
通信中,收发数据的使用必须按通信协议解析,否则,不知道如何处理。
回复

举报

ID:311903 发表于 2022-2-10 10:50 | 显示全部楼层
这就一个modbus 协议啊,根据协议解析就可以了
回复

举报

ID:313048 发表于 2022-2-10 10:54 | 显示全部楼层
串口做数据处理最好是中断接收,用队列存储,然后去轮询处理数据就可以了。
回复

举报

ID:978025 发表于 2022-2-10 14:25 | 显示全部楼层
munuc_w 发表于 2022-2-10 09:39
通信中,收发数据的使用必须按通信协议解析,否则,不知道如何处理。

抱歉,第一次接触这个通信协议
回复

举报

ID:161164 发表于 2022-2-10 14:40 | 显示全部楼层
不懂STM32
抽空写了一个51的
你可以参考看看
仿真可用
从机用的是Modbus Slave
所以命令格式是Func 03 命令(Senddata2)
而不是你的定位命令
而且没有命令回覆
只有定位数据
并把你要的数据在数码管显示
2022-02-10_140306.png


2022-02-10_140326.png


2022-02-10_143903.png



回复

举报

ID:978025 发表于 2022-2-14 12:50 | 显示全部楼层
lkc8210 发表于 2022-2-10 14:40
不懂STM32
抽空写了一个51的
你可以参考看看

万分感谢大佬的指点,我尝试一下
回复

举报

ID:625730 发表于 2022-2-14 13:28 | 显示全部楼层
你的问题是上位机(串口调试工具)如何解析下位机(单片机)的数据,还是STM32单片机解析另一块单片机通过串口发送过来的数据?如果是用电脑上的串口调试工具软件解析,那么市面上一些通用的串口工具是不能直接解析的,得针对性的开发上位机。
回复

举报

ID:978025 发表于 2022-2-28 08:59 | 显示全部楼层
TEC 发表于 2022-2-14 13:28
你的问题是上位机(串口调试工具)如何解析下位机(单片机)的数据,还是STM32单片机解析另一块单片机通过 ...

是stm32单片机解析另一块单片机发过来的数据,这个我没能解决。后面我才用定时器中断查询的方法获取数据了
回复

举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表