/// <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); }
/// <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); }