Sun SPOT程序设计 University Outreach Programs in China

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

Java 程序分类 Java Application :是完整程序,需要独立的解 释器解释运行;以 “.java” 为后缀的文件,以 main() 方法作为程序入口,由 java 编译器编译生 成字节码,由 Java 解释器加载执行字节码。 Java Applet 没有 main() 方法作为程序入口,是嵌在.
Java 程序设计 案例教程 北京大学出版社 第 01 章. Java 程序设计案例教程 第 01 章 Java 语言与面向对象程序设计 Java 语言的历史 Java 语言的特点 Java 程序的分类 Java 环境配置 Eclipse 的安装 Java 程序的调试 教学目标.
面向侧面的程序设计 方林博士 本文下载地址:
第四章 类、对象和接口.
3.2 Java的类 Java 类库的概念 语言规则——程序的书写规范 Java语言 类库——已有的有特定功能的Java程序模块
第一單元 建立java 程式.
Sun SPOT介绍 University Outreach Programs in China
Sun SPOT外部接口 University Outreach Programs in China
門神 在傳統觀念中,門是居住環境中與外界相通的出入口,具有重要的屏障作用。門神顧名思義就是護宅守門的神仙,每逢過年,上至天子百官下至普通百姓,家家戶戶必在門上張貼門神,以保一家平安。 門神種類主要有宅第大門上將軍武門神、內室門戶上祈福文門神,還有童子門神、仙子門神等,形象豐富多樣,皇家貴戚還往往在畫上瀝粉貼金,十分吉祥喜慶。
Java的程式架構與基本觀念 Java語言的歷史 Java程式的開發環境 Java程式的架構 輸出與輸入物件之使用 工具使用方法介紹
Hello小程序的运行和编译 Java AppletJava小程序的构成 1、关键字
Sun SPOT开发环境 University Outreach Programs in China
实验四 利用中规模芯片设计时序电路(二).
第二章 JAVA语言基础.
不确定度的传递与合成 间接测量结果不确定度的评估
在PHP和MYSQL中实现完美的中文显示
Sun SPOT数据处理 University Outreach Programs in China
第九章 字符串.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
例外處理(Exception Handling)
Java基础 JavaSE异常.
本單元介紹何謂變數,及說明變數的宣告方式。
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
程式設計實作.
第四章 基本輸出入 Java應用程式的輸出入介面有三種,分別是命令提示字元視窗、AWT元件、及Swing元件。本單元先介紹命令提示字元視窗,AWT請看第16、17章,Swing請看第20章。 輸入 輸出.
CH09 套件 物件導向程式設計(II).
授课老师:龚涛 信息科学与技术学院 2018年3月 教材: 《Visual C++程序员成长攻略》 《C++ Builder程序员成长攻略》
2018/12/3 面向对象与多线程综合实验-网络编程 教师:段鹏飞.
Java语言程序设计 第五部分 Java异常处理.
Java程序设计 第9章 继承和多态.
王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.
走进编程 程序的顺序结构(二).
辅导课程六.
乐驾-车载无线终端-CARRO 产品类型:车载无线路由器 建议零售价格:¥599 江苏鸿信
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
第五讲 四则运算计算器(一) 精品教程《C#程序设计与应用(第2版)清华大学出版社 谭恒松 主编
异常及处理.
应用实例 识别Ps & Pt ADTS 压力通道并校验 CPD8000 New MENSOR‘s ADTS: CPA8001.
Java程序设计 第2章 基本数据类型及操作.
Overview of J2ME Framework of Java Solution.
第一單元 建立java 程式.
4.2通讯服务模块线程之间传递信息 信息工程系 向模军 Tel: QQ:
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
C语言程序设计 主讲教师:陆幼利.
第二章Java基本程序设计.
K60入门课程 02 首都师范大学物理系 王甜.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
第二章 Java基本语法 讲师:复凡.
Java程式初體驗大綱 大綱 在學程式之前及本書常用名詞解釋 Hello Java!程式 在Dos下編譯、執行程式
第二章 Java语法基础.
iSIGHT 基本培训 使用 Excel的栅栏问题
Chapter 18 使用GRASP的对象设计示例.
Review 1~3.
C++语言程序设计 C++语言程序设计 第八章 继承 C++语言程序设计.
第二章 Java基本语法 讲师:复凡.
Java程序设计 第17章 异常和断言.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
THERMOPORT 20 手持式温度表 THERMOPORT系列手持温度表基于所用技术及对实际应用的考 虑,确立了新的标准。
JAVA 程式設計與資料結構 第三章 物件的設計.
第2章 Java语言基础.
第4讲 类和对象、异常处理 ggao.
亚博科技 Arduino视频教程 第1讲 Hello World!
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
创建、启动和关闭Activity 本讲大纲: 1、创建Activity 2、配置Activity 3、启动和关闭Activity
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
第二章 Java基础语法 北京传智播客教育
工业机器人入门使用教程 ESTUN机器人 主讲人:李老师
Summary
Presentation transcript:

