最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

物聯(lián)網(wǎng)協(xié)議TLV協(xié)議設(shè)計(jì)及實(shí)現(xiàn)

2022-08-24 17:16 作者:yanpengquan  | 我要投稿

? ? 物聯(lián)網(wǎng)接入做了好幾年了,由于之前的協(xié)議是固定字段和內(nèi)容的,很多時(shí)候不方便調(diào)控及升級(jí)處理?,F(xiàn)場(chǎng)設(shè)備調(diào)控參數(shù)較多且物聯(lián)網(wǎng)開(kāi)發(fā)部分不怎么方便使用Protobuf類的編解碼方案,因此此處設(shè)計(jì)并實(shí)現(xiàn)一個(gè)基于TLV結(jié)構(gòu)的協(xié)議及其編解碼實(shí)現(xiàn)過(guò)程。

一、協(xié)議適用范圍:

1、藍(lán)牙通信

2、Wifi通信

3、LoRa通信

4、ZigBee通信

5、基于MQTT的通信或其他上層協(xié)議通信

二、協(xié)議適用設(shè)備:

超低功耗物聯(lián)網(wǎng)設(shè)備或上位機(jī)間通信也可以。

三、Node或網(wǎng)頁(yè)前端使用方案

四、協(xié)議內(nèi)容

1、數(shù)據(jù)交互過(guò)程 0讀取 1寫(xiě)入 2確認(rèn) 3上報(bào)

1、設(shè)備上報(bào) Op=3 響應(yīng)Op=2

2、設(shè)備請(qǐng)求讀取參數(shù) Op=0 響應(yīng)Op=1

3、服務(wù)端下發(fā)參數(shù) Op=1 響應(yīng)Op=2

4、服務(wù)端讀取設(shè)備參數(shù) Op=0 設(shè)備響應(yīng)Op=1

2、?確認(rèn)數(shù)據(jù)區(qū)結(jié)構(gòu)

①成功

00

②部分成功

? 01? ? ? ? ? ???01? ?? ?01? ? ? ? ? ?? ?02 ? ?01

部分成功 ? TagID 錯(cuò)誤原因 TagID 錯(cuò)誤原因

③全部失敗

02

④解析失敗

03

3、數(shù)據(jù)類型定義

數(shù)據(jù)結(jié)構(gòu)定義表

4、協(xié)議數(shù)據(jù)幀結(jié)構(gòu)

0x68 ? ?00? ? ? ? ? 0000? ? ? ??0123? ? ? ? 0011223344 ? 00

固定 ?操作/狀態(tài) ?幀序號(hào) ?數(shù)據(jù)長(zhǎng)度 ? 實(shí)際數(shù)據(jù)內(nèi)容 ?累加校驗(yàn)和

添加校驗(yàn)和的目的是為了方便嵌入式設(shè)備中在線路傳輸過(guò)程中產(chǎn)生干擾。

5、操作狀態(tài)項(xiàng) 按二進(jìn)制分布

從高到低分別表示

第n位可選值含義70,1是否攜帶8字節(jié)產(chǎn)品信息60,1TagID的長(zhǎng)度是1字節(jié)或2字節(jié)4-50,1,2,30未壓縮 1BZ壓縮 2LZ壓縮 3GZ0-30-15操作號(hào) 0讀取 1寫(xiě)入 2確認(rèn) 3上報(bào)

6、TLV設(shè)計(jì)

① TagID 由于TagID長(zhǎng)度不定,此處使用大端模式,及當(dāng)TagID>=255時(shí)使用2字節(jié),否則使用1字節(jié)。

示例:(大端模式,高位在前)

var TagID=1; //此時(shí)TagID<255,使用1字節(jié)表示TagID值

var TagID=50; //此時(shí)TagID<255,使用1字節(jié)表示TagID值

var TagID=255; //此時(shí)TagID>=255,使用2字節(jié)表示TagID值

var TagID=1000; //此時(shí)TagID>=255,使用2字節(jié)表示TagID值

