diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java index 53b22a7..c8f062d 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java @@ -50,4 +50,23 @@ } return temp; } + + public static boolean isCorrectData(byte[] bytes) { + if (bytes[0] != Constant.BITS_OF_HEAD) { + return false; + } + return bytes[bytes.length - 1] == Constant.BITS_OF_END; + } + + public static int decodeRobotId(byte[] bytes) { + int robotId; + if (Constant.SHELTER_ID == bytes[4]) { + //返回方舱的周围的AIS数据 + robotId = 0; + } else { + //返回机器人的周围的AIS数据 + robotId = bytes[4]; + } + return robotId; + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java index 53b22a7..c8f062d 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java @@ -50,4 +50,23 @@ } return temp; } + + public static boolean isCorrectData(byte[] bytes) { + if (bytes[0] != Constant.BITS_OF_HEAD) { + return false; + } + return bytes[bytes.length - 1] == Constant.BITS_OF_END; + } + + public static int decodeRobotId(byte[] bytes) { + int robotId; + if (Constant.SHELTER_ID == bytes[4]) { + //返回方舱的周围的AIS数据 + robotId = 0; + } else { + //返回机器人的周围的AIS数据 + robotId = bytes[4]; + } + return robotId; + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/StringHelper.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/StringHelper.java new file mode 100644 index 0000000..4d7fc4a --- /dev/null +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/StringHelper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.utils; + +import lombok.extern.slf4j.Slf4j; + +import java.util.Arrays; + +/** + * @author a203 + */ +@Slf4j +public class StringHelper { + public static String[] formatTargetNumber(String target) { + if (!target.contains(",")) { + return new String[]{target}; + } + String[] targetNumber = target.split(","); + log.info("targetNumber ===> " + Arrays.toString(targetNumber)); + return targetNumber; + } +} diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java index 53b22a7..c8f062d 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java @@ -50,4 +50,23 @@ } return temp; } + + public static boolean isCorrectData(byte[] bytes) { + if (bytes[0] != Constant.BITS_OF_HEAD) { + return false; + } + return bytes[bytes.length - 1] == Constant.BITS_OF_END; + } + + public static int decodeRobotId(byte[] bytes) { + int robotId; + if (Constant.SHELTER_ID == bytes[4]) { + //返回方舱的周围的AIS数据 + robotId = 0; + } else { + //返回机器人的周围的AIS数据 + robotId = bytes[4]; + } + return robotId; + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/StringHelper.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/StringHelper.java new file mode 100644 index 0000000..4d7fc4a --- /dev/null +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/StringHelper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.utils; + +import lombok.extern.slf4j.Slf4j; + +import java.util.Arrays; + +/** + * @author a203 + */ +@Slf4j +public class StringHelper { + public static String[] formatTargetNumber(String target) { + if (!target.contains(",")) { + return new String[]{target}; + } + String[] targetNumber = target.split(","); + log.info("targetNumber ===> " + Arrays.toString(targetNumber)); + return targetNumber; + } +} diff --git a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java index 5fd4203..a0c8b95 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java @@ -69,6 +69,18 @@ @Value("${casic.serialPort.clientAccount}") private String clientAccount; + /** + * 指挥机目标号码 + */ + @Value("${casic.serialPort.serverTarget}") + private String serverTarget; + + /** + * 客户端目标号码 + */ + @Value("${casic.serialPort.clientTarget}") + private String clientTarget; + private NRSerialPort serialPort; private ChannelHandlerContext channelHandler; @@ -119,15 +131,13 @@ e.printStackTrace(); } if (isClient) { - SerialPortManager.setupSerialPortConfig( - serialPort, true, - new String[]{"8617400542542"}, + SerialPortManager.setupSerialPortConfig(serialPort, true, + StringHelper.formatTargetNumber(clientTarget), "", "" ); } else { - SerialPortManager.setupSerialPortConfig( - serialPort, false, - new String[]{"8618765997865"}, + SerialPortManager.setupSerialPortConfig(serialPort, false, + StringHelper.formatTargetNumber(serverTarget), serverAccount, serverPassword ); } @@ -227,25 +237,6 @@ } } - private boolean isCorrectData(byte[] bytes) { - if (bytes[0] != Constant.BITS_OF_HEAD) { - return false; - } - return bytes[bytes.length - 1] == Constant.BITS_OF_END; - } - - private int decodeRobotId(byte[] bytes) { - int robotId; - if (Constant.SHELTER_ID == bytes[4]) { - //返回方舱的周围的AIS数据 - robotId = 0; - } else { - //返回机器人的周围的AIS数据 - robotId = bytes[4]; - } - return robotId; - } - /** * Socket数据通信接口 * @@ -260,9 +251,9 @@ /** * 回应客户端 * */ - if (isCorrectData(data)) { + if (ByteUtils.isCorrectData(data)) { int dataType = data[2]; - int robotId = decodeRobotId(data); + int robotId = ByteUtils.decodeRobotId(data); /** * 先解析再回应 * */ diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java index 53b22a7..c8f062d 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/ByteUtils.java @@ -50,4 +50,23 @@ } return temp; } + + public static boolean isCorrectData(byte[] bytes) { + if (bytes[0] != Constant.BITS_OF_HEAD) { + return false; + } + return bytes[bytes.length - 1] == Constant.BITS_OF_END; + } + + public static int decodeRobotId(byte[] bytes) { + int robotId; + if (Constant.SHELTER_ID == bytes[4]) { + //返回方舱的周围的AIS数据 + robotId = 0; + } else { + //返回机器人的周围的AIS数据 + robotId = bytes[4]; + } + return robotId; + } } diff --git a/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/StringHelper.java b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/StringHelper.java new file mode 100644 index 0000000..4d7fc4a --- /dev/null +++ b/casic-shelter/src/main/java/com/casic/missiles/modular/system/utils/StringHelper.java @@ -0,0 +1,20 @@ +package com.casic.missiles.modular.system.utils; + +import lombok.extern.slf4j.Slf4j; + +import java.util.Arrays; + +/** + * @author a203 + */ +@Slf4j +public class StringHelper { + public static String[] formatTargetNumber(String target) { + if (!target.contains(",")) { + return new String[]{target}; + } + String[] targetNumber = target.split(","); + log.info("targetNumber ===> " + Arrays.toString(targetNumber)); + return targetNumber; + } +} diff --git a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java index 5fd4203..a0c8b95 100644 --- a/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java +++ b/casic-shelter/src/main/java/com/casic/missiles/socket/service/impl/SocketServiceImpl.java @@ -69,6 +69,18 @@ @Value("${casic.serialPort.clientAccount}") private String clientAccount; + /** + * 指挥机目标号码 + */ + @Value("${casic.serialPort.serverTarget}") + private String serverTarget; + + /** + * 客户端目标号码 + */ + @Value("${casic.serialPort.clientTarget}") + private String clientTarget; + private NRSerialPort serialPort; private ChannelHandlerContext channelHandler; @@ -119,15 +131,13 @@ e.printStackTrace(); } if (isClient) { - SerialPortManager.setupSerialPortConfig( - serialPort, true, - new String[]{"8617400542542"}, + SerialPortManager.setupSerialPortConfig(serialPort, true, + StringHelper.formatTargetNumber(clientTarget), "", "" ); } else { - SerialPortManager.setupSerialPortConfig( - serialPort, false, - new String[]{"8618765997865"}, + SerialPortManager.setupSerialPortConfig(serialPort, false, + StringHelper.formatTargetNumber(serverTarget), serverAccount, serverPassword ); } @@ -227,25 +237,6 @@ } } - private boolean isCorrectData(byte[] bytes) { - if (bytes[0] != Constant.BITS_OF_HEAD) { - return false; - } - return bytes[bytes.length - 1] == Constant.BITS_OF_END; - } - - private int decodeRobotId(byte[] bytes) { - int robotId; - if (Constant.SHELTER_ID == bytes[4]) { - //返回方舱的周围的AIS数据 - robotId = 0; - } else { - //返回机器人的周围的AIS数据 - robotId = bytes[4]; - } - return robotId; - } - /** * Socket数据通信接口 * @@ -260,9 +251,9 @@ /** * 回应客户端 * */ - if (isCorrectData(data)) { + if (ByteUtils.isCorrectData(data)) { int dataType = data[2]; - int robotId = decodeRobotId(data); + int robotId = ByteUtils.decodeRobotId(data); /** * 先解析再回应 * */ diff --git a/casic-web/src/main/resources/config/application-dev.yml b/casic-web/src/main/resources/config/application-dev.yml index 35c0a8e..172246e 100644 --- a/casic-web/src/main/resources/config/application-dev.yml +++ b/casic-web/src/main/resources/config/application-dev.yml @@ -29,11 +29,20 @@ port: 12208 serialPort: + #天通串口名,Windows下以COM开头,Linux和MacOS下串口名如下所示 name: /dev/tty.usbserial-FTAQ6T45 + #指挥机-false,滑翔机/客户端-true isClient: true + #指挥机帐号 serverAccount: CC0Z06 + #指挥机密码 serverPassword: 11 + #滑翔机/客户端帐号 clientAccount: TT0Z07 + #指挥机目标号码,最多五个(不包括自己),多个号码用逗号隔开,通信方向:指挥机------>滑翔机 + serverTarget: 8618765997865 + #客户端目标号码,最多五个(不包括自己),多个号码用逗号隔开,通信方向:滑翔机------>指挥机 + clientTarget: 8617400542542 logging: level.root: info level.com.casic: debug