读取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. Vue 中select option默认选中的处理方法

    在做泰康项目的时候有个需求就是要给select默认选中的样式我的处理方法有两个 1.直接将默认值给  selectedOption <select v-model="selectedO ...

  2. 2018面向对象程序设计(Java)第14周学习指导及要求

    2018面向对象程序设计(Java)第14周学习指导及要求(2018.11.29-2018.12.2)   学习目标 (1) 掌握GUI布局管理器用法: (2) 掌握各类Java Swing组件用途及 ...

  3. Mybatis返回List<Map<K,V>>

    最终映射的字段名 会被作为 hashMap 的 key , <!-- TODO 测试返回 HashMap--> <resultMap id="testResultMap&q ...

  4. 生产环境nginx上传文件报错413 Request Entity Too Large

    修改nginx配置文件/etc/nginx/nginx.conf 在http{}中添加 client_max_body_size 100m; 意思是设置上传文件大小

  5. python学习day6 for循环 字符串的内置方法

    1.for循环 和while相比 l=[1,2,3] i=0 while i <len(l) print(l[i]) i+=1 l=['a','b','c'] for item in l: pr ...

  6. Numpy:ndarray数据类型和运算

    Numpy的ndarray:一种多维数组对象 N维数组对象,该对象是一个快速而灵活的大数据集容器,nadarry是一个通用的同构数据多维容器,也就是说,其中的所有元素必须是相同类型的.每个数组都有一个 ...

  7. as3.0视频的快进有拖动条

    package com{ import flash.display.MovieClip; import flash.events.MouseEvent; import fl.video.FLVPlay ...

  8. DES算法实现(C++版)

    #include "memory.h" #include "stdio.h" enum {encrypt,decrypt};//ENCRYPT:加密,DECRY ...

  9. WAS 与IHS集成问题

    1.安装好WAS与IHS后 发布Web发现无法启动 查阅资料后发现缺少插件Plugins 于是去下载安装对应版本的Plugins 发现还是有问题 后来想起发布web01时,插件还未安装.因此重新发布一 ...

  10. 【zookeeper】使用场景

    以下场景是我认为的zookeeper可能会大显身手的场景. 场景1:配置新增和更新 我们可以将zookeeper部署成一个配置服务,实现配置的存储和发布等功能. 具体的原理是:zookeeper可以按 ...