单播字符、字符串收发

1、刚开始,我们确实需要借助官方模板,添加简单的代码,做出通信基本收发实验,建立感性的认识。

2、然后,在官方代码基本实验基础上,了解相关的概念,掌握通信过程中原理,结合自己的理解,自己动手做一个个性化实验,验证我们的理解

3、单播、广播、组播、绑定

1)单播指:在zigbee网络里,模块之间要进行通信,发射模块非常明确知道接收模块的网络地址,以这个地址发送数据给接收模块。

zigbee模块地址特点:模块在入网的时候,父节点随机分配网络地址给子节点,但是协调器的地址在网络里的地址永远是0x0000.

在上节代码的基础上修改成发送:

在SDApp.c文件里面改

目的是按钮一按下,就数字发送出去;

把pRsp->nwkAddr改成0x0000,其大概意思是接收模块的网络地址是多少,即0x0000协调器的地址。

然后pRsp->epList[0],这个参数也得改

最终改成

这个函数的大概意思是把hello world这个字符串发送出去。

把修改后的代码按终端的方式编译。

下面是接收模块,接收模块我们只需要添加一行代码就可以了,如下

其大概意思是,本函数的参数是无线数据包的里面的内容afincomingMSGPacket_t,发送方发送数据到协调器模块,协调器模块会进入到上面函数,然后通过该参数携带的内容,其结构体如下

按照协调器模块来编译,那么就收器模块就好了。

实验验证,正确!

下面来看看协调器里面的接收函数在哪儿调用SDApp_MessageMSGCB,

先找到这个函数

在这里消息处理的时候,调用了该函数,

发送方发送数据的时候,接收方的底层,就把数据传递到应用层的SDApp_ProcessEvent处理函数来,再传到外部消息处理函数来,然后在该函数里面处理该数据包。

下面发送字符串

在发送端修改如下:

下面修改接收模块

要把接收到的字符串通过串口调试助手显示,故要移植串口文件

UART.c与UART.h,添加到工程

我们要用串口,就要对串口进行初始化,首先找到ZMain.c文件,

同时将串口的头文件添加进来

如果要取消TI默认对串口的配置,要在main函数里面的HaDriverInit函数,把对应的宏#define HAL_UART FALSE。这样我们的串口初始化就成功了。

在接受到字符显示的地方,修改为让串口发送这串字符串

测试成功

 

posted on   gary_123  阅读(466)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示