Example #1
0
        /// <summary>
        /// 连续读取该扇区的数据
        /// </summary>
        /// <param name="sector">扇区</param>
        /// <param name="block">块号</param>
        /// <returns>读到的内容</returns>
        public string ReadSectorData(int sector, int block)
        {
            byte[] resultBuff = null;
            byte[] buff       = new byte[16];
            int    ret        = -1;

            switch (_readerType)
            {
            case ReaderType.COM:
                ret = MwRfSDK.rf_read(_icdev, 4 * sector + block, buff);
                if (ret != 0)
                {
                    return("");
                }
                break;

            case ReaderType.NET:
                //ret = MwRfSDKNet.rf_read(_icdev, 4 * sector + block, buff);
                resultBuff = Read(4 * sector + block);
                datalen    = resultBuff.Length;
                if (datalen > 0)
                {
                    if ((resultBuff[0] == 0xbb) & (resultBuff[1] == 0xff))
                    {
                        switch (resultBuff[2])
                        {
                        case 0x10:
                            ret = 0;
                            for (int j = 3; j < datalen; j++)
                            {
                                buff[j - 3] = resultBuff[j];
                            }
                            break;

                        default:
                            ret = 1;
                            break;
                        }
                    }
                }
                if (ret != 0)
                {
                    return("");
                }
                break;
            }
            string data = Encoding.Default.GetString(buff);

            return(data);
        }
Example #2
0
        /// <summary>
        /// 读IC卡数据,此方法适用于不启用线程时读卡用,
        /// </summary>
        /// <param name="sector">扇区</param>
        /// <returns>读到的内容</returns>
        public string ReadData(int sector)
        {
            byte[] resultBuff = null;
            string data       = "";
            int    ret        = -1;

            byte[] buff = new byte[16];
            //InitCard(sector);
            if (!Auth(sector))
            {
                return("");
            }
            switch (_readerType)
            {
            case ReaderType.COM:
                for (int block = 0; block < 3; block++)
                {
                    for (int j = 0; j < buff.Length; j++)
                    {
                        buff[j] = 0x00;
                    }
                    ret   = MwRfSDK.rf_read(_icdev, 4 * sector + block, buff);
                    data += Encoding.Default.GetString(buff);
                    if (buff[15] == 0x00)
                    {
                        break;
                    }
                }
                break;

            case ReaderType.NET:
                for (int block = 0; block < 3; block++)
                {
                    for (int j = 0; j < buff.Length; j++)
                    {
                        buff[j] = 0x00;
                    }
                    //ret = MwRfSDKNet.rf_read(_icdev, 4 * sector + block, buff);
                    resultBuff = Read(4 * sector + block);
                    datalen    = resultBuff.Length;
                    if (datalen > 0)
                    {
                        if ((resultBuff[0] == 0xbb) & (resultBuff[1] == 0xff))
                        {
                            switch (resultBuff[2])
                            {
                            case 0x10:
                                ret = 0;
                                for (int j = 3; j < datalen; j++)
                                {
                                    buff[j - 3] = resultBuff[j];
                                }
                                break;

                            default:
                                ret = 1;
                                break;
                            }
                        }
                    }
                    data += Encoding.Default.GetString(buff);
                    if (buff[15] == 0x00)
                    {
                        break;
                    }
                }
                break;
            }
            return(data);
        }