点对点通信程序分析

点对点通信程序分析

ID:40732410

大小:205.00 KB

页数:25页

时间:2019-08-06

点对点通信程序分析_第1页
点对点通信程序分析_第2页
点对点通信程序分析_第3页
点对点通信程序分析_第4页
点对点通信程序分析_第5页
资源描述:

《点对点通信程序分析》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、试验三:MicaZ-TinyOS2.x平台下点对点通讯试验——BlinktoRadio实验试验目的:本节介绍TinyOS中的无线通信。能够熟练使用TinyOS支持通信的接口和组件,并且我们可以学习到:1).TinyOS2.0消息缓存message_t的使用;2).通过radio发送一个message;3).接收一个message通过radio。本实验所需硬件平台:2个micaz节点,1块mib510板,1根串口线。一:简要介绍TinyOS提供了一些接口来提取底层的通信服务和一些组件来实现这些接口。所有的这些接口和组件使用一个公共的消息缓存区,叫做message_t。这

2、个message_t消息是替换了TinyOS1.x中的TOS_Msg。和TinyOS1.x不同,message_t的成员变量不透明,因此不能直接访问。而message_t是一个抽象的数据类型,它的成员变量通过accessor和mutator函数进行读写。二:熟悉基本的通信接口这里有一些接口和组件使用message_t作为底层的数据结构,我们看一下目录tos/interfaces中的这些接口,我们应该熟悉通信系统的通用功能。Packet:为message_t抽象的数据类型提供基本的访问。接口提供用了一些指令,这些指令可以清除消息内容,获得消息中数据负载的长度,并获得数据

3、负载存储区的指针。//tos/interfaces/Packet.nc:#includeinterfacePacket{//清空数据包,将msg的数据清空重新使用commandvoidclear(message_t*msg);//返回信息负载的长度commanduint8_tpayloadLength(message_t*msg);//设置负载长度commandvoidsetPayloadLength(message_t*msg,uint8_tlen);//返回最大负载commanduint8_tmaxPayloadLength();//获取负载

4、,len为需要的负载长度commandvoid*getPayload(message_t*msg,uint8_tlen);}注:Packet.nc文件中包含了message.h文件,下面我们看一下message.h文件的内容//tos/types/message.h://platform_message.h为相应平台的目录下,例如在MicaZ中为://tosplatformsmicazplatform_message.h//MicaZ使用的MAC层为802.15.4的MAC协议,我们无需关心MAC协议//该message同样定义了如何用于串口通信。#includ

5、e"platform_message.h"#ifndefTOSH_DATA_LENGTH#defineTOSH_DATA_LENGTH28#endif//定义了广播地址为为OxFFFF#ifndefTOS_BCAST_ADDR#defineTOS_BCAST_ADDR0xFFFF#endif//nx_struct为nesC中的结构体,即可理解为C语言中的structtypedefnx_structmessage_t{//nx_uint8_t为nesC中的无符号8为整型数据nx_uint8_theader[sizeof(message_header_t)];nx_uin

6、t8_tdata[TOSH_DATA_LENGTH];nx_uint8_tfooter[sizeof(message_footer_t)];nx_uint8_tmetadata[sizeof(message_metadata_t)];}message_t;Send:提供了基本无地址消息的发送接口。接口提供了一些指令用于发送或取消等待发送的消息。这个接口提供了一个事件来相应消息是否发送成功。它同样提供了一些函数,可以很方便的获得通信层允许的最大消息负载长度,并可获得消息负载区的指针。//tos/interfaces/Send.nc:#include

7、h>#includeinterfaceSend{//设置发送数据包的负载长度commanderror_tsend(message_t*msg,uint8_tlen);//取消数据的传输commanderror_tcancel(message_t*msg);//发送数据完成eventvoidsendDone(message_t*msg,error_terror);//返回通讯层允许的最大负载长度commanduint8_tmaxPayloadLength();//获取负载commandvoid*getPayload(message

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。