From a023089b9d8880f4790660aeb19f9f7d7481b37e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=B5=B7?= <10402852@qq.com> Date: Thu, 11 May 2023 11:02:15 +0800 Subject: [PATCH] 'commit' --- pom.xml | 2 +- src/main/java/UnitTest/HexDataSender.java | 18 +++--- src/main/java/UnitTest/HexStringSender.java | 70 +++++++++++++++++++++ 3 files changed, 80 insertions(+), 10 deletions(-) create mode 100644 src/main/java/UnitTest/HexStringSender.java diff --git a/pom.xml b/pom.xml index cbd8781..05ed064 100644 --- a/pom.xml +++ b/pom.xml @@ -289,7 +289,7 @@ io.netty netty-all - 4.1.32.Final + 4.1.92.Final diff --git a/src/main/java/UnitTest/HexDataSender.java b/src/main/java/UnitTest/HexDataSender.java index f717434..5d60801 100644 --- a/src/main/java/UnitTest/HexDataSender.java +++ b/src/main/java/UnitTest/HexDataSender.java @@ -29,15 +29,15 @@ public class HexDataSender { b.handler(new ChannelInitializer() { @Override public void initChannel(SocketChannel ch) { - ChannelPipeline p = ch.pipeline(); - p.addLast(new HexDataEncoder()); - p.addLast(new HexDataSenderHandler(hexData)); + //ChannelPipeline p = ch.pipeline(); + //p.addLast(new HexDataEncoder()); + //p.addLast(new HexDataSenderHandler(hexData)); } }); // Start the client. ChannelFuture f = b.connect(host, port).sync(); - + f.channel().writeAndFlush(Unpooled.copiedBuffer(hexData.getBytes())).sync(); // Wait until the connection is closed. f.channel().closeFuture().sync(); } finally { @@ -48,9 +48,9 @@ public class HexDataSender { public static String IP = "10.10.21.18"; public static int PORT = 8001; - public static void Open(String sb_id) throws Exception { + public static void Open() throws Exception { //开 - String hexData = "16 00 34 F5 41 11 FE 82 0D 02 ? 00 00 00 00 00 00 01 00 00 01".replace("?", sb_id).replace(" ", ""); + String hexData = "16 00 34 F5 41 11 FE 82 0D 02 6D FF 00 00 00 00 00 00 01 00 00 01".replace(" ",""); HexDataSender sender = new HexDataSender(IP, PORT); sender.sendHexData(hexData); } @@ -63,9 +63,9 @@ public class HexDataSender { } public static void main(String[] args) throws Exception { - Close("6D FF"); - //Thread.sleep(3000); - //Open("6D FF"); + //Close("6D FF"); + + Open(); } } diff --git a/src/main/java/UnitTest/HexStringSender.java b/src/main/java/UnitTest/HexStringSender.java new file mode 100644 index 0000000..f6292ad --- /dev/null +++ b/src/main/java/UnitTest/HexStringSender.java @@ -0,0 +1,70 @@ +package UnitTest; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.Socket; + +public class HexStringSender { + public static String IP = "10.10.21.18"; + public static int PORT = 8001; + + //# 开 + public static String open_hex_str = "16 00 34 F5 41 11 FE 82 0D 02 6D FF 00 00 00 00 00 00 01 00 00 01"; + + + //关 + public static String close_hex_str = "16 00 34 F5 41 11 FE 82 0D 02 6D FF 00 00 00 00 00 00 01 00 00 00"; + + public static void main(String[] args) throws IOException, InterruptedException { + + for (int i = 1; ; i++) { + Socket socket = new Socket(IP, PORT); + String hex_str; + if (i % 2 == 0) hex_str = close_hex_str; + else hex_str = open_hex_str; + byte[] bytes = hexStringToByteArray(hex_str); + OutputStream os = socket.getOutputStream(); + os.write(bytes); + socket.close(); + + Thread.sleep(2000); + } + + } + + /** + * 16进制表示的字符串转换为字节数组 + * + * @param hexString 16进制表示的字符串 + * @return byte[] 字节数组 + */ + public static byte[] hexStringToByteArray(String hexString) { + hexString = hexString.replaceAll(" ", ""); + int len = hexString.length(); + byte[] bytes = new byte[len / 2]; + for (int i = 0; i < len; i += 2) { + // 两位一组,表示一个字节,把这样表示的16进制字符串,还原成一个字节 + bytes[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4) + Character + .digit(hexString.charAt(i + 1), 16)); + } + return bytes; + } + + /** + * 将字节数组转换成十六进制的字符串 + * + * @return + */ + public static String BinaryToHexString(byte[] bytes) { + String hexStr = "0123456789ABCDEF"; + String result = ""; + String hex = ""; + for (byte b : bytes) { + hex = String.valueOf(hexStr.charAt((b & 0xF0) >> 4)); + hex += String.valueOf(hexStr.charAt(b & 0x0F)); + result += hex + " "; + } + return result; + } +}