Sun SPOT程序设计 University Outreach Programs in China 蒋清野(John) Sun 中国技术社区,高级经理 John.Jiang@Sun.Com http://www.qyjohn.net/ Qingye Jiang (John) Senior Manager Sun Developer Network, China 1

Sun Sun SPOT Small Programmable Object Technology - 基于ARM 902T处理器(32位,180MHz) - 512 KB SRAM,4 MB Flash - 硬件上直接运行Java虚拟机(无操作系统) - 使用Java语言编程 (NetBeans IDE) - 支持CLDC 1.1和MIDP 1.0规范 - 通讯接口:802.15.4规范 - 通过USB接口与上位机通讯(mini-b) - 可充电锂电池(3.6V, 750 mAh)  - 深层睡眠模式(36 uA)

Sun SPOT应用程序框架 //声明包名称 package org.sunspotworld.demo; //导入应用程序需要使用的雷库 import com.sun.spot.peripheral.Spot; import com.sun.spot.sensorboard.EDemoBoard; import java.io.*; import javax.microedition.io.*; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; //定义一个类,类名为SunSpotApplication(可根据需要命名),该类的父类为MIDlet public class SunSpotApplication extends MIDlet { //定义startApp()方法 protected void startApp() throws MIDletStateChangeException { } //定义pauseApp()方法(此方法在Sun SPOT应用中从来不会被调用) protected void pauseApp() { //定义destroyApp()方法 protected void destroyApp(boolean unconditional) throws MIDletStateChangeException {

Sun SPOT应用中的import部分 import com.sun.spot.peripheral.Spot; //静态类,定义了SPOT电路板上的各种元件 import com.sun.spot.sensorboard.EDemoBoard; //Sun 公司的SPOT的传感器板上面的外设当中的三色LED指示灯 import com.sun.spot.sensorboard.peripheral.ITriColorLED; //Sun 公司的SPOT的外设当中的射频装置的广播政策管理器 import com.sun.spot.peripheral.radio.IRadioPolicyManager; //Sun 公司的SPOT的射频I/O的两种实现 import com.sun.spot.io.j2me.radiostream.*; import com.sun.spot.io.j2me.radiogram.*; //Sun 公司的SPOT的一些常用方法 import com.sun.spot.util.*; //Java ME中的一些常用类库 import java.io.*; import javax.microedition.io.*; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException;

