教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 政务民生 >

TinyOS系统与nesC程序设计课内实验指导书(6)

来源:网络收集 时间:2026-07-10
导读: 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

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@: PORT依赖于你所使用的节点平台和插在电脑上的位置。具体可通过在cygwin中运行或在我的电脑->管理->设备管理器->端口(COM和LPT)中查看。

$ 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字,全部文档内容请下载后查看。喜欢就下载吧 ……

TinyOS系统与nesC程序设计课内实验指导书(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/447636.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)