硬汉嵌入式论坛

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

[技术讨论] 如何实现串口任务不定时获取不同传感器采集任务的最新数据

[复制链接]

6

主题

46

回帖

64

积分

初级会员

积分
64
发表于 2024-10-11 15:30:26 | 显示全部楼层 |阅读模式
问题背景:类似于串口数据解析任务接收到一个获取一个传感器的最新数据,或者多个传感器的最新数据;但每个传感器的数据采集任务的执行周期是不一样的,但串口再接收到获取数据的命令后,要求快速返回传感器的最新数据;

请问大佬们,除了通过传感器在每次获取到数据后,直接更新全局数组,串口任务每次获取都是从全局数组中获取外,还有没有其他方法。我看很多文章都不是很推荐通过全局变量传递数据啊!求大佬指点!


回复

使用道具 举报

7

主题

159

回帖

180

积分

初级会员

积分
180
发表于 2024-10-12 08:52:40 | 显示全部楼层
适合自己的就是最好的
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2024-10-12 09:11:57 | 显示全部楼层
使用的RTOS,可以考虑用消息队列。
回复

使用道具 举报

6

主题

46

回帖

64

积分

初级会员

积分
64
 楼主| 发表于 2024-10-12 16:03:41 | 显示全部楼层
eric2013 发表于 2024-10-12 09:11
使用的RTOS,可以考虑用消息队列。

才发现这是坛主,大佬,问题是RTOS的消息队列好像不能自动的把队列的旧数据清掉再放入新数据啊,队列放满后如果串口线程没有读取数据,传感器线程就放不进去新数据啊
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117529
QQ
发表于 2024-10-13 00:48:00 | 显示全部楼层
咿呀 发表于 2024-10-12 16:03
才发现这是坛主,大佬,问题是RTOS的消息队列好像不能自动的把队列的旧数据清掉再放入新数据啊,队列放满 ...

消息队列有好几种玩法,可以考虑读取一次,将最早的旧数据腾出来,前提是你的传感器数据不需要连续采集。支持这种用法
回复

使用道具 举报

2

主题

9

回帖

15

积分

新手上路

积分
15
发表于 2024-10-14 21:55:49 | 显示全部楼层
我觉得就用全局数组,做好线程间的写操作互斥
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-12 11:08 , Processed in 0.037871 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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