【ZigBee/ZStack快速入门】04-1-协议栈串口回调函数(接收数据)

弄了两天终于让我试出来了

参考了大佬的代码,大佬的代码只能存放64个数,但是我的需求要高一点,所以在大佬的基础上改了一下,先放上代码,后面再分析


void SampleApp_CallBack(uint8 port, uint8 event)
{
  uint8 UART0_RX_FINISH_FLAG = 0;
  #if 1 
  //uint8 Res;
  (void)event;// Intentionally unreferenced parameter  
  while (Hal_UART_RxBufLen(port))  
  {      
          uint8 Res;
          HalUARTRead (port, &Res, 1);//读取数据,存入字符RES中
          UART0_RX_BUFF[UART0_RX_STA&0x7F]=Res;//将数据存到BUFF中,表示总共能存127个数     
          UART0_RX_STA++; //数据+1

    if(UART0_RX_FINISH_FLAG == 0){//接收未完成
          if(UART0_RX_STA&0x80)//前一个接收到的数据结束符的“前一半”
          {
            if     (Res==0x0A)UART0_RX_FINISH_FLAG = 1;//接收完成了
            else if(Res!=0x0D)UART0_RX_STA &= 0x7F;//不是结束符,则将前半个结束符标志置0 
          }
          else
          {
            if(Res==0x0D)UART0_RX_STA |= 0x80;
          }
    } 
  
    if(UART0_RX_FINISH_FLAG == 1){
      UART0_RX_LEN = (UART0_RX_STA&0x7F)-2;
      memset(rxBuffer, 0, sizeof(rxBuffer));//将rxBuffer数字内容清空,重新写入数据
      memcpy(rxBuffer, UART0_RX_BUFF, sizeof(UART0_RX_BUFF));//将串口接收到的数据写入全局变量rxBuffer中
      memset(UART0_RX_BUFF,0,UART0_RX_BUFF_MAX);//将UART0_RX_BUFF数据清空-Reset
    
     //HalUARTWrite(HAL_UART_PORT_0,UART0_RX_BUFF, osal_strlen((char*)UART0_RX_BUFF));
     HalUARTWrite(HAL_UART_PORT_0,rxBuffer, osal_strlen((char*)rxBuffer));
      if(SampleApp_NwkState != DEV_ZB_COORD){
          osal_set_event(SampleApp_TaskID,SAMPLE_TestOfWhile);
          //SQ_P2P(RXBUFF);
      }
    
    UART0_RX_STA = 0;
    break;
    }           
  }
#endif
}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值