zigbee 串口通信(2)

2020-02-21 00:03

SerialApp_Init函数有两句话:

uartConfig.callBackFunc = SerialApp_CallBack; HalUARTOpen (SERIAL_APP_PORT, &uartConfig);

此处将dmaCfg.uartCB这个函数注册成为SerialApp_CallBack,也就是说

SerialApp_CallBack函数每次循环中被调用一次,对串口的内容进行查询,如果DMA中接收到了数据,则调用HalUARTRead,将DMA数据读至数据buffer并通过AF_DataRequest函数发送出去,注意:送出去的信息的CLUSTERID(信息簇ID)号为SERIALAPP_CLUSTERID1。

总结一下这个过程:串口数据==>DMA接收==>主循环中通过SerialApp_CallBack查询==>从DMA获取并发送到空中。

2. 节点2在收到空中的信号后,如何传递给与其相连的串口终端?

节点2从空中捕获到信号后,在应用层上首先收到信息的就是SerialApp_ProcessEvent这个函数了,它收到一个AF_INCOMING_MSG_CMD的事件,并通知SerialApp_ProcessMSGCmd,执行以下代码

switch ( pkt->clusterId ) {

// A message with a serial data block to be transmitted on the serial port. case SERIALAPP_CLUSTERID1: ... ...

// Transmit the data on the serial port.

if ( HalUARTWrite( SERIAL_APP_PORT, pkt->cmd.Data+1, (pkt->cmd.DataLength-1) ) ) {

// Save for next incoming message SerialApp_RxSeq = seqnb; stat = OTA_SUCCESS; } ... ...

这样就将从空中获取到的信息,传给了串口终端2--美国MM,第一句话终于传到美国了~至于后面的事情嘛,我们就不关注了,看小伙自己的造化了~~~

另外,此例程中还有一种模式,就是这个中国小伙可以按条件搜索(Joystick左键,profileID与clusterID相同者响应),但这种条件找出的MM都比较有个性--只接受你的信息,但不给你发。想想也是,明显没诚意嘛~ 这种模式的细节,本教程不再涉及,有兴趣的读者可自行了解。

声明一点,要真想泡美国MM,只用我们所谈的Zigbee是暂时搞不定的,它最大的传输距离能有几公里就相当不易了,不过隔壁办公室的MM,倒是可以考虑送她一个~~~

[四]网络结构及协议解析

本例程的重点是串口的应用,其中涉及的组网及绑定等网络层细节,暂不详细阐述,将在后续的“奥特曼Zigbee读书日记”中进行深入分析。


zigbee 串口通信(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013年上海招警考试行测技巧:计算问题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: