3010|0

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

CC2530串口打印出错的问题 [复制链接]

从串口中得到数据,先存入环形数组,再从环形数组中读取数字,分析之后通过原串口发送,利用串口助手显示在电脑上。可是存在有的数据能够正常打印,有的数据却不行的问题。



利用串口助手发送数据为:AT+SEND=18,1,0,123,8,00 12 4B 00 07 22 AC 92

环形数组存储和读取都没有问题




//读取尾指针指向的的地址中存储的需要调用的命令长度

  CMD_Len = *(UART_StoreBuf + UART_StoreBuf_tail_pointer);

  UART_StoreBuf_tail_pointer++;

  UART_StoreBuf_tail_pointer %= UART_StoreBuf_Len_MAX;  

  sprintf(temp,"CMD_Len:%d\r\n",CMD_Len);

  HalUARTWrite(0, temp, strlen(temp));





  //将环形数组中的命令读取拼接出来,存入命令分析缓存区

  if((UART_StoreBuf_tail_pointer + CMD_Len) <= UART_StoreBuf_Len_MAX)

  {

    memcpy(UartData_Behavior_Buf,UART_StoreBuf + UART_StoreBuf_tail_pointer,CMD_Len);

  }else

  {

    temp1 = UART_StoreBuf_Len_MAX - UART_StoreBuf_tail_pointer;

    memcpy(UartData_Behavior_Buf,UART_StoreBuf + UART_StoreBuf_tail_pointer, temp1);

    temp2 = CMD_Len - temp1;

    memcpy(UartData_Behavior_Buf + temp1,UART_StoreBuf,temp2);   

  }



  //对命令分析缓存区中的数据经行分析

  p1 = strchr((const char*)UartData_Behavior_Buf,',');

  memcpy(num_str,UartData_Behavior_Buf,1);

  CMD = atoi(num_str);

  sprintf(temp,"CMD:%d\r\n",CMD);

  HalUARTWrite(0, temp, strlen(temp));





  if(CMD == 1)

  {

    p2 = strchr((const char*)(p1+1),',');

    memcpy(num_str,p1+1,p2-p1-1);

    operate = atoi(num_str);

    sprintf(temp,"operate:%d\r\n",operate);

    HalUARTWrite(0, temp, strlen(temp));



    p3 = strchr((const char*)(p2+1),',');

    memcpy(num_str,p2+1,p3-p2-1);

    SettingIndex = atoi(num_str);

    sprintf(temp,"SettingIndex:%d\r\n",SettingIndex);

    HalUARTWrite(0, temp, strlen(temp));





    p4 = strchr((const char*)(p3+1),',');

    memcpy(num_str,p3+1,p4-p3-1);

    data_len = atoi(num_str);

    sprintf(temp,"data_len:%d\r\n",data_len);

    HalUARTWrite(0, temp, strlen(temp));

       

    memcpy(Data,p4+1,8);

    sprintf(temp,"Data:%X\r\n",Data[7]);

    HalUARTWrite(0, temp, strlen(temp));

       

    //HalUARTWrite(0, "WhiteList\r\n", 11);

    //调用数据处理函数

    rev = Data_Process(operate,data_len,WhiteList_Data);

    sprintf(temp,"rev:%d\r\n",rev);

    HalUARTWrite(0, temp, strlen(temp));

    if(rev)

    {

      HalUARTWrite(0, "Update tail pointer\r\n", 21);

      HalLcdWriteString( "Update", HAL_LCD_LINE_1 );

      //发送完成,更新尾指针     

      UART_StoreBuf_tail_pointer += CMD_Len;

      UART_StoreBuf_tail_pointer %= UART_StoreBuf_Len_MAX;

    }else

    {



      UART_StoreBuf_tail_pointer--;

      HalLcdWriteString( "fail", HAL_LCD_LINE_1 );



      sprintf(temp,"tail_pointer:%d\r\n",UART_StoreBuf_tail_pointer);

      HalUARTWrite(0, temp, strlen(temp));

    }

    HalUARTWrite(0, "fail!\r\n", 7);

  }




求指导!!!谢谢!!


搜狗截图20150618105324.jpg (6.59 KB, 下载次数: 0)

data_len和Data没有打印,后面的尾指针也没有打印!

data_len和Data没有打印,后面的尾指针也没有打印!
此帖出自无线连接论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表