读取Telosb内部传感器数据,并在计算机上显示。

senseC.nc代码如下:

 #include "Timer.h"
#include "sense.h"
#include "printf.h" module senseC
{
uses{
interface Boot;
interface Timer<TMilli>;//??????
interface Read<uint16_t>;
interface SplitControl;
interface Packet;
interface AMSend;
}
}
implementation
{
bool busy=FALSE;
message_t pkt; event void Boot.booted()
{
call SplitControl.start();
}
event void SplitControl.startDone(error_t err)
{
if(SUCCESS==err)
call Timer.startPeriodic();
else
call SplitControl.start();
}
event void SplitControl.stopDone(error_t err){} event void Timer.fired()
{
call Read.read();
} event void Read.readDone(error_t err,uint16_t data)
{
if(SUCCESS==err)
{
if(!busy)
{
SenseMsg* tspkt=(SenseMsg*)(call Packet.getPayload(&pkt,sizeof(SenseMsg)));
if(NULL==tspkt)
return;
if (call Packet.maxPayloadLength() < sizeof(SenseMsg))
return;
tspkt->data=((float)data/*1.5-0.986)/0.0035;//(float)data*3/4096
if(call AMSend.send(AM_BROADCAST_ADDR,&pkt,sizeof(SenseMsg))==SUCCESS)
busy=TRUE;
//java net.tinyos.tools.PrintfClient -comm serial@/dev/ttyUSB0:telosb
printf("The current temperature is %u.\n",tspkt->data);
printfflush();
}
}
}
event void AMSend.sendDone(message_t* msg,error_t err)
{
if(msg==&pkt)
busy=FALSE;
}
}

注意事项:

  • 使用printf()须在Makefile中添加代码:CFLAGS += -I$(TOSDIR)/lib/printf
  • 可用的内部传感器组件可在$(TOSDIR)/chips/msp430/sensors/中找到
  • 由Read.readDone()得到的数据还需进一步的计算

下面我们由Java tools输出程序的结果:

1、java net.tinyos.tools.Listen -comm serial@/dev/ttyUSB0:telosb

2、java net.tinyos.tools.MsgReader -comm serial@/dev/ttyUSB0:telosb SenseMsg

3、java net.tinyos.tools.PrintfClient -comm serial@/dev/ttyUSB0:telosb

4、java net.tinyos.sf.SerialForwarder -comm serial@/dev/ttyUSB0:telosb

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

  1. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  2. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  3. JSP学习笔记(三):简单的Tomcat Web服务器

    注意:每次对Tomcat配置文件进行修改后,必须重启Tomcat 在E盘的DATA文件夹中创建TomcatDemo文件夹,并将Tomcat安装路径下的webapps/ROOT中的WEB-INF文件夹复 ...

  4. java之jvm学习笔记三(Class文件检验器)

    java之jvm学习笔记三(Class文件检验器) 前面的学习我们知道了class文件被类装载器所装载,但是在装载class文件之前或之后,class文件实际上还需要被校验,这就是今天的学习主题,cl ...

  5. VSTO学习笔记(三) 开发Office 2010 64位COM加载项

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  6. Java IO学习笔记三

    Java IO学习笔记三 在整个IO包中,实际上就是分为字节流和字符流,但是除了这两个流之外,还存在了一组字节流-字符流的转换类. OutputStreamWriter:是Writer的子类,将输出的 ...

  7. NumPy学习笔记 三 股票价格

    NumPy学习笔记 三 股票价格 <NumPy学习笔记>系列将记录学习NumPy过程中的动手笔记,前期的参考书是<Python数据分析基础教程 NumPy学习指南>第二版.&l ...

  8. Learning ROS for Robotics Programming Second Edition学习笔记(三) 补充 hector_slam

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  9. Learning ROS for Robotics Programming Second Edition学习笔记(三) indigo rplidar rviz slam

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  10. Typescript 学习笔记三:函数

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

随机推荐

  1. Centos7安装Oracle 11gR2

    ======================================== - 环境:VM12+centos7 x86_64 minimal - 最小化安装的Centos7 - 虚拟机配置- 5 ...

  2. linux下arm汇编注释符

    注意使用 @ 符 # 是整行注释符 @ 是行内注释符 以为 @ 是行内注释符,害我调试了半天.

  3. kali下的miranda工具只适合同一路由下使用

    在终端输入如下命令: miranda -v -i eth0 上面的命令是指定打开网卡eth0,返回结果如下: miranda提示输入开启upnp的主机,现在我们不知道哪台主机开启了upnp,输入命令“ ...

  4. com.google.gson.stream.MalformedJsonException

    今天下午项目更新后,调用接口时,提示“请求失败”,发现项目网络框架解析时,报错如下:com.google.gson.stream.MalformedJsonException: Unterminate ...

  5. Map、Set、List 集合 差别 联系

    提到集合之前,先说说数组Array和集合的区别:   (1)数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)   (2)JAVA集合可以存储和操作数目不固定的一组数据. ( ...

  6. web漏洞详解及修复建议

    1.漏洞描述 跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,可被用于进行窃取隐私.钓鱼欺骗.偷取密码.传播恶意代码等攻击行为. 恶意的攻击者将对客户端有危害的 ...

  7. scrapy 琐碎的东西

    1.深度指定 DEPTH_LIMIT=1 2.常用命令 scrapy startproject name scrapy genspider name name.com scrapy crawl nam ...

  8. angularjs $injector:nomod

    参考 http://blog.163.com/gis_warrior/blog/static/19361717320153111134135/ 检查是否有[],或者是否多次定义同一个module 标准 ...

  9. java使用正则表达式

    package com.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Tes ...

  10. try cache

    try{ $did = DB::insert('vmi_sales_orders',array_keys($value))->values($value)->execute('newerp ...