異或校驗小工具—或者計算機計算也行
將乙個數寫成兩個位元組
將乙個數寫成四個位元組
將四個位元組合成乙個數
將兩個位元組合成乙個數
標頭檔案mainwindow.h
static uchar crc_8(qbytearray crcdata, int beginindex, int crcdatalen);//異或校驗,此處資料型別是byte,非void
mainwindow.cpp
/***************************對資料單元進行異或校驗*****************************************/
uchar mainwindow::crc_8(qbytearray crcdata, int beginindex, int crcdatalen)
{ uchar crc8=0;
int endindex=23+crcdatalen;
for(int i=beginindex;i實際運用中發現uchar方法1更可靠,方法2有時會出錯
qbytearray cmd;
//21-22資料單元長度
int length=7;
cmd[21]=(length & 0xff00)>>8;
cmd[22]=(length & 0xff);
//車輛當前緯度
int latitude=ui->weidulineedit->text().todouble()*1000000;
qdebug()<<"緯度"<>24;
vehicleinforlogin[46]=(latitude & 0xff0000)>>16;
vehicleinforlogin[47]=(latitude & 0xff00)>>8;
vehicleinforlogin[48]=(latitude & 0xff);
//分別獲取a點的經緯度
int aj=ui->lujingajingdu->text().todouble()*1000000;
int aw=ui->lujingaweidu->text().todouble()*1000000;
//a經度,以度為單位的經度水平值乘以10e6,精確到百萬分值一
cmd[29]=(aj & 0xff000000)>>24;
cmd[30]=(aj & 0xff0000)>>16;
cmd[31]=(aj & 0xff00)>>8;
cmd[32]=(aj & 0xff);
//a緯度
cmd[33]=(aw & 0xff000000)>>24;
cmd[34]=(aw & 0xff0000)>>16;
cmd[35]=(aw & 0xff00)>>8;
cmd[36]=(aw & 0xff);
//路徑間隔
qstring lujingjiange=ui->l_distance->text();
cmd[45]=(ui->l_distance->text().tolong()*100 & 0xff00)>>8;
cmd[46]=(ui->l_distance->text().tolong()*100 & 0xff);
SPI通訊協議(SPI匯流排)解析
1 什麼是spi?spi是序列外設介面 serial peripheral inte ce 的縮寫。是 motorola 公司推出的一 種同步序列接 術,是一種高速的,全雙工,同步的通訊匯流排。2 spi優點 支援全雙工通訊 通訊簡單 資料傳輸速率塊 3 缺點 沒有指定的流控制,沒有應答機制確認是否...
通訊協議 UDP通訊
通訊協議 通訊協議是udp tcp通訊的基礎,沒有通訊協議的 通訊 是沒有任何意義上的,通訊協議不是底層函式或者高深的原理,而是程式設計師之間的一種文字約定。資料在網路上是以位元組的形式傳送的 底層是01碼 我們在讀取到資料之後,該以怎樣的方式對它進行解碼呢?這就是我們在通訊之前需要制定的通訊協議。...
串列埠通訊 通訊協議
我們的串列埠程式,除了通用的,進行串列埠監聽收發的簡單工具,大多都和下位機有關,這就需要關心我們的通訊協議如何快取,分析,以及通知介面。所謂通訊協議是指通訊雙方的一種約定。約定包括對資料格式 同步方式 傳送速度 傳送步驟 檢糾錯方式以及控制字元定義等問題做出統一規定,通訊雙方必須共同遵守。因此,也叫...