我想透過UART持續接收感測器端的資料,長度固定,資料結尾為FF FF FF FF;目前我的作法,僅透過資料串列是否有連續四個FF來判斷資料結尾。但這種作法並不完善,請問題是否能給我一些修改的建議方向?如下是我目前主要的程式碼。
void HAL_UART_RxCpltCallback(UART_HandleTypeDef*UartHandle)
{
RxLine++; //每接收到一个数据,进入回调数据长度加1
DataBuff[RxLine-1]=RxBuff[0]; //把每次接收到的数据保存到缓存数组
if(DataBuff[RxLine-1]==0xff && DataBuff[RxLine-2]==0xff && DataBuff[RxLine-3]==0xff && DataBuff[RxLine-4]==0xff) //以連續四個FF當作資料結尾的判斷
{
//printf("RXLen=%d\r\n",RxLine);
for(int i=0;i<RxLine;i++)
{
printf("UART DataBuff[%d] = 0x%x\r\n",i,DataBuff[i]);
}
memset(DataBuff,0,sizeof(DataBuff)); //清空缓存数组
RxLine=0; //清空接收长度
}
RxBuff[0]=0;
HAL_UART_Receive_IT(&huart3, (uint8_t *)RxBuff, 1); //每接收一个数据,就打开一次串口中断接收
}