這個像是Modbus通訊
1,當串口接收到第1個數據時,啟動定時器,并把數據保存到緩沖池中
2,接收到結束符,并且一定時間之后,如果再沒接收到新的數據,就認為這是一個完整的數據幀
3,把緩沖池的數據復制到另一個緩沖池中,在主程序對另一個緩沖池的數據進行處理,因為有可能你在處理的時候,來了新的數據,緩沖池的數據結構就不一樣了,讀取出來的就不一定是原始的數據了
我一般用的是結構struct //串口Buffer結構
{
unsigned char buf_uart[32]; //留32個地址來存放串口的數據
unsigned char cnt_Byte; //接收到的字節數量
}Buffer0,Buffer1; //兩個結構變量,讓串口接收和保存不相互影響
接收到一個完整的數據幀之后,就直接
Buffer1=Buffer0;//把串口緩存的數據復制過來
memset(&Buffer0,0,sizeof(Buffer0));//清除串口接收緩沖
STM32有足夠的能力處理串口這點小數據的
讀取數據出來不就是很簡單的事情嗎?就是直接讀取數組的數據而已,9#已經給出方法了
|