public byte[] ReadData(ReadWriteTypeModeEnum rm, KeyModeEnum km, byte blockNo, byte keyGroupIndex, out byte[] cardSerialData)
        {
            //byte readModel = (byte)rm;
            byte keyModel = (byte)km;

            cardSerialData = SelectCard();
            if (cardSerialData == null)
            {
                return(null);
            }
            if (CheckReaderKey(keyModel, blockNo, keyGroupIndex))
            {
                byte[] pData    = new byte[100];
                ulong  pDataLen = 0;
                int    r        = MasterRDImprot.rf_M1_read(0, blockNo, pData, ref pDataLen);
                if (r == 0)
                {
                    byte[] resultData = new byte[pDataLen];
                    for (int i = 0; i < (int)pDataLen; i++)
                    {
                        resultData[i] = pData[i];
                    }
                    return(resultData);
                }
            }
            return(null);
        }
        public byte[] ReadData(KeyModeEnum km, byte blokNo, string keyStr, out byte[] cardSerialData)
        {
            // byte readModel = (byte)rm;
            byte keyModel = (byte)km;

            byte[] key      = GetKeyData(keyStr);
            byte[] pData    = new byte[100];
            ulong  pdataLen = 0;

            // đọc số thẻ
            cardSerialData = SelectCard();
            if (cardSerialData == null)
            {
                return(null);
            }
            int r;

            // Kiểm tra chìa khóa
            r = MasterRDImprot.rf_M1_authentication2(0, keyModel, blokNo, key);

            r = MasterRDImprot.rf_M1_read(0, blokNo, pData, ref pdataLen);
            if (r == 0)
            {
                byte[] rData = new byte[pdataLen];
                for (int i = 0; i < (int)pdataLen; i++)
                {
                    rData[i] = pData[i];
                }
                return(rData);
            }
            return(null);
        }