src/chushihua/Chushihua.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/dell55AAData/Dell55AA01Parser.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/dell55AAData/Dell55AA12HighPerf.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/dell_system/MessageViewPanel.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/dell_targets/Dell_BaseStation.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/publicsWay/EfficientTimeFormatter.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/publicsWay/PacketParser.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/publicsWay/PacketProcessingSystem.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/publicsWay/UDPPortAReceiver.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/udptcp/PacketParser.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/udptcp/UDPPortBReceiver.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/window/WelcomeFrame.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
systemfile/logfile/openlog.txt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/chushihua/Chushihua.java
@@ -8,7 +8,7 @@ import dell_targets.Dell_BaseStation; import dell_targets.Dell_SystemConfiguration; import dell_targets.Dell_tag; import udptcp.UDPPortAReceiver; import publicsWay.UDPPortAReceiver; public class Chushihua { public static void getchushihua() { src/dell55AAData/Dell55AA01Parser.java
@@ -1,104 +1,140 @@ package dell55AAData; import java.util.Arrays; import dell_system.MessageViewPanel; import dell_targets.Dell_BaseStation; import dell_targets.Dell_tag; import publicsWay.EfficientTimeFormatter; public class Dell55AA01Parser { // 常éå®ä¹ private static final String EXPECTED_HEADER = "55AA01"; // å议头 private static final int MIN_LENGTH = 42; // æå°é¿åº¦(21åè*2å符) private static final ThreadLocal<ParseResult> RESULT_CACHE = ThreadLocal.withInitial(ParseResult::new); // 常éå®ä¹ private static final String EXPECTED_HEADER = "55AA01"; // å议头 private static final int MIN_LENGTH = 42; // æå°é¿åº¦(21åè*2å符) private static final ThreadLocal<ParseResult> RESULT_CACHE = ThreadLocal.withInitial(ParseResult::new); // è§£æç»æç±» public static class ParseResult { public int sequenceNum; // åºåå· public String tagId; // æ ç¾ID(4åèå°ç«¯åº) public String anchorId; // éç¹ID(4åèå°ç«¯åº) public int distance; // è·ç¦»(毫米) public int power; // çµé(0-100) public boolean buttonPressed; // æé®ç¶æ public void reset() { sequenceNum = 0; tagId = ""; anchorId = ""; distance = 0; power = 0; buttonPressed = false; } } // è§£æç»æç±» public static class ParseResult { public int sequenceNum; // åºåå· public String tagId; // æ ç¾ID(4åèå°ç«¯åº) public String anchorId; // éç¹ID(4åèå°ç«¯åº) public int distance; // è·ç¦»(毫米) public int power; // çµé(0-100) public int buttonPressed; // æé®ç¶æ /** * è§£æ55AA01åè®®æ°æ® * @param message åå è¿å¶å符串 * @return è§£æç»æ(é误æ¶è¿ånull) */ public static ParseResult parse(String message, String ip, int port) { if (message == null || message.isEmpty()) { return null; } // æ¸ æ´æ°æ®ï¼ç§»é¤ææéåå è¿å¶å符 message = message.replaceAll("[^0-9A-Fa-f]", "").toUpperCase(); // æ°æ®æ ¡éª if (message == null || message.length() < MIN_LENGTH) { return null; } // åè®®å¤´æ ¡éª (55AA01) for (int i = 0; i < 6; i++) { if (message.charAt(i) != EXPECTED_HEADER.charAt(i)) { return null; } } ParseResult result = RESULT_CACHE.get(); result.reset(); try { if (message.length() < 30) { // ç¡®ä¿æè¶³å¤é¿åº¦è®¿é®charAt(28) return null; } // è§£æåºåå· (ä½ç½®8-9) result.sequenceNum = HexUtils.fastHexToByte( message.charAt(8), message.charAt(9) ); // è§£ææ ç¾ID (ä½ç½®10-13, å°ç«¯åº) result.tagId = new String(new char[] { message.charAt(12), message.charAt(13), // é«ä½ message.charAt(10), message.charAt(11) // ä½ä½ }); // è§£æéç¹ID (ä½ç½®14-17, å°ç«¯åº) result.anchorId = new String(new char[] { message.charAt(16), message.charAt(17), // é«ä½ message.charAt(14), message.charAt(15) // ä½ä½ }); // è§£æè·ç¦» (ä½ç½®18-25, 4åèå°ç«¯æ´æ°) int b0 = HexUtils.fastHexToByte(message.charAt(18), message.charAt(19)); // æä½ä½ int b1 = HexUtils.fastHexToByte(message.charAt(20), message.charAt(21)); int b2 = HexUtils.fastHexToByte(message.charAt(22), message.charAt(23)); int b3 = HexUtils.fastHexToByte(message.charAt(24), message.charAt(25)); // æé«ä½ int raw = (b3 << 24) | (b2 << 16) | (b1 << 8) | b0; result.distance = raw; // ä¿æåå§æ´æ°å¼ // è§£æçµé (ä½ç½®26-27) result.power = HexUtils.fastHexToByte(message.charAt(26), message.charAt(27)); // è§£ææé®ç¶æ (ä½ç½®28-29) result.buttonPressed = HexUtils.fastHexToByte(message.charAt(28), message.charAt(29)) == 1; String hexData = "55AA01æ ç¾å°å:" + result.tagId + "åºç«å°å:" + result.anchorId + "è·ç¦»:" + result.distance + "çµé:" + result.power + "æé®ç¶æ:" + result.buttonPressed; MessageViewPanel.showData(hexData, ip, port, 0, "UDPA", "55AA01", "ALL"); } catch (IndexOutOfBoundsException | NumberFormatException e) { System.err.println("Parsing error in packet from " + ip + ":" + port); return null; } return result; } public void reset() { sequenceNum = 0; tagId = ""; anchorId = ""; distance = 0; power = 0; buttonPressed = 0; } } /** * è§£æ55AA01åè®®æ°æ® * @param message åå è¿å¶å符串 * @return è§£æç»æ(é误æ¶è¿ånull) */ public static ParseResult parse(String message, String ip, int port) { if (message == null || message.isEmpty()) { return null; } // æ¸ æ´æ°æ®ï¼ç§»é¤ææéåå è¿å¶å符 char[] cleanedMessage = cleanMessage(message); // æ°æ®æ ¡éª if (cleanedMessage == null || cleanedMessage.length < MIN_LENGTH) { return null; } // åè®®å¤´æ ¡éª (55AA01) if (!new String(cleanedMessage, 0, 6).equals(EXPECTED_HEADER)) { return null; } ParseResult result = RESULT_CACHE.get(); result.reset(); try { if (cleanedMessage.length < 30) { // ç¡®ä¿æè¶³å¤é¿åº¦è®¿é®charAt(28) return null; } // è§£æåºåå· (ä½ç½®8-9) result.sequenceNum = HexUtils.fastHexToByte(cleanedMessage[8], cleanedMessage[9]); // è§£ææ ç¾ID (ä½ç½®10-13, å°ç«¯åº) result.tagId = new String(new char[]{ cleanedMessage[12], cleanedMessage[13], // é«ä½ cleanedMessage[10], cleanedMessage[11] // ä½ä½ }); // è§£æéç¹ID (ä½ç½®14-17, å°ç«¯åº) result.anchorId = new String(new char[]{ cleanedMessage[16], cleanedMessage[17], // é«ä½ cleanedMessage[14], cleanedMessage[15] // ä½ä½ }); // è§£æè·ç¦» (ä½ç½®18-25, 4åèå°ç«¯æ´æ°) int b0 = HexUtils.fastHexToByte(cleanedMessage[18], cleanedMessage[19]); // æä½ä½ int b1 = HexUtils.fastHexToByte(cleanedMessage[20], cleanedMessage[21]); int b2 = HexUtils.fastHexToByte(cleanedMessage[22], cleanedMessage[23]); int b3 = HexUtils.fastHexToByte(cleanedMessage[24], cleanedMessage[25]); // æé«ä½ int raw = (b3 << 24) | (b2 << 16) | (b1 << 8) | b0; result.distance = raw; // ä¿æåå§æ´æ°å¼ // è§£æçµé (ä½ç½®26-27) result.power = HexUtils.fastHexToByte(cleanedMessage[26], cleanedMessage[27]); // è§£ææé®ç¶æ (ä½ç½®28-29) result.buttonPressed = HexUtils.fastHexToByte(cleanedMessage[28], cleanedMessage[29]); // æ¥å¿åæ´æ°æä½å¯ä»¥èèä¼åæåå°è°ç¨é¢ç String hexData = "55AA01 å åº:" + result.sequenceNum + ",æ ç¾ç¼å·:" + result.tagId + ",åºç«ç¼å·:" + result.anchorId + ",è·ç¦»:" + result.distance + ",çµé:" + result.power + ",æé®ç¶æ:" + result.buttonPressed; MessageViewPanel.showData(hexData, ip, port, 0, "UDPA", "55AA01", "ALL"); String time = EfficientTimeFormatter.getCurrentTimeFormatted(); Dell_BaseStation.updateBaseStationProperty(result.anchorId, "ipAddress", ip); Dell_BaseStation.updateBaseStationProperty(result.anchorId, "port", port + ""); Dell_BaseStation.updateBaseStationProperty(result.anchorId, "status", "1"); Dell_BaseStation.updateBaseStationProperty(result.anchorId, "onlineTime", time); Dell_tag.updateLocationTagProperty(result.tagId, "sosStatus", result.buttonPressed + ""); Dell_tag.updateLocationTagProperty(result.tagId, "onlineStatus", "1"); Dell_tag.updateLocationTagProperty(result.tagId, "lastUwbSignalTime", time); Dell_tag.updateLocationTagProperty(result.tagId, "latestRangingSeq", result.sequenceNum + ""); Dell_tag.updateLocationTagProperty(result.tagId, "latestRangingBaseId", result.anchorId); Dell_tag.updateLocationTagProperty(result.tagId, "latestRangingDistance", result.distance + ""); Dell_tag.updateLocationTagProperty(result.tagId, "latestRangingBaseCount", "1"); } catch (IndexOutOfBoundsException | NumberFormatException e) { System.err.println("Parsing error in packet from " + ip + ":" + port); return null; } return result; } private static char[] cleanMessage(String message) { char[] cleaned = new char[message.length()]; int j = 0; for (char c : message.toCharArray()) { if (Character.isDigit(c) || (c >= 'A' && c <= 'F') || (c >= 'a' && c <= 'f')) { cleaned[j++] = Character.toUpperCase(c); } } if (j == 0) return null; return Arrays.copyOf(cleaned, j); } public static void updateBase(String baseStationId, String propertyName, String value) { Dell_BaseStation.updateBaseStationProperty(baseStationId, propertyName, value); Dell_BaseStation.updateBaseStationProperty(baseStationId, propertyName, value); } } src/dell55AAData/Dell55AA12HighPerf.java
@@ -48,7 +48,7 @@ * @param message åå§16è¿å¶å符串 * @return è§£æç»æå¯¹è±¡ï¼çº¿ç¨å®å ¨ï¼ */ public static ParseResult parse(String message) { public static ParseResult parse(String message,String ip,int port) { // é¿åº¦æ ¡éª if (message == null || message.length() < MIN_LENGTH) { return null; src/dell_system/MessageViewPanel.java
@@ -12,7 +12,7 @@ import java.util.ResourceBundle; import dell_targets.Dell_tag; import publicsWay.Languages; import udptcp.UDPPortAReceiver; import publicsWay.UDPPortAReceiver; import udptcp.UDPPortBReceiver; public class MessageViewPanel extends JPanel { src/dell_targets/Dell_BaseStation.java
@@ -113,6 +113,8 @@ station.setBattery(value); break; // æ´æ°çµé case "ipAddress": station.setIpAddress(value); break; // æ´æ°IPå°å case "port": station.setPort(value); break; //æ´æ°ç«¯å£ case "onlineTime": station.setOnlineTime(value); break; // æ´æ°ä¸çº¿æ¶é´ case "offlineTime": @@ -123,7 +125,7 @@ station.setSyncStatus(value); break; //åæ¥ç¶æ case "barometerReading": station.setBarometerReading(value); break; //åæ¥ç¶æ // æ·»å å ¶ä»é«é¢å±æ§... default: throw new IllegalArgumentException("䏿¯æå±æ§: " + propertyName); src/publicsWay/EfficientTimeFormatter.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,36 @@ package publicsWay; import java.time.Instant; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import java.time.temporal.ChronoField; public class EfficientTimeFormatter { // ä½¿ç¨ ThreadLocal æ¥å卿¯ä¸ªçº¿ç¨ç DateTimeFormatter private static final ThreadLocal<DateTimeFormatter> formatterThreadLocal = ThreadLocal.withInitial(() -> { // ä½¿ç¨ DateTimeFormatterBuilder æå»ºä¸ä¸ªé«æçæ ¼å¼åå¨ return new DateTimeFormatterBuilder() .appendValue(ChronoField.YEAR, 4) .appendLiteral('-') .appendValue(ChronoField.MONTH_OF_YEAR, 2) .appendLiteral('-') .appendValue(ChronoField.DAY_OF_MONTH, 2) .appendLiteral(' ') .appendValue(ChronoField.HOUR_OF_DAY, 2) .appendLiteral(':') .appendValue(ChronoField.MINUTE_OF_HOUR, 2) .appendLiteral(':') .appendValue(ChronoField.SECOND_OF_MINUTE, 2) .toFormatter(); }); // è·åå½åæ¶é´çå符串表示 public static String getCurrentTimeFormatted() { Instant now = Instant.now(); // è·åå½åæ¶é´ DateTimeFormatter formatter = formatterThreadLocal.get(); // è·åå½å线ç¨çæ ¼å¼åå¨ return formatter.format(now.atZone(ZoneId.systemDefault())); // æ ¼å¼åæ¶é´ } } src/publicsWay/PacketParser.java
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,222 @@ package publicsWay; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; // éå½å为PacketParserï¼è¡¨ç¤ºæ°æ®å è§£æå¨ public class PacketParser { // æ·»å åå è¿å¶å符æ°ç»å¸¸é private static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray(); // ç¼å²åºåèæ°ç» private byte[] buffer = new byte[4096]; // å½åç¼å²åºæææ°æ®é¿åº¦ private int bufferLength = 0; // è¿½å æ°æ°æ®å°ç¼å²åº public void appendData(byte[] newData, int length) { // æ£æ¥ç¼å²åºæ¯å¦è¶³å¤ if (bufferLength + length > buffer.length) { // å建æ°çæ´å¤§ç¼å²åº byte[] newBuffer = new byte[bufferLength + length]; // å¤å¶åææ°æ® System.arraycopy(buffer, 0, newBuffer, 0, bufferLength); buffer = newBuffer; } // è¿½å æ°æ°æ® System.arraycopy(newData, 0, buffer, bufferLength, length); // æ´æ°ç¼å²åºé¿åº¦ bufferLength += length; } // æ°å¢æ¹æ³ï¼åèæ°ç»è½¬åå è¿å¶å符串 public static String bytesToHexString(byte[] bytes) { if (bytes == null) return ""; char[] hexChars = new char[bytes.length * 2]; for (int j = 0; j < bytes.length; j++) { int v = bytes[j] & 0xFF; hexChars[j * 2] = HEX_ARRAY[v >>> 4]; hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F]; } return new String(hexChars); } // è§£æç¼å²åºä¸çææå®æ´æ°æ®å public List<DataPacket> parsePackets() { List<DataPacket> packets = new ArrayList<>(); int index = 0; // å½åè§£æä½ç½®ç´¢å¼ // éåç¼å²åºæ¥æ¾å®æ´æ°æ®å while (index <= bufferLength - 4) { // ç¡®ä¿æè¶³å¤æ°æ®æ£æ¥å 头 // æ£æ¥å 头æ è¯ 0x55 0xAA if (buffer[index] == 0x55 && (buffer[index + 1] & 0xFF) == 0xAA) { // è·åå ç±»åï¼ç¬¬3åèï¼ int packetType = buffer[index + 2] & 0xFF; // è·åæ°æ®é¿åº¦ï¼ç¬¬4åèï¼ int dataLenField = buffer[index + 3] & 0xFF; // 计ç®å®æ´å é¿åº¦ï¼å 头+æ°æ®+æ ¡éªï¼ int totalPacketLen = 2 + dataLenField + 2; // å¢å 2åèæ ¡éªä½ // æ£æ¥æ¯å¦æè¶³å¤æ°æ®ææå®æ´å if (index + totalPacketLen > bufferLength) { break; // æ°æ®ä¸è¶³ï¼çå¾ æ´å¤æ°æ® } // æå宿´æ°æ®å byte[] packetData = new byte[totalPacketLen]; System.arraycopy(buffer, index, packetData, 0, totalPacketLen); // éªè¯æ ¡éªå if (verifyChecksum(packetData)) { // è§£æåä¸ªæ°æ®å DataPacket packet = parseSinglePacket(packetType, packetData); if (packet != null) { packets.add(packet); // æ·»å å°ç»æå表 } index += totalPacketLen; // ç§»å¨å°ä¸ä¸ä¸ªå } else { index++; // æ ¡éªå¤±è´¥ï¼è·³è¿å½ååè } } else { index++; // éå 头æ è¯ï¼ç»§ç»æ¥æ¾ } } // æ¸ çå·²å¤çæ°æ® if (index > 0) { int remaining = bufferLength - index; if (remaining > 0) { // ç§»å¨å©ä½æ°æ®å°ç¼å²åºå¼å¤´ System.arraycopy(buffer, index, buffer, 0, remaining); } bufferLength = remaining; // æ´æ°ç¼å²åºé¿åº¦ } return packets; } // æ ¡éªæ°æ®å private boolean verifyChecksum(byte[] packet) { int len = packet.length; if (len < 4) return false; int sum = 0; // 仿°æ®ç±»åå¼å§å°æ ¡éªç åç»æ (å 头2åè已跳è¿) for (int i = 2; i < len - 2; i++) { sum += packet[i] & 0xFF; } sum = ~sum & 0xFFFF; // ååå¹¶ä¿ç16ä½ // è·åå ä¸çæ ¡éªç (å°ç«¯æ¨¡å¼) int receivedChecksum = ((packet[len - 1] & 0xFF) << 8) | (packet[len - 2] & 0xFF); return sum == receivedChecksum; } // è§£æåä¸ªæ°æ®å private DataPacket parseSinglePacket(int packetType, byte[] packet) { // åå»ºæ°æ®å 对象ï¼å å«å ç±»åï¼ return new DataPacket(packetType, packet); } // æ°æ®å å é¨ç±» public static class DataPacket { private final int packetType; // å ç±»å private final byte[] packet;//å æ°æ® public DataPacket(int packetType, byte[] packet) { this.packetType = packetType; this.packet = packet; } // è·åå ç±»å public int getPacketType() { return packetType; } // å æ°æ® public byte[] getPacket() { return packet; } } // HEXå符串转åèæ°ç» public static byte[] hexStringToBytes(String hex) { // ç§»é¤ç©ºæ ¼ hex = hex.replaceAll("\\s", ""); int len = hex.length(); // åå»ºç»ææ°ç» byte[] data = new byte[len / 2]; // æ¯ä¸¤ä¸ªå符转æ¢ä¸ä¸ªåè for (int i = 0; i < len; i += 2) { // é«ä½è½¬æ¢ int high = Character.digit(hex.charAt(i), 16) << 4; // ä½ä½è½¬æ¢ int low = Character.digit(hex.charAt(i + 1), 16); data[i / 2] = (byte) (high | low); } return data; } /**è¾åºæ ¡éªç */ public static String calculateChecksum(String input) { // æ£æ¥è¾å ¥æ¯å¦ä¸ºç©º if (input == null) { throw new IllegalArgumentException("è¾å ¥ä¸è½ä¸ºnull"); } // ç§»é¤ææç©ºæ ¼ String cleanInput = input.replaceAll("\\s", ""); // éªè¯å¤çåçå符串 if (cleanInput.length() < 8 || !cleanInput.startsWith("55AA")) { throw new IllegalArgumentException("è¾å ¥åç¬¦ä¸²å¿ é¡»ä»¥55AAå¼å¤´ä¸é¿åº¦è³å°ä¸º8ï¼å»é¤ç©ºæ ¼åï¼"); } // 廿å 头(55AA)åæå4个å符 String dataPart = cleanInput.substring(4, cleanInput.length() - 4); // æ£æ¥ä¸é´é¨åé¿åº¦æ¯å¦ä¸ºå¶æ° if (dataPart.length() % 2 != 0) { throw new IllegalArgumentException("ä¸é´é¨åé¿åº¦å¿ é¡»æ¯å¶æ°ï¼å»é¤ç©ºæ ¼åï¼"); } int sum = 0; // æ¯ä¸¤ä¸ªå符解æä¸ºä¸ä¸ªåè for (int i = 0; i < dataPart.length(); i += 2) { String byteStr = dataPart.substring(i, i + 2); int byteValue = Integer.parseInt(byteStr, 16); sum = (sum + byteValue) & 0xFFFF; // ä¿æ16ä½èå´ } // ååå¹¶ä¿æ16ä½ int checksum = (~sum) & 0xFFFF; // æ¾å¼å¤çé«ä½å¨åæ ¼å¼ int lowByte= (checksum >>> 8) & 0xFF; // é«8ä½ int highByte= checksum & 0xFF; // ä½8ä½ // æ ¼å¼å为4ä½åå è¿å¶å符串ï¼å¤§åï¼ï¼é«ä½å¨å System.out.println(String.format("%02X%02X", highByte, lowByte)); return String.format("%02X%02X", highByte, lowByte); } /** å°åèæ°ç»è½¬ä¸ºåå è¿å¶å符串ï¼ä¾å¦ [55 AA 01 02 ...] */ private static String bytesToHex(byte[] bytes) { if (bytes == null) return "null"; StringBuilder sb = new StringBuilder(bytes.length * 3); for (byte b : bytes) { sb.append(String.format("%02X ", b & 0xFF)); } // 廿æåä¸ä¸ªç©ºæ ¼ return sb.substring(0, sb.length() - 1); } } src/publicsWay/PacketProcessingSystem.java
ÎļþÃû´Ó src/udptcp/PacketProcessingSystem.java ÐÞ¸Ä @@ -1,8 +1,10 @@ package udptcp; package publicsWay; import java.util.List; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicBoolean; import dell55AAData.Dell55AA01Parser; import dell55AAData.Dell55AA12HighPerf; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -62,8 +64,7 @@ isRunning.set(true); parserThread = new Thread(() -> { PacketParser bufferManager = new PacketParser(); PacketParser bufferManager = new PacketParser(); while (isRunning.get()) { HexPacket packet = packetQueue.poll(); if (packet == null) { @@ -88,7 +89,8 @@ processType01(p,ip,port);break; case 0x02: processType02(p,ip,port);break; case 0x12: processType12(p,ip,port);break; default: System.err.println("æªç¥å ç±»å: " + p.getPacketType()); } @@ -119,9 +121,14 @@ } private static void processType02(PacketParser.DataPacket packet,String ip,int port) { String hexData = PacketParser.bytesToHexString(packet.getPacket()); System.out.println("å¤ç55AA02å : " + packet); // å®é ä¸å¡é»è¾ } private static void processType12(PacketParser.DataPacket packet,String ip,int port) { String hexData = PacketParser.bytesToHexString(packet.getPacket()); Dell55AA12HighPerf.parse(hexData,ip,port); } // å ¶ä»ç±»åå¤çæ¹æ³... } src/publicsWay/UDPPortAReceiver.java
ÎļþÃû´Ó src/udptcp/UDPPortAReceiver.java ÐÞ¸Ä @@ -1,4 +1,4 @@ package udptcp; package publicsWay; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; @@ -104,10 +104,10 @@ } private static String bytesToHex(byte[] bytes, int length) { if (bytes == null || length <= 0) return ""; StringBuilder sb = new StringBuilder(); for (int i = 0; i < length; i++) { // ç¡®ä¿çæå¤§åãæ åé符çåå è¿å¶ sb.append(String.format("%02X", bytes[i])); for (int i = 0; i < length && i < bytes.length; i++) { sb.append(String.format("%02X", bytes[i] & 0xFF)); } return sb.toString(); } src/udptcp/PacketParser.java
ÎļþÒÑɾ³ý src/udptcp/UDPPortBReceiver.java
@@ -6,6 +6,8 @@ import java.util.concurrent.Executors; import java.util.concurrent.atomic.AtomicLong; import publicsWay.PacketProcessingSystem; public class UDPPortBReceiver { public static final int PORT = 7000; @SuppressWarnings("unused") src/window/WelcomeFrame.java
@@ -9,10 +9,10 @@ import java.util.ResourceBundle; import udptcp.UDPPortAReceiver; import udptcp.UDPPortBReceiver; import dell_targets.Dell_BaseStation; import dell_targets.Dell_tag; import publicsWay.UDPPortAReceiver; import dell_targets.Dell_SystemConfiguration; public class WelcomeFrame extends JInternalFrame { systemfile/logfile/openlog.txt
@@ -918,3 +918,45 @@ ç¨åºå ³é: 2025-08-10 23:04:37 工使¶é¿: 0å°æ¶ 0åé 30ç§ ----------------------------------- ç¨åºå¯å¨: 2025-08-11 21:15:59 ç¨åºå¯å¨: 2025-08-11 21:17:08 ç¨åºå ³é: 2025-08-11 21:17:13 工使¶é¿: 0å°æ¶ 1åé 13ç§ ----------------------------------- ç¨åºå¯å¨: 2025-08-11 21:17:15 ç¨åºå¯å¨: 2025-08-11 21:19:09 ç¨åºå ³é: 2025-08-11 21:19:13 工使¶é¿: 0å°æ¶ 1åé 57ç§ ----------------------------------- ç¨åºå¯å¨: 2025-08-11 21:19:15 ç¨åºå¯å¨: 2025-08-11 21:31:02 ç¨åºå ³é: 2025-08-11 21:31:05 工使¶é¿: 0å°æ¶ 11åé 50ç§ ----------------------------------- ç¨åºå¯å¨: 2025-08-11 21:31:07 ç¨åºå¯å¨: 2025-08-11 21:31:57 ç¨åºå¯å¨: 2025-08-11 21:47:14 ç¨åºå¯å¨: 2025-08-11 21:48:16 ç¨åºå¯å¨: 2025-08-11 21:56:20 ç¨åºå ³é: 2025-08-11 22:00:14 工使¶é¿: 0å°æ¶ 3åé 54ç§ ----------------------------------- ç¨åºå¯å¨: 2025-08-11 22:00:17 ç¨åºå¯å¨: 2025-08-11 22:03:49 ç¨åºå¯å¨: 2025-08-11 22:14:55 ç¨åºå ³é: 2025-08-11 22:14:57 工使¶é¿: 0å°æ¶ 0åé 2ç§ ----------------------------------- ç¨åºå¯å¨: 2025-08-11 22:15:01 ç¨åºå¯å¨: 2025-08-11 22:16:04 ç¨åºå¯å¨: 2025-08-11 22:18:00 ç¨åºå¯å¨: 2025-08-11 22:21:23 ç¨åºå¯å¨: 2025-08-11 22:25:32 ç¨åºå ³é: 2025-08-11 22:25:37 工使¶é¿: 0å°æ¶ 0åé 5ç§ ----------------------------------- ç¨åºå¯å¨: 2025-08-11 22:27:02 ç¨åºå ³é: 2025-08-11 22:27:28 工使¶é¿: 0å°æ¶ 0åé 25ç§ ----------------------------------- ç¨åºå¯å¨: 2025-08-11 23:04:55