用zigbee
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
栈实现串口互发
很久没有写关于zigbee的东西了,其实我每天都有新的进展,每个周都有新的任务,时间真的很赶,不能每天及时的更新日志,其实我都有记录哦,最近做了个串口互发的例子,现在把
流程
快递问题件怎么处理流程河南自建厂房流程下载关于规范招聘需求审批流程制作流程表下载邮件下载流程设计
列出来,这要谢谢小峰的博客。具体的代码就请参考小峰的网易博客吧 http://wjf88223.blog.163.com/
(1)在应用层函数的头文件里声明一个串口事件,当该事件发生时,则通过串口收发数据。具体代码是:
#define UART_RX_CB_EVT 0x0002
(2)定义串口回调函数rxCB() 在SPIMgr.c源文件里,其功能是接收来自上位机的数据,并对其进行处理。串口回调函数rxCB()里面的HalUARTRead ( SPI_MGR_DEFAULT_PORT, databuf+3, rxlen)函数就是用来读接收缓冲区数据到内存的。
(3)修改SPIMgr.c里预定义,当定义了ZTOOL_P1或者ZTOOL_P2时则将自定义rxCB函数做为串口回调函数进行下一步处理。
#if defined (ZTOOL_P1) || defined (ZTOOL_P2)
uartConfig.callBackFunc = rxCB;// 原来默认的是SPIMgr_ProcessZToolData
(4)添加:事件处理函数 在应用层源文件SampleApp.c里,当之前定义的事件被触发就会对收到的串口数据进行其他处理。
对串口互发主要函数的说明及zstack理解心得:
关键的函数有rxCB,事件#defineUART_RX_CB_EVT,SampleApp_SPI_SendData( databuf, rxlen+1+2 ),SampleApp_MessageMSGCB。
首先,硬件上的要求是:设备和PC有串口线相连,设备保持电源开,PC串口选择COM3,波特率38400。
然后,设备在组建网络后按下复位键后会自动向PC发一个建网成功地一句话,这个就不说了。重点是当串口向设备发数时,会调用rxCB串口回调函数,函数的作用关键在于里面的一段代码halUARTWrite,PC发数给设备,halUARTread回显的作用,在rxCB的最后一据代码里,有OSAL_SET_event(sampaleApp_TaskID,UART_RX_CB_EVT)作用是触发自定义事件,程序转到sampaleApp的事件处理函数里,这里面会调用 SampleApp_SPI_SendData函数,作用是通过OTA将从串口收到的数据发送到其他设备,这里在发送时不但要知道目的地址,还有簇ID。在系统事件里当是AF_INCOMING_MSG_CMD时,会调用SampleApp_MessageMSGCB,作用是对接收数据的处理,根据簇ID处理,是数据从外部过来时触发此事件。SampleApp_MessageMSGCB函数里面有halUARTWrite,说明设备在接收到其他设备传来的数据后会通过串口传给PC。
因为这几个函数的添加和编写再不同的源文件里,所以刚开始照葫芦画瓢有点晕晕的,今天又重新梳理了一遍,这样就够清晰的了。