在使用2640串口时,配置为回调方式并开启部分返回功能接收不定长字符串,正常情况下2640串口收到一个字符串,可以一包收到,但是当发送方发送的字符之间延时稍大,2640的接收就会分包,这个应该是部分返回功能导致的,我想知道部分返回功能是什么原理,是超过一定时间没有接收到下一个字节就会返回吗?还是有其他判断方式进行部分返回?
代码如下:
// Callback function
static void UartreadCallback(UART_Handle handle, void *rxBuf, size_t size)
{
//UserUART_config[0].fxnTablePtr->writeFxn(Uarthandle,rxBuf,size);
UartReceiveDataProcess(rxBuf,size);
UserUART_config[0].fxnTablePtr->readFxn(Uarthandle,UserrxBuf,wantedRxBytes);
}
void UserUartInit(void)
{
// Initialize the UART driver.
UART_init();
// Create a UART with data processing off.
UART_Params_init(&Uartparams); //初始化是赋予一个默认值
Uartparams.baudRate = 9600;
Uartparams.writeDataMode = UART_DATA_BINARY; //可以选择二进制格式还是10进制格式
Uartparams.readMode = UART_MODE_CALLBACK;
Uartparams.readDataMode = UART_DATA_BINARY;
Uartparams.readCallback = UartreadCallback;
Uarthandle = UART_open(Board_UART0, &Uartparams);
if (Uarthandle == NULL)
{
// UART_open() failed
while (1)
;
}
UserUART_config[0].fxnTablePtr->controlFxn(Uarthandle, UARTCC26XX_CMD_RETURN_PARTIAL_ENABLE, NULL);
wantedRxBytes = 100;
UserUART_config[0].fxnTablePtr->readFxn(Uarthandle, UserrxBuf, wantedRxBytes);
}



