`
SCYForce
  • 浏览: 40848 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Wireless Sensor Network-Sunspot开发之搭建开发平台+第一个作业

阅读更多
忙碌的暑假已经过去,在学校最后一年的学习开始了,这个学期选了一门Special Topic-Wireless Sensor Network,很新的领域,Paper貌似都是从2004年开始的。

可恶的老师让我们下周就要交第一个作业,不得不开始搭建平台。这次我们用的是Sun公司的Sunspot产品,2个Wireless Spot,1个Base Station(这套Dev Kit价值$750,老师说如果学期结束的时候不能按时归还的话,就没成绩)。开发的主要过程就是写好程序,用Ant编译,部署到Spot上面,然后就可以玩了。这东西也算是嵌入式的一种吧,用的自然是是Sun的Api。Website: http://www.sunspotworld.com/


搭建的过程:
1. 安装Sun提供的Sunspot开发者套件,IDE用的是Netbeans-这个IDE最近特别夯啊。安装的过程十分不顺利。不知为什么,我在Mac的光驱上直接打开".jar"文件总是出错,然后光盘里的其他安装文件夹都是".XXX"-Mac里的隐藏文件,都看不到。我只好复制了整个光驱到硬盘,弄了半天总算装好。
2. 顺利的安装了Sunspot SDK, Netbeans, Sunspot for Netbeans 插件以及Sunspot Manager。

因为没找到Eclipse支持Sunspot的可用插件,只能屈服与Netbeans(从日食走向网豆,不是一件开心的事儿),不过很多针对Sunspot的Ant脚本不需要自己手动执行却是一件很轻松愉快的事情。

开始在Netbeans上部署第一个Demo,Build时没出错,Deploy的时候却总是告诉我“可用外接端口非默认端口”。奇怪,在装的时候没有提示我要设置端口啊。然后去Sunspot的网站搜索一下,发现我需要Upgrade到最新的版本:http://www.sunspotworld.com/GettingStarted/#MacOSX。在一步步的按部就班后,总算完成了平台的搭建。

第一个作业让我们实现3个小程序:
  • 来回晃动Spot会显示当前温度
  • 用LED的亮暗来代表1,0显示当前温度
  • Spot可以探测到当前网络中是否有Spot发生移动,有的话LED进行闪烁

BinaryTemperature代码片段:
/**
 * BinaryTemperature
 *
 * Displays the current temperature in binary using the LEDs.
 *
 * @shuchun.yang
 */
public class BinaryTemperature extends MIDlet {
    private ITemperatureInput tempSensor = EDemoBoard.getInstance().getADCTemperature();
    private ITriColorLED [] LED = EDemoBoard.getInstance().getLEDs();
    
    private void run()throws IOException {
        
        double temp  = 0;
        String binary = "";
        setColor(255,0,0);
        while(true){     
            // Main loop of the application
            temp  = tempSensor.getFahrenheit();
            //the length of the string equals to the length of LED    
            binary = toBinary((int)temp);
            for(int i=0; i<binary.length();i++){
		if(binary.charAt(i) == '0'){
                    LED[i].setOff();
                }else{
                    LED[i].setOn();
                }
            }
            Utils.sleep(500);                           // Like Thread.sleep() without the exception.
        }
    }
    
    public void setColor(int red, int green, int blue){
        for ( int i = 0; i < LED.length; i++ ) {
            LED[i].setOff();
            LED[i].setRGB((red==0)?0:255,(green==0)?0:255,(blue==0)?0:255);
        }
    }
    
    public String toBinary(int temperature){
        String binary = Integer.toBinaryString(temperature);
        if(binary.length()<LED.length){
            int num = LED.length-binary.length();
		for(int i=0; i<num;i++){
			binary = '0' + binary;
		}
	}
        return binary;
    }
    
    protected void startApp() throws MIDletStateChangeException {
        try {
            run();
        } catch (IOException ex) { //A problem in reading the sensors. 
            ex.printStackTrace();
        }
    }
    
    protected void pauseApp() {
    }
    
    /**
     * Called if the MIDlet is terminated by the system.
     * I.e. if startApp throws any exception other than MIDletStateChangeException,
     * if the isolate running the MIDlet is killed with Isolate.exit(), or
     * if VM.stopVM() is called.
     * 
     * It is not called if MIDlet.notifyDestroyed() was called.
     *
     * @param unconditional If true when this method is called, the MIDlet must
     *    cleanup and release all resources. If false the MIDlet may throw
     *    MIDletStateChangeException  to indicate it does not want to be destroyed
     *    at this time.
     */
    protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {
        for (int i = 0; i < 8; i++) {           // turn off the LEDs when we exit
            LED[i].setOff();
        }
    }
}

在Sunspot上开发的程序都需要继承MIDlet这个类,然后通过一个方法获得Spot上某些部件的实体,比如LED和传感器等等,再对这些实体对象进行操作。因为网上代码不是很全,很多代码还是要从Demo中寻找,希望将来能对这东西越来越熟吧。1周后,又一个作业等待着我阿。
1
0
分享到:
评论
2 楼 SCYForce 2010-03-25  
dmhorse 写道
你好,请问能供SunSpot一套东西玩一下吗?

不是对SunSpot很了解,除了从传感器获得数据分析外,可以通过base或程序控制外接的硬件吗?


目前应该是只能通过USB连接到能安装SunSpot驱动的终端上面,具体的请参考Sunspot的官网。
1 楼 dmhorse 2010-02-01  
你好,请问能供SunSpot一套东西玩一下吗?

不是对SunSpot很了解,除了从传感器获得数据分析外,可以通过base或程序控制外接的硬件吗?

相关推荐

    predict-sunspot:根据过去的活动预测未来的黑子活动

    预测太阳黑子是天文学与数据科学交叉领域的一项任务,主要目标是利用历史的太阳黑子活动数据来预测未来的黑子活动。太阳黑子是太阳表面的暗区,其活动与太阳活动周期紧密相关,对地球的气候、通信系统甚至航天飞行...

    guard-sunspot:太阳黑子solr的守护宝石

    Guard::Sunspot 允许您自动启动和停止您的 solr 服务器。 安装 安装 Guard 的最简单方法是使用 。 请确保在继续之前安装了 。 将 Guard::Cucumber 添加到您的Gemfile : group :development do gem 'guard-...

    Sunspot-annual-mean.rar_sunspot

    在我们所讨论的"Sunspot-annual-mean.rar_sunspot"文件中,包含了一个名为"yearssn.dat"的数据文件,这正是用于分析太阳黑子年均值的关键。 "yearssn.dat"是一个数据文件,可能包含了自某个时间起点以来每年的太阳...

    全文搜索 sunspot

    标题中的“全文搜索 sunspot”指的是Sunspot,这是一个在Ruby on Rails框架中广泛使用的全文搜索引擎库。Sunspot允许开发者在应用程序中实现强大的、灵活的搜索功能,它与流行的Solr搜索引擎紧密集成,提供了丰富的...

    rails _sunspot 学习笔记

    Sunspot 是一个用于 Ruby on Rails 的灵活且强大的全文检索框架。它基于 Solr 和 Lucene 构建,可以方便地集成到 Rails 应用中,为用户提供高效的搜索功能。 #### 二、Sunspot 安装 在开始之前,请确保已经安装了...

    搜索开发包Sunspot_matchers.zip

    Sunspot 是为了在 Solr 平台下构建的搜索开发库。它是一个伟大的 Ruby 库。然而由于 Sunspot DSL 搭建好了,所以它很难进行全方位的集成测试。Sunspot_matchers 能够让测试变的更加简单。尤其适用于在 Solr 上没有...

    Sun Spot 硬件开发

    SunSPOT(Sun Small Programmable Object Technology)是Sun Microsystems公司推出的一款基于Java技术的无线传感器网络开发平台。该平台主要面向Java开发者以及对硬件开发感兴趣的用户群体。SunSPOT 设备集成了微...

    sunspot-sdk.jar

    sun spot传感器,利用netbeans开发时,需添加的jar包,以构建sunspotapplication项目。

    sunspot programmer's mannul

    **Sun SPOT**(Sun Small Programmable Object Technology)是Sun Microsystems公司开发的一种无线传感器网络技术平台,专为嵌入式系统开发者设计。此平台旨在简化无线传感器网络的应用开发,使得开发者能够更容易地...

    Sunspot Number Prediction/Forecasting via a Hybrid Regression-Neural Network Ba​​sed Model:该程序预测/预测用户指定日期的平滑太阳黑子数-matlab开发

    该模型基于用于预测SSN的混合回归神经网络(HR-NN)方法(在准备中的文章中详细介绍) SSN 输出/预测被写入一个名为 Output_SSN_Predictions.txt 的文件,该文件是在运行程序的同一文件夹中创建的。 对于此版本的...

    sunspot_cell:[DEAD]对Sunspot的单元支持

    此插件为Sunspot(针对Sunspot 1.2.1开发)增加了对Cell的支持(用于索引丰富的文档)。 该代码基于此处包含的补丁: 要求 Solr Cell库(标准Solr发行版中的dist/apache-solr-cell-1.4.X.jar和+ contrib / ...

    sunspot_year.dta

    sunspot_year.dta

    SunSpot-Smart-Envionment-Project:SCC330智能实验室系统

    "SunSpot"可能是项目的一个特定部分或组件,可能涉及使用Sun SPOT(Small Programmable Object Technology)设备,这些设备是微型传感器和控制器,用于收集环境数据或控制实验室设备。SPOTs通常配备有各种传感器,如...

    SunSPOT SNMP Agent and Multiplexor-开源

    SunSPOT技术是由Sun Microsystems开发的一种平台,它包括硬件和软件,旨在支持无线传感器网络和嵌入式计算。这些设备通常具有低功耗、小巧便携的特点,适用于各种物联网(IoT)应用。而SunSPOT SNMP Agent则是这个平台...

    1700-2018太阳黑子数据txt格式.rar

    标题“1700-2018太阳黑子数据txt格式.rar”指的是一个压缩文件,其中包含了关于太阳黑子的观测数据,时间跨度从1700年至2018年。这些数据以文本(txt)格式提供,是太阳物理学研究的重要资源,特别是对于分析太阳...

    SunSpot:SunSpot 是一个 iOS 8 应用程序,它演示了使用 1080p 视频的 AVKit 播放

    SunSpot 是一个 iOS 8 应用程序,它演示了使用 1080p 视频的 AVKit 播放。 由 NASA/SDO 和 AIA、EVE 和 HMI 科学团队提供。 灵感来自: 原始 4K 图像下载自: h.264 视频使用来自原始 4K 视频帧的 x264 编码。 ...

    spot-hero:带有 SunSPOT 的空气吉他

    该项目的目的是提供一种更简单的方法来使用 Java SunSPOT 来学习和演奏多个音符。 通过了解 SPOT 的局限性和质量,该项目试图以最真实的方式模拟音乐播放过程,通过移动多个 SPOT 使演奏者以不同的音调弹奏不同的...

    sunspot-solr-demo:演示到太阳黑子 solr

    rake sunspot : solr :start rails s 一旦您运行服务器以生成一些随机文章,请转到 其中 2 是要生成的文章数 其他重要命令 rake sunspot : solr :stop rake sunspot : solr :restart rake sunspot : ...

    sunspot_solr_wildcard:基于sunspot_wildcard v2.2.0

    Sunspot :: Solr是Solr的打包发行版,可与和 gems一起使用。 有关更多信息,请参见这些gem的文档。 安装 gem install sunspot_solr 为了启动守护程序,请运行: sunspot-solr start -- [-d /path/to/data/...

    SOLAR-STORM1: Automatic Recognition of Magnetic Type in Sunspot Groups-数据集

    《太阳风暴识别:太阳黑子群磁类型自动化分析——基于"SOLAR-STORM1"数据集》 在太阳物理学领域,太阳黑子是研究太阳活动的重要窗口,它们的磁类型对于预测太阳风暴的发生具有关键作用。"SOLAR-STORM1"数据集专门...

Global site tag (gtag.js) - Google Analytics