[Zigbee] 关于编写zigbee中温度数据采集传输的问题

panxu5s   2012-3-5 13:10 楼主
本人在校学生,前段时间有个老师给我几块天运科技的2430,发现自学起来比较吃力,不知道从哪下手,没有顺序。现在想自己搞个通过点对点通信传送温度数据,这个过程中发现模块总是无故出现问题,总结以后发现,涉及等待晶振稳定的部分出了问题。只要注释掉这句就好了while(!XOSC_STABLE); 但貌似板子上找不到问题,不知道怎么回事。

再说回前头提到的,我在发送数据的时候发现串口接受到的总不如意,我也不知道怎么改,先贴出代码。
/****************************************************************
*函数功能 :串口发送字符串函数     *
*入口参数 : data:数据      *
*     len :数据长度            *
*返 回 值 :无              *
*说    明 :       *
****************************************************************/
void UartTX_Send_String(char *Data)
{
  char j;
  for(j=0;j<10;j++)
  {
    U0DBUF = *Data++;
    while(UTX0IF == 0);
    UTX0IF = 0;
  }
}
void UartTX_Send_word(char word)
{
    U0DBUF = word;
    while(UTX0IF == 0);
    UTX0IF = 0;
}
/****************************************************************
*函数功能 :接收 *
****************************************************************/
void receiveMode(void)
{
   BYTE* receiveBuffer;
   BYTE length;
   BYTE res;
   BYTE sender;
   char tt[10];
   while(1)
   {
      LED1 = LED_ON;
      res = radioReceive(&receiveBuffer, &length, RECEIVE_TIMEOUT, &sender);
      LED1 = LED_OFF;
      //for(l=0;l<5;l++)
      //tt[l]=*receiveBuffer++;
      //sprintf(tt,(char *)"%dC",receiveBuffer);
      
      if(res == TRUE)
      {
         LED2 = LED_ON;
         UartTX_Send_String(receiveBuffer);
         UartTX_Send_word(0x0A);
         halWait(200);
      }
      else
      {
         LED2 = LED_OFF;
         halWait(200);
      }
     LED2 = LED_OFF;
   }
}
/****************************************************************
*函数功能 :发送 *
****************************************************************/void contionuousMode(void)
{
   BOOL res;
   BYTE sendBuffer[1]="hello";
   //BYTE i;
                                 //问题是这里,发送部分目前发送hello是成功的,但如果像现在
   while(1)                  //这样,假如去掉注释,对sendBuffer赋值,输出的结果就乱了
   {                            //我想让最后输出的是字符串格式,因为最后要输出温度值的嘛   
     //i=9;             //不然串口助手输出会变成ascii码的结果,不知道这个问题怎么解决   
//sendBuffer[0]=i;
      LED2 = LED_OFF;
      LED1 = LED_ON;
      res = radioSend(sendBuffer, sizeof(sendBuffer), remoteAddr, DO_NOT_ACK );
      halWait(200);
      LED1 = LED_OFF;
      
      halWait(200);
      if(res == TRUE)
      {
         LED2 = LED_ON;
         halWait(200);
      }
      else
      {
        LED2 = LED_OFF;
        halWait(200);
      }
   }
}

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复