婉兮清扬

案上诗书杯中酒之快意人生

[实验] 在Sun SPOT上存取数据

发表时间:2008-06-28 20:04:26
一、预备知识

在一个典型的Sun SPOT应用中,目标端(移动端)Sun SPOT通常并不是实时地将所有采集到的传感器通过无线数据链发送给基站。以一个大地磁场监测的无线传感器网络应用为例,传感器采集到的数据可以分成如下几类:

1 与平时的监控数据没有什么差异,不值得保存或者是汇报的,当场丢弃处理;

2 与平时的监控数据有一些细微的差别,值得进一步研究,但是并不需要紧急汇报和响应,则存储到该节点自身的存储器上,等到数据存储到一定的量级后再一次性传输到基站上。所有数据都转移到基站上之后,将节点上的数据删除以释放存储空间。

3 与平时的监控书具有较大的差别,需要紧急汇报和响应,则通过无线数据链马上向基站报告异常情况,并且提高数据采集和汇报的频率。

Sun SPOT采用了Java ME中常见的Record Management Store (RMS)框架来管理应用程序的数据。RMS是一个简单的基于纪录的持久层框架,简单地讲,可以将一个Record Store想象成一个文件,将一条记录看成是一个文件里面的一行。RMS通过记录号(可以想象为行号)来定位和存取相关的纪录。在同一个MIDlet应用 程序中,可以创建和访问多个Record Store。

二、示范程序

在一个Sun SPOT应用中,可以通过如下方法来创建和访问Record Store。

导入相关类库:

import javax.microedition.rms.RecordStore;

import javax.microedition.rms.RecordStoreException;

创建一个RecordStore的实例rms,打开一个名为TEST的Record Store。如果该Record Store尚未存在,则创建这个Record Store。

RecordStore rms = RecordStore.openRecordStore("TEST", true);

创建一个数组inputData,这个数组是需要写入Record Store的数据:

byte[] inputData = new byte[]{12,13,14,15,16};

将这个数组作为一个记录写入Record Store,同时返回与这个数组相关的记录号recordId:

int recordId = rms.addRecord(inputData, 0, inputData.length);

创建一个数组outputData,将与指定记录号相对应的记录读入该数组:

byte[] outputData = rms.getRecord(recordId);

关闭该RecordStore:

rms.closeRecordStore();

下载示范程序RecordStoreDemo.zip

三、编程练习

编写一个Sun SPOT应用。目标端Sun SPOT以10 Hz的频率采集加速度传感器的信息,并且保存在Sun SPOT上。数据采集的时间为1 分钟,数据采集结束之后通过无线数据链将存储的数据发送给基站端,并且删除保存在目标端Sun SPOT的数据。

四、参考资料

RecordStore
上一篇 下一篇

发表时间:2013-08-10 09:07:40    评论者:ダウン モンクレ

http://www.shoppingforemphasizejp.pw腕時計レディース

发表时间:2015-08-13 11:42:13    评论者:Dong

能否帮忙提供可以购买Sun Spot开发套件的渠道?谢了

 
姓名:
评论:

请输入下面这首诗词的作者姓名。

单车欲问边,属国过居延。
征蓬出汉塞,归雁入胡天。
大漠孤烟直,长河落日圆。
萧关逢候骑,都护在燕然。

答案:

云与清风常拥有,
冰雪知音世难求。
击节纵歌相对笑,
案上诗书杯中酒。

蒋清野
2000.12.31 于 洛杉矶