严智鑫
2025-05-09 235d23f498e46e3415bf12a81b2056b792ea1808
nglib/src/ng/devices/HexUtil.java
@@ -22,7 +22,7 @@
        return result;
    }
    
    //姝e父鐨勫瓧姣嶆暟瀛楀彉鎴愬瓧鑺傛暟鍙戦?佺粰鐩掑瓙
    //正常的字母数字变成字节数发�?�给盒子
    public static String asciiToHex(String str) {
        char[] chars = str.toCharArray();
        
@@ -45,11 +45,11 @@
        
        return result.toString();
    }//12300    //00321
    //浜岃繘鍒惰浆鍗佽繘鍒?
    //二进制转十进�?
    public static int int2ToHex(String number) {
        return Integer.parseInt(number, 2);
    }
    //浜岃繘鍒惰浆16杩涘埗 4浣?
    //二进制转16进制 4�?
    public static String intBinaryTo16(String number) {
       int num=int2ToHex(number);
        return intTo2ByteHex(num);
@@ -58,7 +58,7 @@
    public static int int16ToHex(String number) {
        return Integer.parseInt(number, 16);
    }
    //鍗佽繘鍒惰浆浜岃繘鍒?
    //十进制转二进�?
    public static String intToBinary(int number) {
        return Integer.toBinaryString(number);
    }
@@ -82,7 +82,7 @@
    }
    
    /**
     * 灏嗘暣鏁拌浆鎹负2浣?16杩涘埗锛屽1杞崲涓?01锛?10杞崲涓?0a
     * 将整数转换为2�?16进制,如1转换�?01�?10转换�?0a
     * 
     * @param number
     * @return
@@ -96,7 +96,7 @@
    }
    
    /**
     * 灏嗘暣鏁拌浆鎹负4浣?16杩涘埗锛屽1杞崲涓?0001锛?10杞崲涓?000a
     * 将整数转换为4�?16进制,如1转换�?0001�?10转换�?000a
     * 
     * @param number
     * @return
@@ -110,7 +110,7 @@
    }
    
    /**
     * 灏嗘暣鏁拌浆鎹负8浣?16杩涘埗锛屽1杞崲涓?00000001锛?10杞崲涓?0000000a
     * 将整数转换为8�?16进制,如1转换�?00000001�?10转换�?0000000a
     * 
     * @param number
     * @return
@@ -122,7 +122,7 @@
    }
    
    /**
     * 灏嗘椂闂磋浆鎹负16杩涘埗鏍煎紡锛屽勾锛?2瀛楄妭锛? + 鏈堬紙1瀛楄妭锛? + 鏃ワ紙1瀛楄妭锛? + 鏃讹紙1瀛楄妭锛? + 鍒嗭紙1瀛楄妭锛? + 绉掞紙1瀛楄妭锛?
     * 将时间转换为16进制格式,年�?2字节�? + 月(1字节�? + 日(1字节�? + 时(1字节�? + 分(1字节�? + 秒(1字节�?
     * 
     * @param time
     * @return
@@ -142,7 +142,7 @@
    }
    
    /**
     * 灏?16杩涘埗鐨勬椂闂磋浆鎹负yyyy-MM-dd HH:mm:ss鐨勬牸寮?
     * �?16进制的时间转换为yyyy-MM-dd HH:mm:ss的格�?
     * 
     * @param hexTime
     * @return
@@ -157,7 +157,7 @@
        
        return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second;
    }
    //鍗佸叚杩涘埗杞?10杩涘埗
    //十六进制�?10进制
    public static int hexToInt(String hex) {
        return Integer.parseInt(hex, 16);
    }
@@ -181,7 +181,7 @@
    }
    
    /**
     * 灏嗗瓧鑺傝浆鎹负涓や綅鍗佸叚杩涘埗瀛楃涓诧紝涓嶅浣嶅墠鍔?0
     * 将字节转换为两位十六进制字符串,不够位前�?0
     * 
     * @param b
     * @return
@@ -197,7 +197,7 @@
    }
    
    /**
     * 灏嗗崄鍏繘鍒跺瓧绗︼紝杞崲鎴愪簩杩涘埗鐨勫瓧绗?
     * 将十六进制字符,转换成二进制的字�?
     * 
     * @param b
     * @return
@@ -213,7 +213,7 @@
       }
    
      /**
        * 灏嗗崄鍏繘鍒跺瓧绗︼紝杞崲鎴愪簩杩涘埗鐨勫瓧绗?
        * 将十六进制字符,转换成二进制的字�?
        * 
        * @param b
        * @return
@@ -231,7 +231,7 @@
    
    
    /**
     * 鍗佽繘鍒跺瓧鑺傛暟缁勮浆鍗佸叚杩涘埗瀛楃涓?
     * 十进制字节数组转十六进制字符�?
     * @param bufSize
     * @param msg
     * @return
@@ -270,16 +270,18 @@
//        System.out.println(HexUtil.hexToInt("00d2"));
//        
//        System.out.println(HexUtil.formatHex("3c5354413e"));
        String message = "Hello World!|This is the first signal from device!";
        int length = message.length() * 2 + 10; // 闀垮害鍖呮嫭缁撳熬鐨?<EOF>锛屼竴涓瓧绗﹀湪淇″彿涓敱涓や釜瀛楄妭琛ㄧず銆?
        
        String command = HexUtil.asciiToHex("<STA>"); // 娣诲姞寮?濮嬫爣璇?
        String message = "Hello World!|This is the first signal from device!";
        int length = message.length() * 2 + 10; // 长度包括结尾�?<EOF>,一个字符在信号中由两个字节表示�?
        String command = HexUtil.asciiToHex("<STA>"); // 添加�?始标�?
        
        command += (String.format("%4s", HexUtil.intToHex(length)).replace(' ', '0')); // 添加长度标识
        command += "01"; // 娣诲姞璁惧绫诲瀷 0x01琛ㄧず鍒囧壊鏈猴紝0x02琛ㄧず閽㈠寲鐐?
        command += "0001"; // 娣诲姞璁惧鍨嬪彿锛?0x0001琛ㄧず鍩烘湰娆撅紝0x0002琛ㄧず涓骇娆?
        command += "01"; // 添加设备类型 0x01表示切割机,0x02表示钢化�?
        command += "0001"; // 添加设备型号�?0x0001表示基本款,0x0002表示中级�?
        command += "0000"; // 功能号,0x0000是下位机主动发给上位机;0x0001是上位机修改下位机RTC
        command += "00"; // 鍔犲瘑鏂瑰紡锛?0x00琛ㄧず涓嶅姞瀵?
        command += "00"; // 加密方式�?0x00表示不加�?
        
        Calendar c = Calendar.getInstance();