美文网首页
RkConverter二进制报文解析工具

RkConverter二进制报文解析工具

作者: 袁志健 | 来源:发表于2016-05-01 13:52 被阅读603次

    简介

    为了高效传输,物联网项目通常采用了二进制协议来进行数据交换。

    RkConverter库的目标是让开发从低效、重复、无技术含量的二进制报文解析中解放出来专注于业务和协议变化。

    用法

    字节数组转对象

    蓝牙设备返回了设备信息字节数组为{82,75,52,49,48,48,0,68}数据交换解析协议为

    只需要两步即可将字节数转换为需要的对象

    1、为DeviceInfo对象属性添加RkField注解描述解析规则

    public class DeviceInfo {
    
        @RkField(position = 0,length = 6)
        private String model;
    
        @RkField(position = 6,length = 2)
        private int versionCode;
    
        public String getModel() {
            return model;
        }
    
        public void setModel(String model) {
            this.model = model;
        }
    
        public int getVersionCode() {
            return versionCode;
        }
    
        public void setVersionCode(int versionCode) {
            this.versionCode = versionCode;
        }
    }
    

    2、调用RkFieldConverter#bytes2entity方法使用字节数组设置DeviceInfo对象属性

    byte[] bytes = new byte[]{82,75,52,49,48,48,0,68};
    DeviceInfo mDeviceInfo = new DeviceInfo();
    mDeviceInfo = RkFieldConverter.bytes2entity(mDeviceInfo,bytes);
    assertEquals("RK4100",mDeviceInfo.getModel());
    assertEquals(68,mDeviceInfo.getVersionCode());
    

    对象转字节数组

    调用RkFieldConverter#entity2bytes方法将对象转换成字节数组方便将数据写入蓝牙设备。

    DeviceInfo mDeviceInfo = new DeviceInfo();
    mDeviceInfo.setModel("RK4100");
    mDeviceInfo.setVersionCode(68);
    byte[] bytes = RkFieldConverter.entity2bytes(mDeviceInfo);
    assertArrayEquals(new byte[]{82,75,52,49,48,48,0,68},bytes);
    

    GitHub 项目地址

    相关文章

      网友评论

          本文标题:RkConverter二进制报文解析工具

          本文链接:https://www.haomeiwen.com/subject/yonkrttx.html