NB物联网之天翼物联(5)——编写编解码插件
前言
之前的兩篇將編解碼插件的外圍配置都已經(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)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vs2008设置选中 高亮
- 下一篇: HDU 5128 The E-pang