表阀一体机(王江海制定)通信协议:1、完善关阀类型;2、完善注释。
| | |
| | | |
| | | /** |
| | | * 得到关开阀类型名称 |
| | | * 0x00:刷卡闭 |
| | | * 0x01:平台关 |
| | | * 0x02:APP关 |
| | | * 0x03:非法卡关 |
| | | * 0x04:水表通讯异常关 |
| | | * 0x05:电表异常关 |
| | | * 0x06:剩余水量不足关 |
| | | * 0x07:剩余金额为0关 |
| | | * 0x08:开泵/阀后管道没有流量关 |
| | | * 0x09:掉电再上电关, |
| | | * 0x0a:水表瞬时流量为0关, |
| | | * 0x0b:刷卡开泵,远程关。 |
| | | * 0x0c:电池低电压关。 |
| | | * @param type 字节 |
| | | * @return 名称 |
| | | */ |
| | | public static String openCloseValveType(byte type){ |
| | | public static String closeValveType(byte type){ |
| | | return switch (type) { |
| | | case 1 -> "刷卡开阀"; |
| | | case 2 -> "刷卡关阀"; |
| | | case 3 -> "中心站开阀"; |
| | | case 4 -> "中心站关阀"; |
| | | case 5 -> "欠费关阀"; |
| | | case 6 -> "流量计故障关阀"; |
| | | case 7 -> "紧急关阀"; |
| | | case 8 -> "用户远程开阀"; |
| | | case 9 -> "用户远程关阀"; |
| | | case 16 -> "管道无水自动关阀"; |
| | | case 0 -> "刷卡关阀"; |
| | | case 1 -> "平台关阀"; |
| | | case 2 -> "APP关阀"; |
| | | case 3 -> "非法卡关阀"; |
| | | case 4 -> "水表通讯异常关阀"; |
| | | case 5 -> "电表异常关阀"; |
| | | case 6 -> "剩余水量不足关阀"; |
| | | case 7 -> "剩余金额为0关阀"; |
| | | case 8 -> "管道没有流量关阀"; |
| | | case 9 -> "掉电再上电关阀"; |
| | | case 10 -> "水表瞬时流量为0关阀"; |
| | | case 11 -> "刷卡开远程关阀"; |
| | | case 12 -> "电池低电压关阀"; |
| | | default -> "未知"; |
| | | }; |
| | | } |
| | |
| | | cdData.eleTotalAmount = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ; |
| | | |
| | | index += 5 ; |
| | | cdData.moneyRemainUser = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ; |
| | | cdData.moneyRemainUser = ByteUtil.BCD2Long_LE(bs, index, index + 4)/10000.0D ;//2025-02-24,剩余金额改为4位小数 |
| | | |
| | | index += 5 ; |
| | | cdData.waterRemainUser = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ; |
| | |
| | | cdData.success = false ; |
| | | } |
| | | |
| | | if(!cdData.success){ |
| | | return ; |
| | | } |
| | | |
| | | index++ ; |
| | | cdData.orderNo = ByteUtil.BCD2String_BE(bs, index, index + 7) ; |
| | | |
| | | index += 8 ; |
| | | GlParse.parseRtuDt(bs, index); |
| | | cdData.rtuDt = GlParse.parseRtuDt(bs, index); |
| | | |
| | | index+= 6 ; |
| | | GlParse.parseAlarmAndState(bs, index, cdData);//四个字节 |
| | |
| | | cdData.eleTotalAmount = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ; |
| | | |
| | | index += 5 ; |
| | | cdData.moneyRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ; |
| | | cdData.moneyRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4)/10000.0D ; |
| | | |
| | | index += 5 ; |
| | | cdData.waterRemain = ByteUtil.BCD2Long_LE(bs, index, index + 4)/100.0D ; |
| | |
| | | cdData.thisWater = ByteUtil.BCD2Long_LE(bs, index, index + 3)/100.0D ; |
| | | |
| | | index += 4 ; |
| | | cdData.thisMoney = ByteUtil.BCD2Long_LE(bs, index, index + 3)/100.0D ; |
| | | cdData.thisMoney = ByteUtil.BCD2Long_LE(bs, index, index + 3)/10000.0D ; |
| | | |
| | | index += 4 ; |
| | | cdData.thisDuration = ByteUtil.BCD2Int_LE(bs, index, index + 1) ; |
| | |
| | | @Data |
| | | public class DataCd55Vo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;02(0x02):表阀一体机;57(0x57):井电控制器 |
| | | public String controllerType;//控制器类型 |
| | | public Integer projectNo ;//项目编号 |
| | | public String icCardAddr ;//IC卡地址(8位数字或字母) |
| | | public String icCardNo ;//用户卡序列号(16位数字)(6字节BCD,2字节HEX) |
| | |
| | | @Data |
| | | public class DataCd56Vo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;02(0x02):表阀一体机;57(0x57):井电控制器 |
| | | public String controllerType;//控制器类型 |
| | | public Integer projectNo ;//项目编号 |
| | | public Integer waterAlarm ;//剩余水量报警值,单位:m3。整数,取值范围0~65535 |
| | | public Integer moneyAlarm ;//剩余金额报警值,单位:元。整数,取值范围0~65535 |
| | |
| | | @Data |
| | | public class DataCd5CVo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;02(0x02):表阀一体机;57(0x57):井电控制器 |
| | | public String controllerType;//控制器类型 |
| | | public Integer projectNo ;//项目编号 |
| | | public String dt ;//观察时间(yyyy-mm-dd HH) |
| | | public Double meterAmountDay ;//当日水表净流量,2个小数点 |
| | |
| | | @Data |
| | | public class DataCd68Vo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;02(0x02):表阀一体机;57(0x57):井电控制器 |
| | | public String controllerType;//控制器类型 |
| | | public Integer projectNo ;//项目编号 |
| | | public Integer maxAmountYear ;//机井年最大用水量 单位:m3 整数,取值范围0~99999999 |
| | | public Double limitLevel ;//水位下限 单位:m 取值范围:0~9999.99 |
| | |
| | | @Data |
| | | public class DataCd83Vo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;02(0x02):表阀一体机;57(0x57):井电控制器 |
| | | public String controllerType;//控制器类型 |
| | | public Integer projectNo ;//项目编号 |
| | | public Double waterTotalAmountYear ;//本年累计流量 |
| | | public Double waterTotalAmountMeter ;//水表累计流量 |
| | |
| | | @EqualsAndHashCode(callSuper=false) |
| | | public class DataCd84Vo extends AlarmVo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;02(0x02):表阀一体机;57(0x57):井电控制器 |
| | | public String controllerType;//控制器类型 |
| | | public Integer projectNo ;//项目编号 |
| | | public String openDt;//开泵/阀时间(yyyy-mm-dd HH:MM:SS) |
| | | public String icCardAddr ;//IC卡地址(远程关闭时为0) |
| | |
| | | @EqualsAndHashCode(callSuper=false) |
| | | public class DataCd85Vo extends AlarmVo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;02(0x02):表阀一体机;57(0x57):井电控制器 |
| | | public String controllerType;//控制器类型 |
| | | public Integer projectNo ;//项目编号 |
| | | public Byte clType;//关泵/阀方式: 0x00:刷卡闭 0x01:平台关 0x02:APP关 0x03:非法卡关 0x04:水表异常关 0x05:电表异常关 0x06:剩余水量不足关 0x07:剩余金额不足关 0x08:开泵/阀后管道没有流量关 0x09:掉电再上电。 |
| | | public String icCardAddr ;//IC卡地址(远程关闭时为0) |
| | |
| | | public String endDt ;//结束时间(yyyy-mm-dd HH:MM:SS) |
| | | public Double waterTotalAmount ;//水表累计流量 |
| | | public Double eleTotalAmount ;//电表累计电量 |
| | | public Double moneyRemain ;//用户剩余金额,单位0.01元 |
| | | public Double moneyRemain ;//用户剩余金额,单位0.0001元 |
| | | public Double waterRemain ;//用户剩余水量,保留 默认 00 00 00 00 00 |
| | | public Double thisEle ;//本次使用电量, 单位0.01度 |
| | | public Double thisWater ;//本次使用水量, 单位0.01立方米 |
| | | public Double thisMoney ;//本次使用金额, 单位0.01元 |
| | | public Double thisMoney ;//本次使用金额, 单位0.0001元 |
| | | public Integer thisDuration;//本次使用时间长, 单位:分钟 |
| | | |
| | | public String comName ;//命令名称 |
| | |
| | | sb.append(projectNo == null?"未知":projectNo) ; |
| | | sb.append("\n") ; |
| | | sb.append(" 关泵/阀类型 : ") ; |
| | | sb.append(clType == null?"未知":(clType.byteValue() == 0x00 ? "刷卡":(clType.byteValue() == 0x01 ? "平台":(clType.byteValue() == 0x02 ? "APP":(clType.byteValue() == 0x03 ? "非法卡":(clType.byteValue() == 0x04 ? "水表异常":(clType.byteValue() == 0x05 ? "电表异常":(clType.byteValue() == 0x06 ? "剩余水量不足":(clType.byteValue() == 0x07 ? "剩余金额不足":(clType.byteValue() == 0x08 ? "无流量":(clType.byteValue() == 0x09 ? "掉电再上电":"未知"))))))))))) ; |
| | | sb.append(CommonV202404.closeValveType(clType)) ; |
| | | sb.append("\n") ; |
| | | sb.append(" IC卡地址 : ") ; |
| | | sb.append(icCardAddr == null?"未知":icCardAddr) ; |
| | |
| | | @Data |
| | | public class DataCd92_A2Vo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;02(0x02):表阀一体机;57(0x57):井电控制器 |
| | | public String controllerType;//控制器类型 |
| | | public Integer projectNo ;//项目编号 |
| | | public String icCardNo ;//IC卡编号(17位数字) |
| | | public String orderNo ;//订单号(16位数字) |
| | | public String opDt ;//开泵/阀时间(yyyy-mm-dd HH:MM:SS) |
| | | public Byte opType ;//开阀类型: 01:平台开泵/阀 02:用户开泵/阀 |
| | | public Byte opType ;//开阀类型 |
| | | public Byte opResult ;//开启泵/阀结果: 0x00:成功 0x81:失败 |
| | | |
| | | public String comName ;//命令名称 |
| | |
| | | @EqualsAndHashCode(callSuper=false) |
| | | public class DataCd93_A3Vo extends AlarmVo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;02(0x02):表阀一体机;57(0x57):井电控制器 |
| | | public String controllerType;//控制器类型 |
| | | public Integer projectNo ;//项目编号 |
| | | public Byte opResult ;//关泵/阀结果: 0x00:成功 0x81:失败 |
| | | public Byte opType ;//关泵/阀方式: 0x00:刷卡闭 0x01:平台关 0x02:APP关 0x03:非法卡关 0x04:水表异常关 0x05:电表异常关 0x06:剩余水量不足关 0x07:剩余金额不足关 0x08:开泵/阀后管道没有流量关 0x09:掉电再上电。 |
| | |
| | | @Data |
| | | public class DataCd9AVo { |
| | | |
| | | public String controllerType;//控制器类型 01(0x01):测控一体阀;02(0x02):表阀一体机;57(0x57):井电控制器 |
| | | public String controllerType;//控制器类型 |
| | | public Integer projectNo ;//项目编号 |
| | | public Integer maxAmountYear ;//设备终端年用水量 单位:m3 整数,取值范围0~99999999 |
| | | |