telosb中的Oscilloscope解析-串口通信

Oscilloscope的这个例子包括了PC与串口的接发送消息,很值得研究一番。

大体的思想是传感器节点采集数据,每采集十个数据发送一个数据包给另外一个Base节点,然后Base节点把数据转发给PC端。PC端有一个java程序收集数据并且显示。所以运行这个例子要两个节点,一个烧录Oscilloscope,一个烧录Base节点,还需要一台PC,连接Base节点,运行java程序。但是在运行java程序之前要启动SerialForward工具,这样PC和Base节点才能通信。具体命令不详细描述。

在这个例子中,我觉得很有意思的是那个java程序。

可以看到主要包括上面几个文件

Node是对节点处理,Data是对所有的数据整合,Graph是画图,windows是对系统处理,Oscilloscope.java是最

重要的函数,它包含启动函数run,数据接收和发送的方法。在这个文件中,有对数据采集频率时间的修改,有messageReceived方法,这个方法可以接收来自节点的串口信息。

/* Broadcast a version+interval message. */

void sendInterval() {

OscilloscopeMsg omsg = new OscilloscopeMsg();

omsg.set_version(version);

omsg.set_interval(interval);

try {

mote.send(MoteIF.TOS_BCAST_ADDR, omsg);

}

catch (IOException e) {

window.error("Cannot send message to mote");

}

}

这个是sendInterval方法,这个方法有一个mote.send的调用,就是把PC信息发给串口的方法。mote.send(MoteIF.TOS_BCAST_ADDR, omsg);是把omsg类发给串口。在Base中的uart.receive会接收这个方法发出

的消息。如果想做串口通信的话,可以把重点研究messageReceive这个方法和mote.send这个方法,其他都可以去掉。

在这里必须要说一下Oscilloscope.h这个头文件,里面定义了Oscilloscope_t这个结构,在java文件中运行make可以看到有一个OscilloscopeMsg.java的文件,那个就是头文件定义的结构的java类,通过里面的方法,可以控制Oscilloscope对象。如果我们需要修改某个对象用来数据传输,需要修改那个头文件,当然修改对应的phthon也是有必要的。笔者在利用这个例子作数据通信时把头文件和和python也都做了处理以免发生不必要的错误。

以上就是这个例子的大致解析。

时间: 2024-10-07 00:50:54

telosb中的Oscilloscope解析-串口通信的相关文章

在VB中利用API进行串口通信

本文转自http://blog.csdn.net/lyserver/article/details/4153335 '* ******************************************************* *'*    程序名称:basComm.bas'*    程序功能:在VB中利用API进行串口通信'*    作者:lyserver'*    联系方式:http://blog.csdn.net/lyserver'* ************************

AIR串口通信

最近公司的项目中需要用到串口通信,项目是用基于AIR的,AIR本身是不支持串口通信的,本想用 c#或java另写一个负责串口通信的模块,又感觉很烦不想那么弄,就想到了ANE.可惜以前也没弄过 ANE,现研究也感觉麻烦,主要也是因为自己很懒就想在网上找看看有没有现成的ANE,结果还真找到了. 废话说的有点多. 先放上 ANE地址 http://code.google.com/p/as3-arduino-connector/ 虽然是老外写的,但是用起来还是挺容易挺方便的. //-----------

Java实现RS485串口通信,发送和接收数据进行解析

最近项目有一个空气检测仪,需要得到空气检测仪的实时数据,保存到数据库当中.根据了解得到,硬件是通过rs485进行串口通讯的,需要发送16进制命令给仪器,然后通过轮询来得到数据. 需要先要下载RXTX的jar包,win64位下载地址:http://pan.baidu.com/s/1o6zLmTc):将解压后的rxtxParallel.dll和rxtxSerial.dll两个文件放在%JAVA_HOME%/jre/bin目录下,这样该包才能被正常的加载和调用. 代码如下: package com.g

SPCOMM控件在Delphi串口通信中的应用

SPCOMM控件在Delphi串口通信中的应用 2010-07-08 22:20:31|  分类: 个人日记 |举报 |字号 订阅 2009-03-01 05:35 摘要:利用Delphi开发工业控制系统软件成为越来越多的开发人员的选择,而串口通信是这个过程中必须解决的问题之一.本文在对几种常用串口通信方法分析比较的基础上,着重讨论了Delphi开发环境下利用Spcomm控件实现PC机与单片机之间串口通信的方法,研究了Spcomm串口通信的关键技术问题,并通过一个实例给出了Spcomm控件在De

串口通信属性及事件解析

RS-232串口,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据.典型地,串口用于ASCII码字符的传输.通信使用3根线完成:(1)地线,(2)发送,(3)接收. 本文以c#中的SerialPort类为例,分析串口各参数及事件,其他平台串口库的操作类似. 专门串口通信的朋友,建议参看<Visual C++串口通信工程开发实例导航>.   一.属性 1. PortName 串口名    默认值COM1 串口对于操作

LabVIEW上位机与串口通信

渊源 大一的时候,学校开了门公共选修课,叫LabVIEW编程,当时的我当然还不知道LabVIEW是啥东东,但还是选了.上课的老师是机械学院的一个副教授,他给我们展示了好几个用LabVIEW做的项目,譬如油箱监控上位机等,已经不太记得了.后来随着学习单片机.ARM等的串口操作,有时候一个漂亮的上位机(尤其是能显示波形的上位机)在项目中给用户展示非常的有用.过了这么多年,虽然曾经也用LabVIEW写过简单的温度监控上位机,但这次再拿起LabVIEW又好像从头开始一样,语法几已忘记殆尽! 定义通信格式

13.5 串口通信原理和控制程序

我们前边学串口通信的时候,比较注重的是串口底层时序上的操作过程,所以例程都是简单的收发字符或者字符串.在实际应用中,往往串口还要和电脑上的上位机软件进行交互,实现电脑软件发送不同的指令,单片机对应执行不同操作的功能,这就要求我们组织一个比较合理的通信机制和逻辑关系,用来实现我们想要的结果. 本节所提供程序的功能是,通过电脑串口调试助手下发三个不同的命令,第一条指令:buzz on 可以让蜂鸣器响:第二条指令:buzz off 可以让蜂鸣器不响:第三条指令:showstr ,这个命令空格后边,可以

Android串口通信

1. 解析SerialPort API 串口通信例子 首先分析一下例子中的类结构 : 通过类结构可知,最主要的还是在SerialPortJNI.java 类 ,该类写了一些Native 方法处理打开与关闭 串口 接收 发送的 SerialPort.Java 代码如下 : package com.dwin.navy.serialportapi; import java.io.FileDescriptor; import android.util.Log; /** * 串口JNI * * @auth

C# 串口通信总结

C# 串口通信总结 来源:http://www.cnblogs.com/binfire/archive/2011/10/08/2201973.html 我们知道对于 标准DLL,可以采用DllImport进行调用.例如: [DllImport("KMY350X.dll")]        private static extern int OpenPort(int PortNum, int BaudRate); 如果一些厂家比较懒的话,没有提供相应的dll,我们只能对它进行串口通信编程