在使用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); }