【求助】关于数据保存的问题。

2019-07-20 13:34发布

本帖最后由 刘毅壁虎 于 2017-7-8 13:44 编辑

程序需要对传感器数据进行采集,并按照“年,月,日,测量结果”的格式将数据进行保存。年,月,日和测量结果前期我分别用的独立的变量完成赋值。现在我想将这几个独立的变量以结构体的形式整体保存到flash里去。方便后期的读写以及使用。

具体如下:
typedef struct
{
        uint Year;
        uint Month;
        uint Date;
        float Press;
}DataTypeDef;

DataTypeDef DataStruct;

uint Year=17;
uint Month=7;
uint Date=01;
float Press=100000;

DataStruct.Year=Year;
DataStruct.Month=Month;
DataStruct.Date=Date;
DataStruct.Press=Press;

WriteBuffer(DataStruct);


但是当需要采集的数据种类更多时,采用红 {MOD}部分的算法会感觉很奇怪,能否通过别的方法实现?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
刘毅壁虎
1楼-- · 2019-07-20 18:11
yklstudent 发表于 2017-7-9 08:31
你测试验证过??????

研究了半天,发现还是直接赋值这种方法,最为简单可行。
其实我在一开始进行数据采集的时候就应该统筹规划,采用结构体的形式保存。方便后期的存储。而不是后来再逐个赋值到结构体中
执迷
2楼-- · 2019-07-20 21:23
 精彩回答 2  元偷偷看……
openedvadmin
3楼-- · 2019-07-21 01:07
这一点也不奇怪哦。这是一种很通用的做法。
刘毅壁虎
4楼-- · 2019-07-21 03:19
yklstudent 发表于 2017-7-8 17:04
楼主认为有什么高级的赋值算法?

sprintf((char*)&DataStruct,"%c%c%c%c",Year,Month,Date,Press);
这样写貌似是可以实现同样的功能,但是Press的数据会出问题,别的几个是u8类型的,Press是float型的,具体原因还在研究。
刘毅壁虎
5楼-- · 2019-07-21 06:44
 精彩回答 2  元偷偷看……
刘毅壁虎
6楼-- · 2019-07-21 11:35
执迷 发表于 2017-7-8 14:30
哪里奇怪了?感觉固件库的初始化也是这么做的、、

这样子的程序感觉效率好低

一周热门 更多>