CC2531使用RS232串口进行接收数据,乱码
节点使用协议栈Z-Stack 2.5,串口使用DMA的方式进行读写。
使用串口向外写没有问题,但是接收之后,总有乱码。而且每次的乱码还不一样。让楼主很是困惑。
以下是接收代码
// 这表示event事件不为空
if(event&(HAL_UART_RX_FULL|HAL_UART_RX_ABOUT_FULL|HAL_UART_RX_TIMEOUT))
{
// 读取出RX_Buffer中的数据
uint8 len = Hal_UART_RxBufLen(HAL_UART_PORT_0);
vPrintf("\r\n #%d#",len);
uint8 *pBuffer = ( uint8* )osal_mem_alloc(len*sizeof(uint8));
///////////////////////TODO//////////////////////////////////
uint8 rxLen = HalUARTRead(HAL_UART_PORT_0,pBuffer,len);
vPrintf("\r\n %s",pBuffer);
osal_mem_free(pBuffer);
}
使用串口调试助手发送ABCDE
下图是节点将接收到的数据通过串口打印出来的。
其中#5#是我将接收到的数据打印出来的。无论我发送什么数据,大部分情况下在数据的末尾都会出现一个乱码
我看串口的DMA读取方式中,将串口的接收大小为两个字节。不知道跟这个有关系么?如果有,那么又如何进行更改。
你是用字符串的方式打印的,最后一个是终止符,你可以一个一个打印看看,单步调试看下具体的值
我单步调试时看过,在接收函数中,字符串指针里的字符串最后一个字符都是个表示乱码的小方框。
应该是与打印没关系的。而是接收的问题。
但是你接收了5个为什么要打印6个呢