电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

串口透明传输实验说明VIP免费

串口透明传输实验说明_第1页
1/9
串口透明传输实验说明_第2页
2/9
串口透明传输实验说明_第3页
3/9
参考文档:xfzigbee串口透明传输SampleApp例程实验增加一个事件十六进制转字符函数【摘】数据的发送,广播、组播、点对点Z-stack1.4.3-1.2.1SampleAppDB编译选项CoordinatorDBCC2430DBHAL_UARTZDO_COORDINATOREndDeviceDBCC2430DBNWK_AUTO_POLLHAL_UART修改地方hal_board_cfg.h/*SettoTRUEenableUARTusage,FALSEdisableit*/#ifndefHAL_UART#if(definedZAPP_P1)||(definedZAPP_P2)||(definedZTOOL_P1)||(definedZTOOL_P2)#defineHAL_UARTTRUE#else#defineHAL_UARTTRUE#endif/*ZAPP,ZTOOL*/#endif/*HAL_UART*/#ifHAL_UART#defineHAL_UART_0_ENABLETRUE#defineHAL_UART_1_ENABLEFALSE修改地方SampleApp.h#defineUART_RX_CB_EVT0x0002//添加串口处理事件修改地方SampleApp.c串口配置voidSampleApp_Init(uint8task_id){……//UARTConfigurationhalUARTCfg_tuartConfig;uartConfig.configured=TRUE;uartConfig.baudRate=HAL_UART_BR_38400;uartConfig.flowControl=FALSE;uartConfig.flowControlThreshold=1;uartConfig.rx.maxBufSize=255;uartConfig.tx.maxBufSize=255;uartConfig.idleTimeout=1;uartConfig.intEnable=TRUE;uartConfig.callBackFunc=rxCB;HalUARTOpen(HAL_UART_PORT_0,&uartConfig);……}回调函数rxCBstaticvoidrxCB(uint8port,uint8event){//uint8rxlen;//接收数据长度//uint8*databuf;//接收数据块指针externuint8SampleApp_TaskID;uint16short_ddr;uint8short_ddr_H;uint8short_ddr_L;uint8*pointer1;uint8word_buffer[10];uint8*pointer9;uint8str_enter[]={'\n'};pointer9=&str_enter[0];short_ddr=NLME_GetShortAddr();short_ddr_H=(uint8)((short_ddr&0xff00)>>8);short_ddr_L=(uint8)short_ddr;rxlen=Hal_UART_RxBufLen(HAL_UART_PORT_0);//接收缓冲区数据长度,字节为单位databuf=osal_mem_alloc(rxlen+1+2);//多分配3字节,分配如下databuf[0]=rxlen;//一字节存放数据长度databuf[1]=short_ddr_H;//一字节存放源地址高8位databuf[2]=short_ddr_L;//一字节存放源地址低8位databuf[rxlen+1]='\n';//一字节存放换行符HalUARTRead(HAL_UART_PORT_0,databuf+3,rxlen);//读接收缓冲区数据到内存databuf+3#ifdefined(ZDO_COORDINATOR)word_buffer[0]='0';word_buffer[1]='0';word_buffer[2]='0';word_buffer[3]='0';#elseword_buffer[0]='7';word_buffer[1]='9';word_buffer[2]='6';word_buffer[3]='F';#endifword_buffer[4]=':';word_buffer[5]=databuf[0]/100+48;word_buffer[6]=(databuf[0]%100)/10+48;word_buffer[7]=databuf[0]%10+48;word_buffer[8]='\n';pointer1=word_buffer;//HalUARTWrite()写入串口正确说明数据已经正确地存储在databuf中!HalUARTWrite(HAL_UART_PORT_0,pointer1,9);HalUARTWrite(HAL_UART_PORT_0,databuf+1,rxlen+1);//把数据送串口输出HalUARTWrite(0,pointer9,1);HalUARTWrite(0,pointer9,1);if(!rxlen)osal_mem_free(databuf);//释放内存osal_set_event(SampleApp_TaskID,UART_RX_CB_EVT);}自定义发送数据函数voidSampleApp_SPI_SendData(uint8*buf,uint8len){//此处点对点传输SampleApp_SPI_SendData_DstAddr.addrMode=(afAddrMode_t)Addr16Bit;SampleApp_SPI_SendData_DstAddr.endPoint=SAMPLEAPP_ENDPOINT;#ifdefined(ZDO_COORDINATOR)SampleApp_SPI_SendData_DstAddr.addr.shortAddr=0x796F;#elseSampleApp_SPI_SendData_DstAddr.addr.shortAddr=0x0000;#endifif(AF_DataRequest(&SampleApp_SPI_SendData_DstAddr,(endPointDesc_t*)&SampleApp_epDesc,SAMPLEAPP_PERIODIC_CLUSTERID,len,buf,&SampleApp_TransID,0,AF_DEFAULT_RADIUS)==afStatus_SUCCESS){osal_mem_free(databuf);//必须释放内存,不然造成溢出!}else{osal_mem_free(databuf);}}变量定义afAddrType_tSampleApp_SPI_SendData_DstAddr;uint8rxlen;//接收数据长度uint8*databuf;//接收数据块指针函数声明voidSampleApp_SPI_SendData(uint8*buf,uint8len);uint8hextoword1(uint8t);//十六进制转字符uint8hextoword2(uint8t);staticvoidrxCB(uint8port,uint8event);其他…...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

串口透明传输实验说明

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部