② TagLength 在確定數(shù)據(jù)長(zhǎng)度的情況下不需要該編解碼該數(shù)據(jù)項(xiàng),否則按如下形式編解碼

示例:(大端模式,高位在前)

// 長(zhǎng)度位第一字節(jié)的最高位若為1表示2字節(jié),否則1字節(jié)

var Length=1; //此時(shí)Length<127,使用1字節(jié)表示Length值

var Length=50; //此時(shí)Length<127,使用1字節(jié)表示Length值

var Length=255; //此時(shí)Length>127,使用2字節(jié)表示Length值

var Length=1000; //此時(shí)Length>127,使用2字節(jié)表示Length值

// 編碼代碼

let zlen = uint_encode(b.length, b.length > 127 ? 2 : 1, false)

if (b.length > 127) { ? ?zlen[0] |= 0x80}

// 解碼代碼

let tlen = b[0] & 0x80 ? 2 : 1;b[0] &= 0x7frs.Len = uint_decode(b, tlen, 0, false)

③ TagValue 根據(jù)對(duì)應(yīng)的數(shù)據(jù)類型進(jìn)行編解碼操作

五、JSON數(shù)據(jù)及編碼結(jié)構(gòu)示例

Int/Uint/Float/Double 編解碼

{"k0":-17,"k2t0":-676,"k4t0":36208,"k1":205,"k2t1":26407,"k4t1":456996,"Float":0.25,"Double":0.2515156}68011a04220000ef015cfd02708d000003cd0427670524f90600060000803e07abc31be3d418d03fad{"k0":25,"k2t0":799,"k4t0":3740,"k1":230,"k2t1":29411,"k4t1":430104,"Float":0.25,"Double":0.2515156}68011a0422000019011f03029c0e000003e604e3720518900600060000803e07abc31be3d418d03fb8{"k0":-15,"k2t0":576,"k4t0":9321,"k1":18,"k2t1":57518,"k4t1":344205,"Float":0.25,"Double":0.2515156}68011a04220000f10140020269240000031204aee0058d400500060000803e07abc31be3d418d03f1c{"k0":22,"k2t0":-483,"k4t0":-9686,"k1":101,"k2t1":48270,"k4t1":276338,"Float":0.25,"Double":0.2515156}68011a0422000016011dfe022adaffff0365048ebc0572370400060000803e07abc31be3d418d03f79{"k0":-42,"k2t0":245,"k4t0":29086,"k1":133,"k2t1":43426,"k4t1":243070,"Float":0.25,"Double":0.2515156}68011a04220000d601f500029e710000038504a2a9057eb50300060000803e07abc31be3d418d03fca{"k0":-32,"k2t0":-589,"k4t0":-54140,"k1":67,"k2t1":1877,"k4t1":368689,"Float":0.25,"Double":0.2515156}68011a04220000e001b3fd02842cffff03430455070531a00500060000803e07abc31be3d418d03f9d{"k0":1,"k2t0":657,"k4t0":-59838,"k1":237,"k2t1":42582,"k4t1":216526,"Float":0.25,"Double":0.2515156}68011a0422000001019102024216ffff03ed0456a605ce4d0300060000803e07abc31be3d418d03fdb{"k0":34,"k2t0":-781,"k4t0":1334,"k1":219,"k2t1":48774,"k4t1":126956,"Float":0.25,"Double":0.2515156}68011a042200002201f3fc023605000003db0486be05ecef0100060000803e07abc31be3d418d03f31{"k0":-30,"k2t0":491,"k4t0":-23382,"k1":162,"k2t1":18530,"k4t1":537141,"Float":0.25,"Double":0.2515156}68011a04220000e201eb0102aaa4ffff03a20462480535320800060000803e07abc31be3d418d03fbf{"k0":46,"k2t0":521,"k4t0":-61176,"k1":239,"k2t1":63115,"k4t1":525557,"Float":0.25,"Double":0.2515156}68011a042200002e010902020811ffff03ef048bf605f5040800060000803e07abc31be3d418d03fab

定長(zhǎng) String/Hex/base64 編解碼

