前言

之前的两篇将编解码插件的外围配置都已经交代明白,本篇将为大家讲解编解码插件的组成以及如何编写编解码插件!

ProtocolAdapterImpl 中的 encode And decode

在上一篇结尾,我们注意到一个细节,就是我们在配置文件中配置了一个路径,这个路径是一个java文件的路径,这时候我们就要注意了!这个文件一定不一般!!
这个文件就是ProtocolAdapterImpl.java,没错,事实证明这个文件就是我们的程序被调用的入口,而这个文件中有两个方法!打眼看过去我们就应该知道他们分别是干啥用的了~

encode

encode编码方法嘛!我们什么时候需要编码,按照我们前面讲的数据流向图(忘记请戳这里),当命令从应用流向设备的时候是需要从profile类型的json串转成16进制码流的,说以encode是编码方法!

decode

decode解码方法,当16进制码流从设备流向应用时应该先通过这里,将编码解码为profile中提前定义的json字符串!

具体结构

翠花~ 上码

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";// 设备型号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;}}}

看到这里我们应该是可以在decode和encode方法中任意发挥了!
但是 !!!

请注意

还有一个坑!

    // 厂商名称private static final String MANU_FACTURERID = "Huawei";// 设备型号private static final String MODEL = "NBIoTDevice";

MANU_FACTURERID 和 MODEL 千万不要忘记改!如果忘记改上传的时候它是不会提醒你滴!~
但是编解码编出来的东西乱七八糟!!!
如果按照正常的路数我们应该按照华为给定的结构去编写代码,如下:

即命令编码在 CmdProcess.java 类中编写,命令解码在 ReportProcess 类中编写,但是只有电信的NB平台是华为做的,如果和其他厂家兼容该怎样去做呢?欲知后事如何,且听下回分解!

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

  1. NB物联网之天翼物联(1)——电信NB平台到底有什么

    前言 本人目前任职于一家仪表企业,最近接到了NB物联网表的项目.做下笔记,以便后续使用,同时发现网上关于NB对接平台的资料太少,于是将踩得坑跟大家分享! 我们起先做的移动NB表,异常之顺利,平台的接口 ...

  2. NB物联网之天翼物联(4)——配置编解码插件

    前言 前面为大家介绍了编辑码插件的大体结构,本篇为大家详解怎么配置编解码插件上传包的参数! 向大家推荐如何做到电信NB与移动NB兼容 第23条"婚约" 编解码插件上传位置 上一篇结 ...

  3. java下发命令nbiot,NB物联网之天翼物联(3)——编解码插件上传规则细解(java开发物联网)...

    前言 电信的编解码插件本意上是可以让我们的开发更加灵活,但是你好歹把文档写明白啊...同时在正常的生产中我们的产品不可能只使用电信的模块,有时甚至是客户要求使用移动还是电信的模块,所以兼容性给我们的体 ...

  4. NB物联网之天翼物联(2)——profile定义与使用

    前言 前面大体讲了电信NB平台的一些概念,本篇就来接触一下电信NB的核心配置之一profile. profile 就是配置文件嘛!编解码插件就是编解我们与设备通讯使用的十六进制码流的东西. 向大家推荐 ...

  5. NB物联网之天翼物联(3)——初窥编解码插件(java开发物联网)

    前言 电信的编解码插件本意上是可以让我们的开发更加灵活,但是你好歹把文档写明白啊...同时在正常的生产中我们的产品不可能只使用电信的模块,有时甚至是客户要求使用移动还是电信的模块,所以兼容性给我们的体 ...

  6. 共迎物联网万亿市场,中国电信“天翼物联开发者大赛”技术沙龙武汉站成功举行...

    共迎物联网万亿市场,中国电信"天翼物联开发者大赛"技术沙龙武汉站成功举行 中国电信首届"天翼物联开发者大赛"技术沙龙已经先后走过华东(南京)和华中(武汉)两站, ...

  7. 天翼物联获2022年移动物联网“先进企业”

    近日,由工信部指导.中国信通院等单位主办的"首届移动物联网大会"在无锡圆满落幕.天翼物联获2022年移动物联网"先进企业"奖. 今年,我国移动物联网终端用户16 ...

  8. 物联网开放平台全面赋能生态伙伴,电信“天翼物联开发者大赛”技术沙龙北京站如期举行...

    物联网开放平台全面赋能生态伙伴,电信"天翼物联开发者大赛"技术沙龙北京站如期举行 [中国▪北京]12月7日,中国电信携手华北地区生态伙伴齐聚京城,共话物联网产业生态未来.本次沙龙以 ...

  9. 天翼物联携手6家单位发起移动物联网高质量发展共同倡议

    近日,由工信部指导,中国信息通信研究院(以下简称"中国信通院").中国通信学会.无锡市人民政府.人民邮电报社.江苏省工业和信息化厅.江苏省通信管理局共同主办,无锡物联网创新促进中心 ...

最新文章

  1. 浅谈ASP.NET内部机制(五)
  2. 关于ORA-06508 , ORA-04068异常的详细说明
  3. JS组件系列——自己动手扩展BootstrapTable的 冻结列 功能:彻底解决高度问题
  4. JAVA知识基础(七):封装
  5. redis+lua现实游戏中的一些常用功能
  6. Finished, saving caches
  7. SAS中library是 excel引擎,LIBNAME STATEMENT
  8. oracle数据库处于recover,oracle数据库recover和restore的区别
  9. kubectl port-forward 踩坑记录
  10. 蒙特卡罗模拟赌徒人生
  11. win7 两台PC网线直连创建家庭组局域网分享文件
  12. 新版Android Studio(4.1.1 for Windows 64-bit)的安装教程(超详细)
  13. VUE-Vuetify框架
  14. scrapy自定义扩展(extensions)实现实时监控scrapy爬虫的运行状态
  15. 国仁网络资讯:抖音作品没有播放量怎么回事;账号被降权限流如何解决。
  16. 火爆全网的ChatGPT上手体验,文尾免费送账号!
  17. Conflux伍鸣:用DAG结构提升中本聪共识的吞吐率
  18. MATLAB实现最短路径
  19. 淘宝电商用户行为数据分析及可视化—基于MySQL/Power BI(含代码)
  20. Flutter Rive 多状态例子

热门文章

  1. 单片机类型介绍和入门单片机
  2. 单片机C51数据类型
  3. 双目客流统计方案的应用原理
  4. iOS 如何向App Store提交应用
  5. 74HC595D特点
  6. Spring中将对象交给容器去管理的注解
  7. 微信小程序7__一行3 列的布局
  8. Java+Selenium3基础篇5-第一个自动化测试脚本
  9. 数字图像处理 - 比特平面分层 的python实现
  10. JS中金额转换以及格式化Vue过滤器