update 电单车协议

This commit is contained in:
Guoqs
2024-09-03 11:54:30 +08:00
parent f729431d7d
commit e668f6c4ab
3 changed files with 19 additions and 16 deletions

View File

@@ -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);
}
}

View File

@@ -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);
// 充电时长/电量

View File

@@ -31,7 +31,7 @@ public class EBikeSendCommandServiceImpl implements EBikeSendCommandService {
// 余额或有效期
data.setBalanceOrValidity("0");
// 端口号
data.setPortNumber("0");
data.setPortNumber("1");
// 充电命令
data.setChargeCommand("1");
// 充电时长/功率