package com.dayu.qihealonelibrary.card; import com.dayu.baselibrary.tools.HexUtil; import com.dayu.qihealonelibrary.utils.CardCommon; import java.io.Serializable; import java.util.List; /** * author: zuo * Date: 2024-02-29 * Time: 16:29 * 备注:区域表号卡 */ public class RegionCard extends BaseCard implements Serializable { public String cardType = CardCommon.REGION;//卡命令 public int region;//区域地址(低前高后) 可以识别某县镇村 public int controllerCodel;// 控制器编号(低前高后) 本区域内控制器编号 public int getRegion() { return region; } public void setRegion(int region) { this.region = region; } public int getControllerCodel() { return controllerCodel; } public void setControllerCodel(int controllerCodel) { this.controllerCodel = controllerCodel; } public byte[] toByte() { Zero zero = new Zero(); return zero.toByte(); } public static RegionCard getBean(List data) { RegionCard regionCard = new RegionCard(); byte[] zero = data.get(0); regionCard.cardType = HexUtil.byteToHex(zero[0]); byte[] regionByte = new byte[2]; System.arraycopy(zero, 1, regionByte, 0, regionByte.length); regionCard.region = HexUtil.get16To10LowHightByBytes(regionByte); byte[] controllerCodelByte = new byte[2]; System.arraycopy(zero, 3, controllerCodelByte, 0, controllerCodelByte.length); regionCard.controllerCodel = HexUtil.get16To10LowHightByBytes(controllerCodelByte); return regionCard; } /** * 第1扇区0块 存储的数据 */ public class Zero { public byte[] toByte() { byte[] data = new byte[16]; data[0] = HexUtil.hexToByte(cardType); byte[] regionBytes = new byte[2]; byte[] regionDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(region)); System.arraycopy(regionDatas, 0, regionBytes, 0, regionDatas.length); if (regionBytes != null) { System.arraycopy(regionBytes, 0, data, 1, regionBytes.length); } byte[] controllerCodelBytes = new byte[2]; byte[] controllerCodelDatas = HexUtil.hexToByteArray(HexUtil.get10To16LowHigh(controllerCodel)); System.arraycopy(controllerCodelDatas, 0, controllerCodelBytes, 0, controllerCodelDatas.length); if (controllerCodelBytes != null) { System.arraycopy(controllerCodelBytes, 0, data, 3, controllerCodelBytes.length); } data[15] = getByteSum(data); return data; } } }