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<byte[]> 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; 
 | 
        } 
 | 
  
 | 
    } 
 | 
  
 | 
  
 | 
} 
 |