自定義協(xié)議解析組包中,大小端問題如何處理?
時間:2021-09-23 15:43:44
手機看文章
掃描二維碼
隨時隨地手機看文章
[導(dǎo)讀]關(guān)注「嵌入式大雜燴」,選擇「星標(biāo)公眾號」一起進步!在嵌入式產(chǎn)品開發(fā)中,經(jīng)常會遇到兩個設(shè)備之間的通信、設(shè)備與服務(wù)器的通信、設(shè)備和上位機的通信等,很多時候通信協(xié)議都是自定義的,所以就涉及到自定義協(xié)議的解析和組包問題。比如針對下面的這樣一個協(xié)議:幀頭1幀頭2字段1字段2校驗固定值:0x...
關(guān)注「嵌入式大雜燴」,選擇「星標(biāo)公眾號」一起進步!
數(shù)據(jù)在發(fā)送時涉及到一個大小端的概念,大小端是針對多字節(jié)數(shù)據(jù)的傳輸,比如上述協(xié)議中字段1,假設(shè)兩字節(jié)內(nèi)容為0x0001,先發(fā)送0x01后發(fā)送0x00,稱為小端模式;先發(fā)送0x00后發(fā)送0x01,稱為大端模式。
| 幀頭1 | 幀頭2 | 字段1 | 字段2 | 校驗 |
|---|---|---|---|---|
| 固定值:0x55 | 固定值:0xAA | 設(shè)備ID | 電壓值 | 前面所有數(shù)據(jù)異或值 |
| char | char | short | float | char |
| 1字節(jié) | 1字節(jié) | 2字節(jié) | 4字節(jié) | 1字節(jié) |
#include
int main()
{
unsigned char Rxbuf[9] = {0x55,0xAA,0x01,0x00,0x33,0x33,0x53,0x40,0xED};
short DeviceId;
float Voltage;
unsigned char check = 0;
int i;
for(i=0;i<8;i )
{
check ^= Rxbuf[i];
}
if(Rxbuf[0]==0x55 




