简述:发送和接受数据的程序分别烧录到两个节点上,发送方发送流水灯数据,接受方接受数据并实现流水灯

1、发送和接受程序用到的组件及其接口如图(通过make telosb docs获得)所示:

 

2、发送程序sendC.nc代码:

#include "Timer.h"
#include "send.h" module sendC @safe()
{
uses{
interface Boot;
interface Timer<TMilli> as Timer; interface SplitControl as AMControl;
interface Packet;
interface AMSend;
}
}
implementation
{
uint8_t dataS=;
bool busy=FALSE;//if write 'false',`false' undeclared here (not in a function)
message_t pkt; void startTimer()//internal function
{
call Timer.startPeriodic();
} //start radio
event void Boot.booted()
{
call AMControl.start();
}
event void AMControl.startDone(error_t err)
{
if(SUCCESS==err)
startTimer();
else
call AMControl.start();
}
event void AMControl.stopDone(error_t err){} task void compute()
{
if(dataS>=0x04)
dataS=;
else
dataS=dataS<<;
}
event void Timer.fired()
{
if(!busy)
{
MsgToRadio* trpkt=(MsgToRadio*)(call Packet.getPayload(&pkt,sizeof(MsgToRadio)));
if(NULL==trpkt)
return;
trpkt->nodeid=TOS_NODE_ID;//发送节点的ID,TOS_NODE_ID为在make telosb install,1时设置的
trpkt->dataS=dataS;
//AM_BROADCAST_ADDR广播模式,修改AM_BROADCAST_ADDR为2,则节点只向2号节点发,其他节点不响应
if(call AMSend.send(AM_BROADCAST_ADDR,&pkt,sizeof(MsgToRadio))==SUCCESS)//在if(!busy)里面????
busy=TRUE;
}
post compute();
}
event void AMSend.sendDone(message_t* msg,error_t err)
{
if(msg==&pkt)
busy=FALSE;
}
}

3、发送程序sendCAppC.nc代码:

configuration sendAppC
{
}
implementation
{
components MainC,sendC;
components new TimerMilliC(); components ActiveMessageC;
components new AMSenderC(); sendC.Boot->MainC;
sendC.Timer->TimerMilliC; sendC.AMControl->ActiveMessageC;
sendC.Packet->AMSenderC;
sendC.AMSend->AMSenderC; }

4、发送程序send.h代码:

#ifndef SEND_H
#define SEND_H typedef nx_struct MsgToRadio
{
nx_uint8_t nodeid;
nx_uint8_t dataS;
}MsgToRadio; #endif

5、接受程序核心代码:

//an event-driven process
event message_t* Receive.receive(message_t* msg,void* payload,uint8_t len)
{
if(len==sizeof(MsgFromRadio))
{
MsgFromRadio* frpkt=(MsgFromRadio*)payload;
call Leds.set(frpkt->dataR);
}
return msg;
}

参考网址:http://tinyos.stanford.edu/tinyos-wiki/index.php/Mote-mote_radio_communication

附录:

TinyOS的make命令:

Tinyos学习笔记(一)的更多相关文章

  1. Tinyos学习笔记(三)

    读取Telosb内部传感器数据,并在计算机上显示. senseC.nc代码如下: #include "Timer.h" #include "sense.h" # ...

  2. Tinyos学习笔记(二)

    1.TinyOS communication tools java serialApp -comm serial@/dev/ttyUSB0:telosb java net.tinyos.tools.L ...

  3. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  4. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

  5. PHP-会员登录与注册例子解析-学习笔记

    1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...

  6. 2014年暑假c#学习笔记目录

    2014年暑假c#学习笔记 一.C#编程基础 1. c#编程基础之枚举 2. c#编程基础之函数可变参数 3. c#编程基础之字符串基础 4. c#编程基础之字符串函数 5.c#编程基础之ref.ou ...

  7. JAVA GUI编程学习笔记目录

    2014年暑假JAVA GUI编程学习笔记目录 1.JAVA之GUI编程概述 2.JAVA之GUI编程布局 3.JAVA之GUI编程Frame窗口 4.JAVA之GUI编程事件监听机制 5.JAVA之 ...

  8. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  9. CSS学习笔记

    CSS学习笔记 2016年12月15日整理 CSS基础 Chapter1 在console输入escape("宋体") ENTER 就会出现unicode编码 显示"%u ...

随机推荐

  1. linux下arm汇编的常用指令解析

    1. ldr 和 str : (1) ldr 作为指令,叫做寄存器加载指令.将内存中的值加载到寄存器中. (2) ldr 作为伪指令,实现一个32位常数或地址值加载到寄存器中.后面加载的常量或地址值标 ...

  2. JavaScript数组方法大全(推荐)

    原网址:http://www.jb51.net/article/87930.htm 数组在笔试中经常会出现的面试题,javascript中的数组与其他语言中的数组有些不同,为了方便之后数组的方法学习, ...

  3. Push API

    [Push API] The Push API gives web applications the ability to receive messages pushed to them from a ...

  4. 解题8(FindLongestNumberStr)

    题目描述 样例输出 输出123058789,函数返回值9 输出54761,函数返回值5 接口说明 函数原型: unsignedint Continumax(char** pOutputstr,  ch ...

  5. tomcat指向外部项目

    参考 https://www.cnblogs.com/ysocean/p/6893446.html conf/server.xml中增加 <Context path="/myweb&q ...

  6. 从上往下打印二叉树(python)

    题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. # -*- coding:utf-8 -*- # class TreeNode: # def __init__(self, x): # ...

  7. 第十章 优先级队列 (xa3)左式堆:插入与删除

  8. 缩点+最小路径覆盖 hdu 3861

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3861 题意:输入t,表示t个样例.接下来每个样例第一行有两个数n,m表示点数和有向边的数量,接下来输入 ...

  9. Python+Selenium学习--前进和后退

    场景 这两个功能一般不太常用.所能想到的场景大概也就是在几个页面间来回跳转,省去每次都get url. 代码 #!/usr/bin/env python # -*- coding:utf-8 -*- ...

  10. laravel5.6上传图片及显示

    借鉴大神博客:https://blog.csdn.net/tony_110/article/details/80105099文档:http://laravelacademy.org/post/8965 ...