{"k7":"a","k5t7":"12345","k10t7":"12345","k8":"aa","k5t8":"0011223344","k10t8":"00112233440011223344","k9":"YQ==","k5t9":"YWJjZGU="}68011a042e000061013132333435023132333435000000000003aa0400112233440500112233440011223344066107616263646528{"k7":"a","k5t7":"12345","k10t7":"12345","k8":"aa","k5t8":"0011223344","k10t8":"00112233440011223344","k9":"YQ==","k5t9":"YWJjZGU="}68011a042e000061013132333435023132333435000000000003aa0400112233440500112233440011223344066107616263646528{"k7":"a","k5t7":"12345","k10t7":"12345","k8":"aa","k5t8":"0011223344","k10t8":"00112233440011223344","k9":"YQ==","k5t9":"YWJjZGU="}68011a042e000061013132333435023132333435000000000003aa0400112233440500112233440011223344066107616263646528{"k7":"a","k5t7":"12345","k10t7":"12345","k8":"aa","k5t8":"0011223344","k10t8":"00112233440011223344","k9":"YQ==","k5t9":"YWJjZGU="}68011a042e000061013132333435023132333435000000000003aa0400112233440500112233440011223344066107616263646528{"k7":"a","k5t7":"12345","k10t7":"12345","k8":"aa","k5t8":"0011223344","k10t8":"00112233440011223344","k9":"YQ==","k5t9":"YWJjZGU="}68011a042e000061013132333435023132333435000000000003aa0400112233440500112233440011223344066107616263646528{"k7":"a","k5t7":"12345","k10t7":"12345","k8":"aa","k5t8":"0011223344","k10t8":"00112233440011223344","k9":"YQ==","k5t9":"YWJjZGU="}68011a042e000061013132333435023132333435000000000003aa0400112233440500112233440011223344066107616263646528{"k7":"a","k5t7":"12345","k10t7":"12345","k8":"aa","k5t8":"0011223344","k10t8":"00112233440011223344","k9":"YQ==","k5t9":"YWJjZGU="}68011a042e000061013132333435023132333435000000000003aa0400112233440500112233440011223344066107616263646528{"k7":"a","k5t7":"12345","k10t7":"12345","k8":"aa","k5t8":"0011223344","k10t8":"00112233440011223344","k9":"YQ==","k5t9":"YWJjZGU="}68011a042e000061013132333435023132333435000000000003aa0400112233440500112233440011223344066107616263646528{"k7":"a","k5t7":"12345","k10t7":"12345","k8":"aa","k5t8":"0011223344","k10t8":"00112233440011223344","k9":"YQ==","k5t9":"YWJjZGU="}68011a042e000061013132333435023132333435000000000003aa0400112233440500112233440011223344066107616263646528{"k7":"a","k5t7":"12345","k10t7":"12345","k8":"aa","k5t8":"0011223344","k10t8":"00112233440011223344","k9":"YQ==","k5t9":"YWJjZGU="}68011a042e000061013132333435023132333435000000000003aa0400112233440500112233440011223344066107616263646528

不定長(zhǎng)String/hex/base64 編解碼

{"Hex12":"00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"}68011a04530100015000112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff04

六、編碼代碼

七、解碼代碼

八、類型定義


源碼地址:https://gitee.com/tansuyun/tlv

物聯(lián)網(wǎng)協(xié)議TLV協(xié)議設(shè)計(jì)及實(shí)現(xiàn)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
大英县| 星座| 宁晋县| 天峨县| 三台县| 翁牛特旗| 左云县| 平遥县| 类乌齐县| 南康市| 右玉县| 柏乡县| 岳阳县| 广德县| 南雄市| 盐源县| 衡阳县| 大连市| 深水埗区| 庆阳市| 巴中市| 蕲春县| 铁岭县| 玉门市| 炎陵县| 通化县| 西安市| 安福县| 九江市| 天台县| 恭城| 屏边| 耒阳市| 盐源县| 左贡县| 乳山市| 江达县| 大竹县| 沧州市| 庆安县| 侯马市|