通訊協議解析

2021-10-06 20:26:46 字數 1677 閱讀 6359

異或校驗小工具—或者計算機計算也行

將乙個數寫成兩個位元組

將乙個數寫成四個位元組

將四個位元組合成乙個數

將兩個位元組合成乙個數

標頭檔案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碼 我們在讀取到資料之後,該以怎樣的方式對它進行解碼呢?這就是我們在通訊之前需要制定的通訊協議。...

串列埠通訊 通訊協議

我們的串列埠程式,除了通用的,進行串列埠監聽收發的簡單工具,大多都和下位機有關,這就需要關心我們的通訊協議如何快取,分析,以及通知介面。所謂通訊協議是指通訊雙方的一種約定。約定包括對資料格式 同步方式 傳送速度 傳送步驟 檢糾錯方式以及控制字元定義等問題做出統一規定,通訊雙方必須共同遵守。因此,也叫...