TinyOS系统与nesC程序设计课内实验指导书(6)
event message_t* Receive.receive(message_t* msg, void* payload, uint8_t len) { if (len == sizeof(BlinkToRadioMsg)) { BlinkToRadioMsg* btrpkt = (BlinkToRadioMsg*)payload; call Leds.set(btrpkt->counter); } return msg; } (6)更新配件中implementation板块中的代码,添加相应的组件。 implementation { ... components new AMReceiverC(AM_BLINKTORADIO); ... } (7)把本应用程序所用到的接口与提供该接口的组件连接起来。 implementation { ... App.Receive -> AMReceiverC; } (8)测试你的程序,观察实验结果。 编译程序:make telosb。 安装到两个节点上:make telosb reinstall,ID bsl,COM
(9)编写实验报告
五 实验报告要求
①实验名称 ②实验内容说明 ③程序源代码
④实验步骤,实验中出现的问题,观察到的结果 ⑤实验总结
实验五:节点与PC的通信
一 实验目的
1、 了解节点与PC通信的基本抽象—数据包源(packet source)。 2、 掌握PC如何从网络中收集数据,如何向节点发送命令。
3、 掌握BaseStation程序和net.tinyos.tools.Listen,读出串口信息。
4、 掌握MIG的使用,并能运用它来生成消息结构的Java、Python或C接口。 5、 了解SerialForwarder和其它包源。
二 实验原理
1、包源(packet source)与TestSerial
? 包源:对于mote-pc间通信的一个基本抽象。实际上,它是一个通信媒介,一个应
用可以通过它从节点接收包,并发送包到节点上。
? 测试串行端口的第一步就是把TestSerial应用程序安装到节点上(使用make)。一
旦安装好后,就需要通过串行接口运行相应的JAVA应用程序进行通信: 如:java TestSerial –comm serial@/dev/ttyUSB0:telos 其中-comm是用字符串的形式明确包源 ? MOTECOM
如果没有-comm参数,那么工具就会检查MOTECOM环境变量,MOTECOM没有设定包源,则缺省的为SerialForwarder。 设置MOTECOM:
export MOTECOM=serial@COM1:19200
2、基站(BaseStation)和net.tinyos.tools.Listen
? BaseStation是TinyOS基本的实用应用程序。它是连接串行端口和无线通信网的桥
梁。因为TinyOS有工具(MIG)可以产生包并且通过串行端口发送包到节点,所以使用一个BaseStation允许PC工具直接和节点的网络通信。
? net.tinyos.tools.Listen 是一个包嗅探器,它以二元的形式打印侦听到的包。 $ java net.tinyos.tools.Listen 3、MIG(Message Interface Generator)
? Litsen是与节点交流的最基本的方法,信息比较难提取。所以TinyOS提供了一些
支持:从包描述中自动产生信息对象(使用mig工具产生java,python或C接口)。 ? mig有三个基本的参数: ①为那种语言产生代码
②从哪个文件找到结构体 ③结构体的名字
4、SerialForwarder
? 如果用串行端口,只能 一个pc与mote交互,并且必须是物理连接。SerialForwarder
工具则消除了这两个限制。
? SerialForwarder是第二种包源,语句如下: Sf@HOST:PORT
三 实验环境
1、JDK1.6 for windows
2、Cygwin with TinyOS 2.x 3、UltraEdit / EditPlus
四 实验内容和步骤
1、包源(packet source)与TestSerial
首先把/apps/tests/TestSerial应用程序安装到一个节点,该程序每秒向串口发送一个数据包,节点收到该数据包时,将它的序号通过三盏灯显示出来。
程序安装到节点之后,我们需要运行相应的Java程序来与串口进行通信。在应用程序TestSerial目录下,编辑: $ java TestSerial
若提示如下信息:
The java class is not found: TestSerial 这说明你还没有编译Java代码(再次运行make telosb),或是没有在Java 环境变量 CLASSPATH中加入.(当前目录)。 因为你还没有指定包源,TestSerial将包源默认为SerialForwarder,此时,程序会由于无法联系而退出。下面,我们把包源指定为串口(serial port),并使用-comm参数。具体语句如下:
serial@
$ motelist Reference CommPort Description ---------- ---------- ------------------------------------- M4AP1122 COM4 tmote sky SPEED参数可以是数字,也可以使平台名。它们之间的对照表可在support/sdk/java/net/packet/BaudRate.java中找到,具体如下:
Platform Speed (baud) telos telosb tmote micaz mica2 iris eyes
115200 115200 115200 57600 57600 57600 115200
mica2dot 19200 intelmote2 115200
当你带上正确参数之后,再运行TestSerial程序你将看到如下结果:
$java TestSerial -comm serial@COM4:telos Sending packet 1 Received packet sequence number 4 Sending packet 2 Received packet sequence number 5 Sending packet 3 Received packet sequence number 6 Sending packet 4 Received packet sequence number 7 Received packet sequence number 8 Sending packet 5 Received packet sequence number 9 Sending packet 6 2、MOTECOM
如果没有-comm参数,那么工具就会检查MOTECOM环境变量,MOTECOM没有设定包源,则缺省的为SerialForwarder。因此,假如你经常要用串口作为数据包源来跟节点通信的话,你可以先将MOTECOM值设置好,之后你在打命令的时就不用再加-comm及后面的参数了。设置方法如下:
export MOTECOM=serial@COM1:19200 # mica baud rate export MOTECOM=serial@COM1:mica # mica baud rate, again export MOTECOM=serial@COM2:mica2 # the mica2 baud rate, on a different serial port export MOTECOM=serial@COM3:57600 # explicit mica2 baud rate 试试运行下不带-comm参数的TestSerial程序,观察结果是否一样。 3、基站(BaseStation)和net.tinyos.tools.Listen 基站程序(BaseStation)是TinyOS中一个最基本也是最有用的程序,它在串口和无线收发器之间扮演着桥梁的作用。当节点从串口收到数据包时,程序马上将该数据包发送给收发器,同时切换(原本亮的,变灭;反之亦然)LED 0;相反,当它从无线收发器接收到数据包时,程序会将此数据包发送给串口,同时切换LED 1;若出现丢包(当一个节点发送速率大于另一个节点的接受速率),则切换LED 2。 现在,我们拿出两个节点,其中一个安装BlinkToRadio(见第三课),另一个安装BaseStation。你将观察到,装有BaseStation程序的节点的LED 1在闪烁。 Listen 是Java工具包中一个基本的包嗅探器,它以二元的形式打印侦听到的包。我们运行Listen观察结果:
$ java net.tinyos.tools.Listen –comm serial@COMID:telos 注:若之前已设置MOTECOM,则可省略–comm serial@COMID:telos 00 FF FF 00 00 04 22 06 00 02 00 01 00 FF FF 00 00 04 22 06 00 02 00 02 00 FF FF 00 00 04 22 06 00 02 00 03 00 FF FF 00 00 04 22 06 00 02 00 04 00 FF FF 00 00 04 22 06 00 02 0 …… 此处隐藏:3555字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [政务民生]2013年公共基础知识热点问题(七)
- [政务民生]检验检测机构资质认定评审准则及释义20
- [政务民生]关于印发重庆市房屋建筑和市政基础设施
- [政务民生]1、隧道洞身开挖支护施工技术交底书
- [政务民生]2015年山东省17地市中考语文试题分类汇
- [政务民生]2-高级会计师资格考试和评审流程图
- [政务民生]2018版中国清分机行业发展分析及前景策
- [政务民生]新课改高中政治探究
- [政务民生]2018-2024年中国新型组合房屋行业投资
- [政务民生]2015年上海市春季高考数学模拟试卷五
- [政务民生]灌砂法及环刀法测压实度(带计算过程)
- [政务民生]运筹学实验2求解非线性规划
- [政务民生]劝学、逍遥游默写(教师卷)
- [政务民生]《运筹学》 - 期末考试 - 试卷A - 答案
- [政务民生]八年级英语下册 Module 6 Hobbies测试
- [政务民生]2019年宪法知识竞赛试题库100题(含答
- [政务民生]自动化英文文献翻译
- [政务民生]公文格式实施细则
- [政务民生]高一地理上册课堂跟踪练习题6
- [政务民生]会计继续教育习题及答案
- 第三章 无约束最优化方法
- 泛读教程第三册答案
- 魏晋南北朝文学
- 幂的运算复习题
- 城市环境问题的成因与治理策略_以社会
- 钢结构行业产业链及竞争分析研究
- 新型热塑性弹性体增韧聚丙烯的研究
- 中国旅游地理B卷试题及答案
- (苏教版)五年级数学上册第三单元测试卷
- 不稳定性心绞痛诊断与治疗
- 俞氏国际后勤职能部门绩效考核办法
- GB7258-2017新标准考试题含答案
- 小学生汉字听写比赛活动方案
- 1.3《平抛运动》学案 教科版必修2
- 2011香港特别行政区公务员考试复习资料
- 考虑水力条件变化的城市给水管网可靠性
- 表面活性剂在油田开发和生产中的应用
- ITT内部培训资料-FI端吸泵的介绍
- 文明守纪,从我做起学生发言稿
- 初中读《聊斋志异》心得体会800字范文




