原创 便于检索的嵌入式存储器数据格式

2010-4-12 21:49 2632 3 3 分类: MCU/ 嵌入式

设想一种类似电力监控的应用,需要记录某个时刻的电网参数,比如三相电压、电流等,这些数据存放在产品模块的EEPROM或者FLASH中,在要记录的参数是固定的情况下,每组数据占用的空间大小是一致的,比如这样:


2008年7月1日18时30分20秒  电压x.x V 电流x.x A 频率x.x Hz


2008年7月10日15时10分06秒  电压x.x V 电流x.x A 频率x.x Hz


。。。


这里的时间和参数都有固定的字节数,这样任意时刻的测量数据顺序存在存储器中,问题是如果要查找某个时刻的对应数据怎么找最快?


最合适的算法自然是使用HashTable(哈希表),先介绍介绍其中的基本知识,所谓Hash,一般是一个整数,通过某种算法,可以把一个字符串"压缩" 成一个整数,这个数称为Hash,反之,一个32位整数是无法对应回一个字符串的,但在程序中,两个字符串计算出的Hash值相等的可能性非常小。


先根据要存储的数据量构造一个一定大小的哈希表,然后每产生一条上述格式的数据,把年月日时分秒对应的字符串进行压缩,得到的哈希值取模,找到哈希表的对应位置写入该数据的存储的首地址,这样随着测量数据的产生,哈希表就建立起来了。


关于哈希表的优化参见:http://shadowflare.samods.org/inside_mopaq/chapter2.htm


来自Blizzard的精妙算法


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
3
关闭 站长推荐上一条 /3 下一条