Sun SPOT应用中的startApp()方法 protected void startApp() throws MIDletStateChangeException { // 显示调试信息 System.out.println("Hello, world"); // 监测USB电缆是否连接到开发主机,识别并处理主机发送给SPOT的指令 new BootloaderListener().start(); // 获得本机IEEE Mac地址并显示 IEEEAddress ourAddr = new IEEEAddress(Spot.getInstance().getRadioPolicyManager().getIEEEAddress()); System.out.println("Our radio address = " + ourAddr.asDottedHex()); // 获得三色LED指示灯的引用地址,将第一只LED指示灯设置为红色 ITriColorLED [] leds = EdemoBoard.getInstance().getLEDs(); leds[0].setRGB(100,0,0); // 进入一个死循环 boolean running = true; while (running) { leds[0].setOn(); // 开启第一只LED Utils.sleep(250); // 等待250 毫秒 leds[0].setOff(); // 关闭第一只LED Utils.sleep(3000); // 等待3000毫秒 } notifyDestroyed(); // 如果运行到这里,则结束MIDP的运行(到不了)

访问Sun SPOT的各种传感器 传感器板: - 三轴加速度计(2G/6G) - 光照传感器 - 温度传感器 - 按钮两个 - 可编程LED(8 只),电源指示LED,状态指示LED - 模拟信号接口(6 个),5个GPIO,4 个高电流输出 访问所有的传感器设备都涉及到I/O操作,需要捕获与I/O 相关的例外! try { //在这里访问传感器设备 } catch (IOException ex) { System.out.println("Error in I/O: " + ex); }

访问Sun SPOT的加速度计

访问Sun SPOT的加速度计 在应用程序的开头部分,您需要import与加速度计相关的类库: import com.sun.spot.sensorboard.peripheral.IAccelerometer3D; 在应用程序中,声明一个IAccelerometer3D对象: IAccelerometer3D accel = EDemoBoard.getInstance().getAccelerometer(); 获得X, Y, Z三轴上的加速度值: double accelX = accel.getAccelX(); double accelY = accel.getAccelY(); double accelZ = accel.getAccelZ(); 获得X, Y, Z三轴上的倾斜度: double tiltX = accel.getTiltX(); double tiltY = accel.getTiltY(); double tiltZ = accel.getTiltZ();

访问Sun SPOT的加速度计 LIS3L02AQAccelerometer 是IAccelerometer3D的子类 在Sun SPOT自带的传感器上,自带的加速度计型号为LIS3L02AQ。该加速度计的测量范围可以设定为2G或者是6G,在测量范围不同的时候,其测量精度也是不同的。 import com.sun.spot.sensorboard.peripheral.LIS3L02AQAccelerometer; 在应用程序中访问该加速度计: LIS3L02AQAccelerometer acc = (LIS3L02AQAccelerometer)EDemoBoard.getInstance().getAccelerometer(); 获得加速度计的当前测量范围。如果加速度计工作在2G状态,该方法返回SCALE_2G;如果加速度计工作在6G状态,该方法返回SCALE_6G。 public int scale = acc.getCurrentScale(); 设定加速度计的测量范围为2G: acc.setScale(acc.SCALE_2G); 设定加速度计的测量范围为6G: acc.setScale(acc.SCALE_6G); LIS3L02AQAccelerometer 是IAccelerometer3D的子类 在前一个页勉励所提到的各种IAccelerometer3D的方法 均可直接在LIS3L02AQAccelerometer中使用,例如 acc.getAccelX(); acc.getTiltX();

访问Sun SPOT的光照传感器 在应用程序的开头部分,您需要import与光照传感器相关的类库: import com.sun.spot.sensorboard.peripheral.ILightSensor; 在应用程序中,声明一个ILightSensor对象: ILightSensor lightSensor = EDemoBoard.getInstance().getLightSensor(); 读取光照强度,其数值范围在0 到740 之间。 int lightIndication = lightSensor.getValue();

访问Sun SPOT的温度传感器 在应用程序的开头部分,您需要import与温度传感器相关的类库: import com.sun.spot.sensorboard.peripheral.ITemperatureInput; 在应用程序中,声明一个ITemperatureInput对象: ITemperatureInput tempSensor = EDemoBoard.getInstance().getADCTemperature(); 读取温度数据,用华氏度表示: double tempF = tempSensor.getFahrenheit(); 读取温度数据,用摄氏度表示: double tempC = tempSensor.getCelsius();

访问Sun SPOT的控制按钮 在应用程序的开头部分,您需要import与控制按钮相关的类库: import com.sun.spot.sensorboard.peripheral.ISwitch; 在应用程序中,声明两个ISwitch对象,其中sw1为左边的控制按钮,sw2为右边的控制按钮: ISwitch sw1 = EDemoBoard.getInstance().getSwitches()[0]; ISwitch sw2 = EDemoBoard.getInstance().getSwitches()[1]; 控制按钮实际上是一个数字开关,它可以被设置为开启和关闭两种状态。 检查sw1和sw2是否为开启状态: boolean status = sw1.isOpen(); boolean status = sw2.isClose(); 您也可以让程序等待某个控制按钮的状态发生改变,例如: sw1.waitForChange(); waitForChange()是一个阻塞方法。它会停止当前线程的执行,一直到该控制按钮的状态发生改变为止。

访问Sun SPOT的LED 在应用程序的开头部分,您需要import与LED相关的类库: import com.sun.spot.sensorboard.peripheral.ITriColorLED; 在应用程序中,获得LED对象的实例: ITriColorLED [] leds = EDemoBoard.getInstance().getLEDs(); 设定某个LED的颜色: leds[0].setRGB(100,0,0); 控制某个LED的开启: leds[0].setOn(); leds[0].setOff();

Sun SPOT传感器综合编程练习 编写一个Sun SPOT应用程序,用LED模拟一个在水中作单向运动的小球。该小球可以是一个密度大于水的铁球,也可以是一个密度小于水的气球,使用左边的控制按钮改变其密度状态。该小球的颜色可以使用温度或者是亮度来控制,当温度(亮度)较高的时候,小球的颜色为红色;当温度(亮度)较低的时候,小球的颜色为绿色;过渡颜色为蓝色。 可以参考Demos\CodeSamples这个目录里面的例程。

Sun SPOT传感器:滤波 算术平均值滤波 S=(X1+X2+...+XN)/N 中值滤波 对n个采样数据排序,取中间值作为滤波结果 防脉冲干扰平均值滤波 去掉一个最高分、去掉一个最低分,计算其余的平均值作为滤波结果 一阶惯性滤波 S(i)=a.x(i)+(1-a)S(i-1) 其中x(i)为本次采样值,S(i-1)为上一次的滤波输出值。

Sun SPOT传感器综合编程练习 连续采集加速度计的信息,用不同的方法对其进行滤波。比较滤波前和滤波后的数据,观察不同滤波算法的效果。

Sun SPOT程序设计 University Outreach Programs in China 蒋清野(John) Sun 中国技术社区,高级经理 John.Jiang@Sun.Com http://www.qyjohn.net/ Qingye Jiang (John) Senior Manager Sun Developer Network, China 23