| | |
| | | |
| | | import chuankou.SerialPortService; |
| | | import chushihua.SlotManager; |
| | | import dialog.Errlog; |
| | | public class ProtocolParser01 { |
| | | |
| | | /** |
| | |
| | | * 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); |
| | |
| | | //System.out.println("校验码是:"+crc); |
| | | return receivedCRC.equalsIgnoreCase(crc); |
| | | } catch (Exception e) { |
| | | System.err.println("CRC校验异常: " + e.getMessage()); |
| | | Errlog.logOperation("CRC校验异常: " + e.getMessage()); |
| | | return false; |
| | | } |
| | | } |
| | |
| | | @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(); |
| | | } |
| | | |