部落客在制作一個QT軟體與單片機進行資料傳輸(16進制的資料,結束标志是\r\n)的時候資料一直拿不完全。經過多日的研究終于成功了。
坑一:
QByteArray data;
data = Serial->readAll();//拿序列槽中的資料
因為序列槽設定的是8位資料位,

是以拿到的資料是32位,但是部落客想要的是“00 10 00 00 00 00 01 00 28 00 0A 01 01 01 01 00 \r\n”。但是QT使用qDebug()拿到是,如圖(這樣的資料不友善處理):
修改的代碼如下:
QByteArray data;
data = Serial->readAll();//拿序列槽中的資料
temp.append(data);
if(temp.contains('\n'))//隻有等到\n的時候才能進入
{
xxxx//
temp.clear();
}
這樣處理後拿到的資料是:如圖
坑二
單片機發送資料的時候需要加一個延時函數,不然還是會出現類似坑一的問題。
未完待續