日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NB物联网之天翼物联(5)——编写编解码插件

發(fā)布時(shí)間:2023/12/20 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NB物联网之天翼物联(5)——编写编解码插件 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

之前的兩篇將編解碼插件的外圍配置都已經(jīng)交代明白,本篇將為大家講解編解碼插件的組成以及如何編寫編解碼插件!

ProtocolAdapterImpl 中的 encode And decode

在上一篇結(jié)尾,我們注意到一個(gè)細(xì)節(jié),就是我們?cè)谂渲梦募信渲昧艘粋€(gè)路徑,這個(gè)路徑是一個(gè)java文件的路徑,這時(shí)候我們就要注意了!這個(gè)文件一定不一般!!
這個(gè)文件就是ProtocolAdapterImpl.java,沒錯(cuò),事實(shí)證明這個(gè)文件就是我們的程序被調(diào)用的入口,而這個(gè)文件中有兩個(gè)方法!打眼看過去我們就應(yīng)該知道他們分別是干啥用的了~

encode

encode編碼方法嘛!我們什么時(shí)候需要編碼,按照我們前面講的數(shù)據(jù)流向圖(忘記請(qǐng)戳這里),當(dāng)命令從應(yīng)用流向設(shè)備的時(shí)候是需要從profile類型的json串轉(zhuǎn)成16進(jìn)制碼流的,說以encode是編碼方法!

decode

decode解碼方法,當(dāng)16進(jìn)制碼流從設(shè)備流向應(yīng)用時(shí)應(yīng)該先通過這里,將編碼解碼為profile中提前定義的json字符串!

具體結(jié)構(gòu)

翠花~ 上碼

package com.Huawei.NBIoTDevice.WaterMeter; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.fasterxml.jackson.databind.node.ObjectNode; import com.huawei.m2m.cig.tup.modules.protocol_adapter.IProtocolAdapter; public class ProtocolAdapterImpl implements IProtocolAdapter {private static final Logger logger = LoggerFactory.getLogger(ProtocolAdapterImpl.class);// 廠商名稱private static final String MANU_FACTURERID = "Huawei";// 設(shè)備型號(hào)private static final String MODEL = "NBIoTDevice";@Overridepublic String getManufacturerId() {return MANU_FACTURERID;}@Overridepublic String getModel() {return MODEL;}public byte[] encode(ObjectNode input) throws Exception {logger.info("dynamic lrbtest " + input.toString());try {CmdProcess cmdProcess = new CmdProcess(input);byte[] byteNode = cmdProcess.toByte();return byteNode;} catch (Exception e) {e.printStackTrace();return null;}}public ObjectNode decode(byte[] binaryData) throws Exception {try {ReportProcess lightProcess = new ReportProcess(binaryData);ObjectNode objectNode = lightProcess.toJsonNode();logger.info("dynamic lrbtest " + objectNode.toString());return objectNode;} catch (Exception e) {e.printStackTrace();return null;}}}

看到這里我們應(yīng)該是可以在decode和encode方法中任意發(fā)揮了!
但是 !!!

請(qǐng)注意

還有一個(gè)坑!

// 廠商名稱private static final String MANU_FACTURERID = "Huawei";// 設(shè)備型號(hào)private static final String MODEL = "NBIoTDevice";

MANU_FACTURERID 和 MODEL 千萬不要忘記改!如果忘記改上傳的時(shí)候它是不會(huì)提醒你滴!~
但是編解碼編出來的東西亂七八糟!!!
如果按照正常的路數(shù)我們應(yīng)該按照華為給定的結(jié)構(gòu)去編寫代碼,如下:

即命令編碼在 CmdProcess.java 類中編寫,命令解碼在 ReportProcess 類中編寫,但是只有電信的NB平臺(tái)是華為做的,如果和其他廠家兼容該怎樣去做呢?欲知后事如何,且聽下回分解!

總結(jié)

以上是生活随笔為你收集整理的NB物联网之天翼物联(5)——编写编解码插件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。