我的回调函数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~
xyz549040622:
1.波特率降低试试。
2.怀疑是你某个数据处理出现了错误,不要用函数,直接这边发,那边收试试。只发送字母和数字,不要带其他字符。