public override string BinToHex(byte [] key)
        {
            StringBuilder cardStr = new StringBuilder();

            ReaderDllMethod.BinToHex(key, cardStr, key.Length);
            return(cardStr.ToString());
        }
        public override bool Select(out string msg)
        {
            bool res = true;
            int  st  = 0;

            byte[] cardUid = new byte[10];
            if (!string.IsNullOrEmpty(CardId))
            {
                msg = "CardID is empty";
                return(false);
            }
            ReaderDllMethod.HexToBin(CardId, cardUid, CardId.Length);
            byte [] cardsak = new byte[1];
            st = ReaderDllMethod.mwSelect(handle, cardUid, CardId.Length, out cardsak[0]); //请求卡TYPE A 类型卡片
            if (st < 0)
            {
                msg = st.ToString() + "*" + ReaderDllMethod.getErrMsg(st);
                res = false;
            }
            else
            {
                msg = st.ToString() + "*" + ReaderDllMethod.getErrMsg(st);
                StringBuilder cardStr = new StringBuilder();
                ReaderDllMethod.BinToHex(cardsak, cardStr, st);
                CardSak = cardStr.ToString();
                DevBeep(1, 1, 2);
            }
            return(res);
        }
        public override bool Rats(out string msg)
        {
            bool res = true;
            int  st  = 0;

            byte[] cardUid = new byte[50];

            st = ReaderDllMethod.mwRats(handle, cardUid); //获取TYPE-A类型的智能卡复位信息
            if (st < 0)
            {
                msg = st.ToString() + "*" + ReaderDllMethod.getErrMsg(st);
                res = false;
            }
            else
            {
                msg = st.ToString() + "*" + ReaderDllMethod.getErrMsg(st);
                StringBuilder cardStr = new StringBuilder();
                ReaderDllMethod.BinToHex(cardUid, cardStr, st);
                AtrInfo = cardStr.ToString();
                DevBeep(1, 1, 2);
            }
            return(res);
        }
        public override bool OpenCard(out string msg)
        {
            bool res = true;
            int  st  = 0;

            byte[] cardUid = new byte[10];
            st = ReaderDllMethod.mwOpenCard(handle, Mode, cardUid); //打开卡片
            if (st < 0)
            {
                msg = st.ToString() + "*" + ReaderDllMethod.getErrMsg(st);
                res = false;
            }
            else
            {
                StringBuilder cardUidStr = new StringBuilder();
                ReaderDllMethod.BinToHex(cardUid, cardUidStr, st);//将卡号转换为16进制字符串
                msg    = st.ToString() + "*" + ReaderDllMethod.getErrMsg(st);
                CardId = cardUidStr.ToString();
                DevBeep(1, 1, 2);
            }

            return(res);
        }