通信新技术实验报告(编辑修改稿)内容摘要:

Transactions:该参数是一个指向 AF_Transaction_s结构体类型的指针,在该结构体类型的变量中,存放着需要发送的数 据。 bTxOptions:指定发送方式,可以选择下列的值,这些值可以进行逻辑或。 u8DiscoverRoute:设定所采用的路由发现模式。 u8RadiusCounter:数据发送的深度,即所发送数据包的最大转发次数,如果设置为 0,协议栈将采用 2倍的 MaxDepth发送深度。 4. 收到 MsgObject调用的函数 JZA_bAfMsgObject ( ) 该函数属于协议栈调用应用程序的函数,用来处理来自其他结点发送来的MSG帧。 该函数的原型为: PUBLIC bool_t JZA_bAfMsgObject(APS_Addrmode_e eAddrMode, uint16 u16AddrSrc, uint8 u8SrcEP, uint8 u8LQI, uint8 u8DstEP, uint8 u8ClusterID, uint8 *pu8ClusterIDRsp, AF_Transaction_s *puTransactionInd, 通信新技术综合训练报告 实验三 简单点对点无线通信实验 第 10页,共 83页 AF_Transaction_s *puTransactionRsp) 各形参描述如下: eAddrMode:该参数定义了发送的目标地址模式,它是 APS_Addrmode_e枚举类型的数据 . u16AddrSrc:该参数是数据发送方的源短地址,地址范围为 0x0000到0xFFFE。 u8SrcEP:源端口号,范围是 0x01到 0xF0。 u8LQI:接收帧的链路质量。 u8DstEP:目标端口号,范围是 0x01到 0xF0。 *puTransactionInd,:该参数是一个指向 AF_Transaction_s结构体类型的指针,在该结构体类型的变量中,存放着接收的数据。 *puTransactionRsp:该参数是一个指向 AF_Transaction_s结构体类型的指针,在该结构体类型的变量中,存放着 response信息。 5. 简单设备描述函数 afmeAddSimpleDesc( ) 该函数属于 AFME( AF Sublayer Management Entity) 类函数,在增加设备描述符函数 vAddDesc(void)中调用,其功能是为一个 endpoint增加一个简单描述符 (simple descriptor)。 如果一个 endpoint上没有正确定义的简单描述 符,那么它将不能正确地接收来自其他结点的数据,通常简单描述符应该在设备建立网络成功或者加入网络成功后添加。 三、软件设计 1. 分别为 Coordinator和 EndDevice设计一个程序,分别用按键控制切换对方对应 LED亮 /灭状态。 如 Coordinator的 SW3控制 EndDevice的 LED3, EndDevice的SW0控制 Coordinator的 LED0。 Coordinator: 程序 首先 执行 AppColdStart( )函数,设置信道号和 PAN ID,然后 调用 vInit()函数,初始化 系统、 按键、 LED灯和协议栈, 若启动成功,则硬件上的标志位 LED0灭,其次再判断是否有新的结点加入, 若有新 结点加入,硬件上得标志位 LED1灭 ;判断是否 有按键 被按下,若按下了则调用 vSendData()函数向 enddevice发送一个数据 , 在程序运行过程中若接收到 MSG信息,则调用vLedControl(0,bToggle)控制灯 的 亮灭。 Coordinator主程序流程图 : 开 始系 统 、 L E D 、 按 键 初 始 化N读 取 按 键 的 值Y网 络 是 否 启 动 成 功调 用 v S e n d D a t a ( )函 数 发 送 数 据是 否 有 新 的 结 点 加 入NY是 否 有 M S G 信 息 帧调 用 接 收 函 数 控 制L E D 亮 灭NY 通信新技术综合训练报告 实验三 简单点对点无线通信实验 第 11 页,共 83页 Enddevice: 程序首先 执行 AppColdStart( )函数,设置信道号和 PAN ID,然后调用 vInit()函数,初始化 系统、 按键、 LED灯和协议栈,并且启动 BOS定时 时钟; 其后判断是否加入网络成功,若加入成功,则硬件上的标志位 LED0灭 ; 判断是否 有按键 被按下,若按下了则调用 vSendData()函数向 enddevice发送一个数据 , 在程序运行过程中若接收到 MSG信息,则调用 vLedControl(0,bToggle)控制灯的 亮灭。 主程序流程图如下图所示: Enddevice主程序流程图 : 开 始系 统 、 L E D 、 按 键 初 始 化读 取 按 键 的 值Y调 用 v S e n d D a t a ( )函 数 发 送 数 据是 否 加 入 网 络 成 功NY是 否 有 M S G 信 息 帧调 用 接 收 函 数 控 制L E D 亮 灭NY 2. 分别为 Coordinator和 EndDevice设计一个程序,其功能为:按下Coordinator的 SW0,某变量 X(初始值 0)显示在 LCD上,同时将 X发送给 EndDevice,EndDevice收到该数据后进行数据处理(加 1),等待 1秒后再将其发送给Coordinator, Coordinator收到后将该值赋予 X并显示在 LCD上,同时再次发送给EndDevice,如此重复运行。 Coordinator: 程序首先 执行 AppColdStart()函数,设置信道号和 PAN ID,然后 调用 vInit()函数,初始化 系统、 按键、 LED灯和协议 栈,并且启动 BOS定时 时钟; 其后判断网络是否启动成功,若启动成功 ,硬件上得标志位 LED1灭 ; 判断是否 有按键 被按下,若按下了,调用函数 vSendData()向 EndDevice发送 x;在程序运行过程中若接收到 EndDevice发送的数据,调用 LED显示,再调用函数vSendData()向 EndDevice发送 x。 主程序流程图如下图所示: Coordinator主程序流程图 : 开 始系 统 、 L E D 、 按 键 初 始 化N读 取 按 键 的 值Y网 络 是 否 启 动 成 功调 用 液 晶 显 示 程 序是 否 有 新 的 结 点 加 入NY是 否 有 M S G 信 息 帧调 用 液 晶 显 示 程 序NY调 用 v S e n d D a t a ( )函 数 发 送 数 据调 用 v S e n d D a t a ( )函 数 发 送 数 据 通信新技术综合训练报告 实验三 简单点对点无线通信实验 第 12页,共 83页 Enddevice: 程序首先 执行 AppColdStart()函数,设置信道号 和 PAN ID,然后调用 vInit()函数,初始化 系统、 按键、 LED灯和协议栈,并且启动 BOS定时 时钟;其后判断是否加入网络成功,若加入成功,则硬件上的标志位 LED0灭 ; 判断若接收到 Coordinator发送的数据, 将接收的数据加 1,最后调用 BOS时钟周期性调用 vAppTick函数,函数中调用 vSendData()向 Coordinator发送 x,这样就能实现定时发送。 主程序流程图如下图所示: Enddevice主程序流程图 : 开 始系 统 、 L E D 、 按 键 初 始 化Y是 否 加 入 网 络 成 功NY是 否 有 M S G 信 息 帧将 接 收 到 的 数 据 加 1NY调 用 v S e n d D a t a ( )函 数 发 送 数 据 四、实验结果与分析 1. 在实验一中分别按动 Coordinator 的 SW0~SW3,在 Enddevice 上的LED0~LED3 能够实现相应的亮灭,同样地,分别按动 Enddevice 上的SW0~SW3,也能使得 Coordinator 上相应的 LED0~LED3 亮灭。 可以达到按键控制双方的效果 ,符合题目要求,说明程序设计正确。 2. 在实验二中按动 Coordinator的 SW0,可以看见 LCD液晶显示频上数据从 0开始自加一, 说明 Coordinator和 Enddevice之间相互发送数据了, 符合题目要求 ,说明程序设计正确。 五、存在问题 和解决方法 1. 在下载完程序上电测试时, 发现 Coordinator 和 Enddevice 的 LED0、 LED1均不灭,那就说明网络建立没有成功,不能实现相互间的通信,考虑到这有可能是信道干扰的问题,和其他人的信道相冲突了。 于是,我将信道改成了 21,同时将网络号也改掉了,重新进行下载,上电后,测试灯均灭掉了,说明网络建立成功,可以实现通信。 2. 在实验一中,当按下 SW0 是 LED0 亮时,必须按两次 SW1 才能使 LED1亮,先开始以为是按键的问题,可是后来发现自己程序中指定义了一个变量bToggle,所以只有当 LED0 灭了后,那么按一下 SW1 则 LED1 就亮了,这是程序中需要改进的地方。 通信新技术综合训练报告 第 13页,共 83页 实验四 两个 EndDevice之间的无线通信实验 一、实验内容 1. 分别为 Coordinator 和 EndDevice 设计一个程序,其功能为: Coordinator负责建立网络和分配短地址。 按下 EndDevice A 的按钮 SW0 发送广播请求绑定信息, LED0 闪烁,收到该信息的 EndDevice B 的 LED0 闪烁,按下其按钮 SW0则返回绑定应答信息,同时 LED0 处于点亮状态, EndDevice A 收到应答后 LED0也处于点亮状态, 表示双方绑定成功。 之后按动每个 EndDevice 的按钮 SWSW3 可分别切换对方对应 LED 亮 /灭状态。 如果按下任何 EndDevice 的 SW1 则解除绑定,各 EndDevice 的 LED0 灭,且 LED1 闪烁 3 秒。 2. 分别为 Coordinator 和 EndDevice 设计一个程序,其功能为: Coordinator负责建立网络和分配短地址及绑定的媒介。 按动 EndDevice 按钮 SW0,向Coordinator 发送绑定请求信息, LED0 闪烁 10 秒, Coordinator 收到该信息后记录其短地址并定时 10 秒,按动另外 一个 EndDevice 的按钮 SW0 向 Coordinator发送绑定应答信息, LED0 闪烁 5 秒,在有效定时时间 10 秒内若 Coordinator 收到该应答信号,则记录其短地址,分别将记录的两个短地址发送给两个对应EndDevice,两个 EndDevice 收到短地址后分别点亮 LED0(不再闪烁),若在规定时间内没有建立绑定关系,超时后灭 LED0。 如果按下任何 EndDevice 的 SW1则解除绑定,各 EndDevice 的 LED0 灭,且 LED1 闪烁 3 秒。 绑定状态下按动每个 EndDevice 的按钮 SW SW3 可分别切换 对方对应 LED 亮 /灭状态。 二、实验原理 1. 通过对方的 MAC地址获得它的 16位短地址 在基于 Jennic ZigBee协议栈中,每个设备必须知道对方的 16位短地址,才能进行直接通信,而 16位短地址是在 EndDevice或 Router加入网络时由 Coordinator动态分配的。 如果一个设备(请求者)知道另一个设备的 MAC地址时,则请求者可通过调用 zdpNwkAddrReq( )函数广播查寻与该 MAC地址相匹配的结点,当匹配的结点收到该数据包则返回自己的短地址给请求者,请求者即可用该短地址与其进行通信。 2. 通过广播请求对方绑定获得它的 16位短地址 在使用 afdeDataRequest( )函数发送数据包时,将 16位的目标地址设置为0xffff,即可以广播的形式将数据包发送出去。 一个设备(请求者)想获取另一个设备的 16位短地址的方法是:发送一个广播请求绑定指令数据包,符合条件的结点(如判断指令包内容,按下按钮等)发送应答包(含自己的短地址)给请求者,请求者即可用该短地址与其进行通信。 3. 通过发送请求 /应答绑定信息给 Coordinator获得对方的 16位短地址 按动 EndDevice或 Router按钮, 调用 afdeDataRequest。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。