张世豪
5 小时以前 a6077217e25f5804027194a5c2848e773eda1abd
src/publicway/ProtocolParser01.java
@@ -4,6 +4,7 @@
import chuankou.SerialPortService;
import chushihua.SlotManager;
import dialog.Errlog;
public class ProtocolParser01 {
    /**
@@ -110,18 +111,19 @@
     * CRC校验
     * 根据协议:CRC16校验从功能码之后一直到CRC16之前的数据
     */
    private static boolean validateCRC(String hexData) {
    @SuppressWarnings("unused")
   private static boolean validateCRC(String hexData) {
        try {
            // CRC在最后4个字符
            String receivedCRC = hexData.substring(hexData.length() - 6);
            byte[] cmdBytes = HexUtil.hexStringToBytes(hexData.replace(receivedCRC,""));
            String crc = HexUtil.calculate(cmdBytes)+"00"; 
            System.out.println("收到的完整数据是:"+hexData);
            System.out.println("收到数据校验码是:"+receivedCRC);
            System.out.println("校验码是:"+crc);
            //System.out.println("收到的完整数据是:"+hexData);
            //System.out.println("收到数据校验码是:"+receivedCRC);
            //System.out.println("校验码是:"+crc);
            return receivedCRC.equalsIgnoreCase(crc);            
        } catch (Exception e) {
            System.err.println("CRC校验异常: " + e.getMessage());
            Errlog.logOperation("CRC校验异常: " + e.getMessage());
            return false;
        }
    }
@@ -500,22 +502,21 @@
        @Override
        public String toString() {
            StringBuilder sb = new StringBuilder();
            sb.append("=== DDCC协议数据解析结果 ===\n");
            sb.append("1. 主机地址: ").append(String.format("%02X", hostAddress));
            sb.append("2. 卡槽编号: ").append(slotNumber);
            sb.append("3. 工作状态: ").append(workStatus.getDescription())
              .append(" (").append(workStatus.getValue());
            sb.append("4. 门状态: ").append(doorStatus.getDescription())
              .append(" (").append(doorStatus.getValue());
            sb.append("5. 卡状态: ").append(cardStatus.getDescription())
              .append(" (").append(cardStatus.getValue());
            sb.append("6. 卡状态变更: ").append(cardStatusChange);
            sb.append("7. 卡号: ").append(cardNumber);
            sb.append("8. 故障: ").append(getFaultsString());
            sb.append("9. 电压: ").append(String.format("%.2f", voltage));
            sb.append("10. 电流: ").append(String.format("%.2f", current));
            sb.append("数据长度: ").append(dataLength).append(" 字节");
//            System.out.println(sb.toString());
            sb.append("1.主机地址:").append(String.format("%02X", hostAddress));
            sb.append("2.卡槽编号:").append(slotNumber);
            sb.append("3.工作状态:").append(workStatus.getDescription())
              .append("(").append(workStatus.getValue()).append(")");
            sb.append("4. 门状态:").append(doorStatus.getDescription())
              .append("(").append(doorStatus.getValue()).append(")");
            sb.append("5.卡状态:").append(cardStatus.getDescription())
              .append("(").append(cardStatus.getValue()).append(")");
            sb.append("6.卡状态变更:").append(cardStatusChange);
            sb.append("7.卡号:").append(cardNumber);
            sb.append("8.故障:").append(getFaultsString());
            sb.append("9.电压:").append(String.format("%.2f", voltage));
            sb.append("10.电流:").append(String.format("%.2f", current));
            sb.append("数据长度:").append(dataLength).append(" 字节");
//            System.out.println(sb.toString());
            return sb.toString();           
        }