1.一種物聯(lián)網(wǎng)終端平臺(tái)數(shù)據(jù)封裝的方法,包括物聯(lián)網(wǎng)終端、業(yè)務(wù)平臺(tái),若干傳感器、數(shù)據(jù)接收模塊,其特征在于,
在物聯(lián)網(wǎng)終端與業(yè)務(wù)平臺(tái)的應(yīng)用層定義數(shù)據(jù)封裝協(xié)議,為物聯(lián)網(wǎng)終端與業(yè)務(wù)平臺(tái)之間的通信提供通用的數(shù)據(jù)封裝接口;當(dāng)數(shù)據(jù)接收模塊接收相應(yīng)傳感器采集的數(shù)據(jù)后,從物聯(lián)網(wǎng)終端向業(yè)務(wù)平臺(tái)發(fā)送,按照數(shù)據(jù)封裝協(xié)議的格式對(duì)采集的數(shù)據(jù)進(jìn)行編碼封裝處理形成數(shù)據(jù)包,然后將數(shù)據(jù)包傳輸給業(yè)務(wù)平臺(tái),業(yè)務(wù)平臺(tái)接收相應(yīng)的數(shù)據(jù)包后再對(duì)數(shù)據(jù)包進(jìn)行解碼處理;當(dāng)業(yè)務(wù)平臺(tái)向物聯(lián)網(wǎng)終端發(fā)送數(shù)據(jù)時(shí),也按照數(shù)據(jù)封裝協(xié)議的格式對(duì)數(shù)據(jù)進(jìn)行編碼封裝處理形成數(shù)據(jù)包,然后將數(shù)據(jù)包傳輸給物聯(lián)網(wǎng)終端,物聯(lián)網(wǎng)終端接收相應(yīng)的數(shù)據(jù)包后再對(duì)數(shù)據(jù)包進(jìn)行解碼處理;
所述的編碼封裝處理采用如下處理步驟:(1)、開始;(2)設(shè)置STX字段的值為0x55;(3)設(shè)置CTRL字段的選項(xiàng),設(shè)置協(xié)議版本ver,根據(jù)是否提供IMEI字段、TIMESTAMP字段、TTL字段、CHK字段,分別設(shè)置imei、ts、ttl和chk的值;(4)設(shè)置LEN字段:設(shè)置除STX字段和CTRL字段外的數(shù)據(jù)包的長(zhǎng)度;(5)設(shè)置非CTRL字段中選項(xiàng)控制的字段:設(shè)置PACKET_TYPE字段、ACK字段、TRANS-MODE字段、PRIORITY字段和PACKET-ID字段的信息;(6)判斷CTRL選項(xiàng)中imei、ts、ttl是否有任意一個(gè)被設(shè)置;如果已被設(shè)置,則根據(jù)CTRL字段中imei、ts、ttl的設(shè)置情況,設(shè)置IMEI字段、TIMESTAMP字段和TTL字段后,再進(jìn)入“設(shè)置SERVICE字段數(shù)據(jù)”步驟;如果未設(shè)置,則進(jìn)入“設(shè)置SERVICE字段數(shù)據(jù)”步驟;所述的“設(shè)置SERVICE字段數(shù)據(jù)”,包括設(shè)置ID號(hào)、CMD號(hào)、與SERVICE字段相關(guān)的DATA字段的長(zhǎng)度值,如果定義了多個(gè)SERVICE字段+DATA字段組合,則除最后一個(gè)SERVICE字段+DATA字段組合中MULTIPLE字段置0外,其余中間的SERVICE字段+DATA字段組合中MULTIPLE字段置1;(7)再判斷CTRL字段的選項(xiàng)中chk是否設(shè)置;如果未設(shè)置,則結(jié)束;如果已設(shè)置,則計(jì)算校驗(yàn)和,將值存入CHK字段中形成數(shù)據(jù)包,然后結(jié)束;
所述的數(shù)據(jù)封裝協(xié)議的格式如下:
表1數(shù)據(jù)封裝協(xié)議的格式
其中,Bn表示該字段占n個(gè)BYTE;bn表示該字段占n個(gè)bit;
如果傳輸數(shù)據(jù)的種類多和傳輸數(shù)據(jù)量大,數(shù)據(jù)封裝協(xié)議的格式中分設(shè)若干個(gè)不同的SERVICE字段與DATA字段的組合以增加容量。
2.如權(quán)利要求1所述的一種物聯(lián)網(wǎng)終端平臺(tái)數(shù)據(jù)封裝的方法,其特征在于,
所述的解碼處理采用如下處理步驟:(1)、開始:(2)、輸入字節(jié)流;(3)、判斷STX字段的值是否為0x55,如果不是則結(jié)束;如果是,則進(jìn)入“判斷chk值是否為1”的步驟;(4)、如果chk值等于1,則進(jìn)入“校驗(yàn)CHK”步驟,所述的校驗(yàn)CHK為計(jì)算數(shù)據(jù)包校驗(yàn)和,并與CHK字段內(nèi)的值進(jìn)行相等性比較;如果chk選項(xiàng)的值不等于1,則進(jìn)入“檢測(cè)版本號(hào)ver”步驟;(5)如果“校驗(yàn)CHK”步驟中,數(shù)據(jù)包檢驗(yàn)和與CHK的值相等,則進(jìn)入“檢測(cè)版本號(hào)ver”步驟;如果數(shù)據(jù)包檢驗(yàn)和與CHK字段內(nèi)的值不相等,則結(jié)束;(6)如果檢測(cè)協(xié)議版本號(hào)ver不是指定的版本,則結(jié)束;如果檢測(cè)協(xié)議版本號(hào)ver是指定的版本,則進(jìn)入“根據(jù)協(xié)議格式提取各個(gè)字段的值”步驟,再結(jié)束;所述的“根據(jù)協(xié)議格式提取各個(gè)字段的值”為根據(jù)CTRL字段的選項(xiàng)中imei、ts、ttl的值是否為1,判斷IMEI字段、TIMESTAMP字段、TTL字段是否存在,然后根據(jù)數(shù)據(jù)封裝協(xié)議的格式進(jìn)行各個(gè)字段的解析,解析整個(gè)數(shù)據(jù)包。
3.如權(quán)利要求1所述的一種物聯(lián)網(wǎng)終端平臺(tái)數(shù)據(jù)封裝的方法,其特征在于,
所述的STX字段表示:標(biāo)識(shí)報(bào)文數(shù)據(jù)開始;
所述的CTRL字段中,除vet表示協(xié)議版本以外,imei選項(xiàng)、ts選項(xiàng)、ttl選項(xiàng)、chk選項(xiàng)作為相應(yīng)字段的控制開關(guān),1表示存在,0表示不存在;spare表示保留,值必須為0;
LEN字段中,LENlsb選項(xiàng)表示長(zhǎng)度的低位;Ext選項(xiàng)值為1時(shí),LENmsb選項(xiàng)表示長(zhǎng)度的高位,Ext選項(xiàng)值不為1時(shí),則表示不存在LENmsb選項(xiàng);
PACKET_TYPE字段表示:報(bào)文類型,值為0時(shí)表示Request報(bào)文,值為1時(shí)表示Ack報(bào)文;
ACK字段表示:值為1時(shí)表示當(dāng)報(bào)文類型為Request時(shí),需要Ack報(bào)文確認(rèn);值為0時(shí)表示當(dāng)報(bào)文類型為Request時(shí),不需要Ack報(bào)文確認(rèn);對(duì)于Ack報(bào)文,ACK字段的值必須為0;
TRANS-MODE字段表示:通信層使用的協(xié)議,值為0時(shí)表示采用MQTT協(xié)議,值為1時(shí)表示采用SMS協(xié)議,值為2時(shí)表示采用HTTP協(xié)議、值為3時(shí)表示采用websocket協(xié)議、值為4時(shí)表示采用XMPP協(xié)議、值為5時(shí)表示采用COAP協(xié)議;
PRIORITY字段表示:報(bào)文的優(yōu)先級(jí);
PACKET_ID字段表示:報(bào)文ID,該報(bào)文ID用于ACK確認(rèn)和/或丟棄重復(fù)的報(bào)文;
IMEI字段表示:物聯(lián)網(wǎng)終端的設(shè)備編號(hào),由CTRL字段中的imei選項(xiàng)控制是否存在;
TIMESTAMP字段表示:報(bào)文產(chǎn)生時(shí)的時(shí)間戳,由CTRL中的ts選項(xiàng)控制是否存在;
TTL字段表示:報(bào)文超時(shí)時(shí)間,由CTRL字段中的ttl選項(xiàng)控制是否存在;
SERVICE字段:ID表示服務(wù)id號(hào),CMD表示服務(wù)的具體操作,MULTIPLE表示此報(bào)文中還存在其他自定義的SERVICE字段和DATA字段的組合,LEN表示與此SERVICE字段相關(guān)的DATA字段的長(zhǎng)度;
其中SERVICE字段中的id號(hào)可以根據(jù)具體的業(yè)務(wù)形態(tài)做出自定義,從而和物聯(lián)網(wǎng)終端傳輸?shù)臄?shù)據(jù)進(jìn)行匹配;
DATA字段表示:具體要傳輸?shù)臄?shù)據(jù);
CHK字段表示:校驗(yàn)和,用于檢測(cè)數(shù)據(jù)完整性。