微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 为什么我使用串口回调函数 来做透传实验 会出现很多乱码

为什么我使用串口回调函数 来做透传实验 会出现很多乱码

时间:10-02 整理:3721RD 点击:

我的回调函数static void rxCB(uint8 port,uint8 event)
{   
  if ((event & (HAL_UART_RX_FULL | HAL_UART_RX_ABOUT_FULL | HAL_UART_RX_TIMEOUT)) &&
  #if SERIAL_APP_LOOPBACK
      (SerialApp_TxLen < SERIAL_APP_TX_MAX))
  #else
      !SerialApp_TxLen)
  #endif
  {
    SerialApp_TxLen = HalUARTRead(0, rcvBuf, APP_BYTE_READ_FROM_SERIAL_LENGTH);
    if (SerialApp_TxLen)
    {
      if ( AF_DataRequest( &TJSMCApp_DstAddr, &TJSMCApp_epDesc,
                          TJSMCAPP_COM_CLUSTERID,//自己定义的ID,用于接收方判别(在SampleApp.h里定义)
                          SerialApp_TxLen+1,                  // 数据长度         
                          rcvBuf,                    //数据内容
                          &TJSMCApp_TransID,
                          AF_DISCV_ROUTE,
                          AF_DEFAULT_RADIUS ) == afStatus_SUCCESS )
      {
      }
      else
      {
        // Error occurred in request to send.
      }
      SerialApp_TxLen=0;
    }
  }
}

我无线发送到串口的函数

void TJSMCApp_MessageMSGCB( afIncomingMSGPacket_t *pkt )
{
  uint8 i,len;
  switch ( pkt->clusterId )
  {
  case TJSMCAPP_CLUSTERID:
    break;
  case TJSMCAPP_COM_CLUSTERID: //串口透传
    len=pkt->cmd.Data[0]; //长度
    for(i=0;i<len;i++)
      HalUARTWrite(0,&pkt->cmd.Data[i+1],1);//发给 PC 机
    break;
  }
}

实际效果

我发送“123“该串口收到23\NUL\x1F\NUL$\xF1\xFF\xF1\xFF\xA5l\xEA\xCE\x08\NUL\xFF\xFFoy\x1D\xB9\x08\LF\STX\NUL\EOT\x0F\LF\ACK123\NUL7\NUL\NUL\NUL0\NUL\xFF\SOH\NULoy\NUL\NUL\NUL\NUL

零一个串口收到23\NUL\x1F\NUL\x1F\xF1\xFF\xF1\xFF\xA8l\xEB\xE3\x08\NUL\xFF\SOH\NUL>"\NUL\EOT\x0F\LF\x09\NUL\x0F\LF\ACK123\NUL7\NUL\NUL\NUL0\NUL\xFF\SOH\NULoy\x86\xA2\SOH~

1.波特率降低试试。

2.怀疑是你某个数据处理出现了错误,不要用函数,直接这边发,那边收试试。只发送字母和数字,不要带其他字符。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top