From e668f6c4ab9ff59e3a8b635380c9eb66ef7962b1 Mon Sep 17 00:00:00 2001 From: Guoqs <123@jsowell.com> Date: Tue, 3 Sep 2024 11:54:30 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E7=94=B5=E5=8D=95=E8=BD=A6=E5=8D=8F?= =?UTF-8?q?=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/jsowell/common/YouDianUtils.java | 29 ++++++++++--------- .../ebike/serversend/EBikeMessageCmd82.java | 4 +-- .../impl/EBikeSendCommandServiceImpl.java | 2 +- 3 files changed, 19 insertions(+), 16 deletions(-) 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 8340eb4fc..5607d7090 100644 --- a/jsowell-common/src/main/java/com/jsowell/common/YouDianUtils.java +++ b/jsowell-common/src/main/java/com/jsowell/common/YouDianUtils.java @@ -1,7 +1,6 @@ package com.jsowell.common; import com.jsowell.common.util.BytesUtil; -import com.jsowell.common.util.YKCUtils; import lombok.extern.slf4j.Slf4j; import java.util.Arrays; @@ -119,18 +118,22 @@ public class YouDianUtils { return bytes; } - public static void main(String[] args) { - byte[] result1 = convertPortNumberToBytes(1); // 输出: [0, 0] - byte[] result2 = convertPortNumberToBytes(2); // 输出: [0, 1] - byte[] result10 = convertPortNumberToBytes(10); // 输出: [0, 9] - byte[] result11 = convertPortNumberToBytes(11); // 输出: [0, 10] - byte[] result16 = convertPortNumberToBytes(16); // 输出: [0, 15] + /** + * 端口号转换 + * 指充电桩的插口号,端口号从0开始,如0x00-0x0F则代表第1路-第16路,0x00=第1路,0x09=第十路,0x0A=第十一路,FF=设备智能选择端口(服务器下发); + * @param port + * @return + */ + public static byte[] convertPortNumberToBytes(String port) { + int portNumber = Integer.parseInt(port); + if (portNumber < 1 || portNumber > 16) { + throw new IllegalArgumentException("Port number must be between 1 and 16."); + } - // 打印结果 - System.out.println(YKCUtils.frameType2Str(result1)); - System.out.println(YKCUtils.frameType2Str(result2)); - System.out.println(YKCUtils.frameType2Str(result10)); - System.out.println(YKCUtils.frameType2Str(result11)); - System.out.println(YKCUtils.frameType2Str(result16)); + // 端口号从1开始,因此需要减去1 + int hexValue = portNumber - 1; + + // 转换为字节数组 + return BytesUtil.intToBytesLittle(hexValue, 1); } } 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 74ff22830..62f30e9ab 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 @@ -74,7 +74,7 @@ public class EBikeMessageCmd82 extends AbsEBikeMessage { public static class SpecificData { private String rateMode; // 费率模式 (1字节) private String balanceOrValidity; // 余额/有效期 (4字节) - private String portNumber; // 端口号 (1字节) + private String portNumber; // 端口号 (指实际端口号, 发指令的时候自动转换为桩能识别的byte字节) private String chargeCommand; // 充电命令 (1字节) private String chargeDurationOrPower; // 充电时长/电量 (2字节) private String orderNumber; // 订单编号 (16字节) @@ -146,7 +146,7 @@ public class EBikeMessageCmd82 extends AbsEBikeMessage { // 余额/有效期 byte[] balanceOrValidityBytes = BytesUtil.stringToHexBytes(balanceOrValidity, 4); // 端口号 - byte[] portNumberBytes = BytesUtil.stringToHexBytes(portNumber, 1); + byte[] portNumberBytes = YouDianUtils.convertPortNumberToBytes(portNumber); // 充电命令 byte[] chargeCommandBytes = BytesUtil.stringToHexBytes(chargeCommand, 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 130aa22fc..529ad6598 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 @@ -31,7 +31,7 @@ public class EBikeSendCommandServiceImpl implements EBikeSendCommandService { // 余额或有效期 data.setBalanceOrValidity("0"); // 端口号 - data.setPortNumber("0"); + data.setPortNumber("1"); // 充电命令 data.setChargeCommand("1"); // 充电时长/功率