硬汉嵌入式论坛

 找回密码
 立即注册
查看: 929|回复: 4
收起左侧

[其它] STM32串口接收数据的处理和解析的问题

[复制链接]

6

主题

106

回帖

124

积分

初级会员

积分
124
发表于 2023-2-1 16:28:02 | 显示全部楼层 |阅读模式
请教下串口接收数据后的解析和处理问题:
例如我单片机接收到上位机发来的指令数据是“A100B50C90...A80R”这样的数据。结尾是以‘R’结尾的。A代表一个动作指令,100代表行程;B代表另外一个动作,50代表行程,以此类推。
同时每个动作是有执行时间的,A动作执行完才能执行B动作。
而且上位机发来的指令数据是不定长的。我程序该怎么解析和执行这串指令。使用串口空闲中断已经接收完数据了,有没有什么例程参考或者思路指导下,谢谢各位了!
QQ截图20230201162550.png
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106856
QQ
发表于 2023-2-1 16:49:37 | 显示全部楼层
状态机解析处理,供参考。

串口FIFO的comGetChar函数正确使用姿势
https://www.armbbs.cn/forum.php?mod=viewthread&tid=94579
回复

使用道具 举报

6

主题

106

回帖

124

积分

初级会员

积分
124
 楼主| 发表于 2023-2-2 08:59:52 | 显示全部楼层
eric2013 发表于 2023-2-1 16:49
状态机解析处理,供参考。

串口FIFO的comGetChar函数正确使用姿势

请问下每个动作是有执行时间的,A动作执行1S后才能轮到B动作0.5S,该怎么操作。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106856
QQ
发表于 2023-2-2 09:20:10 | 显示全部楼层
xudongqiang 发表于 2023-2-2 08:59
请问下每个动作是有执行时间的,A动作执行1S后才能轮到B动作0.5S,该怎么操作。

这个不用管,你只管解析就行了。
回复

使用道具 举报

9

主题

81

回帖

113

积分

初级会员

积分
113
发表于 2023-2-2 09:35:52 | 显示全部楼层
xudongqiang 发表于 2023-2-2 08:59
请问下每个动作是有执行时间的,A动作执行1S后才能轮到B动作0.5S,该怎么操作。

1.数据接收保存到FIFO或者Ring buffer中。
2.逐字节解析出命令,并存储到队列中。
3.从队列取命令执行。

以上3个线程。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-8 00:46 , Processed in 0.258478 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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