diff --git a/jsowell-common/src/main/java/com/jsowell/common/YouDianUtils.java b/jsowell-common/src/main/java/com/jsowell/common/YouDianUtils.java index 6fa10883b..52c0e6a73 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/YouDianUtils.java +++ b/jsowell-common/src/main/java/com/jsowell/common/YouDianUtils.java @@ -116,30 +116,13 @@ public class YouDianUtils { // return hexString; // } - public static byte[] convertPortNumberToBytes(int portNumber) { - if (portNumber < 1 || portNumber > 16) { - throw new IllegalArgumentException("Port number must be between 1 and 16."); - } - - // 端口号从1开始,因此需要减去1 - int hexValue = portNumber - 1; - - // 转换为字节数组 - byte[] bytes = new byte[2]; - bytes[0] = (byte) 0x00; // 前缀0x - bytes[1] = (byte) hexValue; - - return bytes; - } - /** * 端口号转换 * 指充电桩的插口号,端口号从0开始,如0x00-0x0F则代表第1路-第16路,0x00=第1路,0x09=第十路,0x0A=第十一路,FF=设备智能选择端口(服务器下发); - * @param port + * @param portNumber * @return */ - public static byte[] convertPortNumberToBytes(String port) { - int portNumber = Integer.parseInt(port); + public static byte[] convertPortNumberToBytes(int portNumber) { if (portNumber < 1 || portNumber > 16) { throw new IllegalArgumentException("Port number must be between 1 and 16."); } diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/domain/ebike/serversend/EBikeMessageCmd82.java b/jsowell-pile/src/main/java/com/jsowell/pile/domain/ebike/serversend/EBikeMessageCmd82.java index e7a357f98..9d993104b 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/domain/ebike/serversend/EBikeMessageCmd82.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/domain/ebike/serversend/EBikeMessageCmd82.java @@ -18,16 +18,6 @@ public class EBikeMessageCmd82 extends AbsEBikeMessage { private SpecificData data; - // public EBikeMessageCmd82(String header, int length, int physicalId, int messageId, String command, Object payload, int checksum, SpecificData specificData) { - // super(header, length, physicalId, messageId, command, payload, checksum); - // this.specificData = specificData; - // } - - // public EBikeMessageCmd82(SpecificData specificData) { - // super(header, length, physicalId, messageId, command, payload, checksum); - // this.specificData = specificData; - // } - @Override public void parsePayload(byte[] dataBytes) { this.data = new SpecificData(dataBytes); @@ -72,16 +62,33 @@ public class EBikeMessageCmd82 extends AbsEBikeMessage { @Setter @NoArgsConstructor public static class SpecificData { + // 费率模式:=0计时,=1包月,=2计量,=3计次。包月、计次默认充满自停,计时、计量可手动设置时长和电量 private int rateMode; // 费率模式 (1字节) + + // 余额/有效期:设备仅仅用于语音播报作用,当费率模式为计时、计量、计次时,数据为余额;当费率模式为包月时,数据为有效期(时间戳), 大于100000000这个值会当成时间报有效期 private int balanceOrValidity; // 余额/有效期 (4字节) + + // 端口号:指充电桩的插口号,端口号从0开始,如0x00-0x0F则代表第1路-第16路,0x00=第1路,0x09=第十路,0x0A=第十一路,FF=设备智能选择端口(服务器下发) private int portNumber; // 端口号 (指实际端口号, 发指令的时候自动转换为桩能识别的byte字节) + + // 充电命令=0(停止充电)(远程停止充电需要下发对当前正在充电的订单号,如果订单号对不上则无法远程停止),=1(开始充电)设备充电与否依据此字段 private int chargeCommand; // 充电命令 (1字节) + + // 告知设备的充电时长/电量, 如是0x0000则说明是充满自停, 其他数值则按照时长/电量充电, 且充满不会自停, private int chargeDurationOrPower; // 充电时长/电量 (2字节) private String orderNumber; // 订单编号 (16字节) + + // 最大充电时长、过载功率:(只对当前端口当前订单有效,不影响其他端口)动态设置此参数,如果参数为0表示不修改,会使用设备的设置值,默认10小时 private int maxChargeDuration; // 最大充电时长 (2字节) private int overloadPower; // 过载功率 (2字节) + + // 二维码灯:0=打开,1=关闭,针对部分有二维码灯的设备有效。此设置是针对下一次插头插入时是否点亮二维码背光灯,保存在内存中,断电重启后就会失效 private int qrCodeLight; // 二维码灯 (1字节) + + // 长充模式:(特殊需求,正常情况不需开启,传0 即可) private int longChargeMode; // 长充模式 (1字节) + + // 额外浮充时间:(特殊需求,正常情况不需开启,传0 即可),即额外增加的浮充时间,单位秒,如果下发的是0xFFFF,则为取消浮充,且检测绿灯统一改为5分钟 private int extraFloatChargeTime; // 额外浮充时间 (2字节) private int skipShortCircuitDetection; // 是否跳过短路检测 (1字节) private int noUserPullOutCheck; // 不判断用户拔出 (1字节) diff --git a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/EBikeSendCommandServiceImpl.java b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/EBikeSendCommandServiceImpl.java index a968779d7..ff8183883 100644 --- a/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/EBikeSendCommandServiceImpl.java +++ b/jsowell-pile/src/main/java/com/jsowell/pile/service/impl/EBikeSendCommandServiceImpl.java @@ -30,32 +30,33 @@ public class EBikeSendCommandServiceImpl implements EBikeSendCommandService { EBikeMessageCmd82.SpecificData data = new EBikeMessageCmd82.SpecificData(); // 充电模式 - data.setRateMode("3"); + data.setRateMode(3); // 余额或有效期 - data.setBalanceOrValidity("356"); + data.setBalanceOrValidity(1234); // 端口号 - data.setPortNumber(connectorCode); + data.setPortNumber(Integer.parseInt(connectorCode)); // 充电命令 - data.setChargeCommand("01"); + data.setChargeCommand(1); // 充电时长/功率 - data.setChargeDurationOrPower("0"); + int chargeDurationOrPower = 0; + data.setChargeDurationOrPower(chargeDurationOrPower); // 订单编号 String orderNumber = IdUtils.generateTransactionCode(pileSn, connectorCode); data.setOrderNumber(orderNumber); // 最大充电时长 - data.setMaxChargeDuration("0"); + data.setMaxChargeDuration(0); // 过载功率 - data.setOverloadPower("5000"); - data.setQrCodeLight("0"); - data.setLongChargeMode("0"); - data.setExtraFloatChargeTime("0"); - data.setSkipShortCircuitDetection("0"); - data.setNoUserPullOutCheck("0"); - data.setForceAutoStopWhenFull("0"); - data.setFullChargePower("0"); - data.setMaxFullChargePowerCheckTime("0"); + data.setOverloadPower(5000); + data.setQrCodeLight(0); + data.setLongChargeMode(0); + data.setExtraFloatChargeTime(0); + data.setSkipShortCircuitDetection(0); + data.setNoUserPullOutCheck(0); + data.setForceAutoStopWhenFull(0); + data.setFullChargePower(0); + data.setMaxFullChargePowerCheckTime(0); message.setData(data); this.send(message); }