void ReadBlockDataEvent(object sender, EventArgs e) { try { ulong uFactoryCode = 0; _strReadBlockData = ""; RWCard.rf_card(_iPonter, 0, ref uFactoryCode); if (uFactoryCode != 0) { if ((_FactoryCode == string.Empty) || (uFactoryCode.ToString() != _FactoryCode)) { tmTrick.Stop(); int iSec = _iBlock / 4; RWCard.rf_load_key_hex(_iPonter, 0, Convert.ToInt16(iSec), _strPassWordA); //加载A密码 RWCard.rf_load_key_hex(_iPonter, 4, Convert.ToInt16(iSec), _strPassWordB); //加载B密码 int i = RWCard.rf_authentication(_iPonter, 0, Convert.ToInt16(iSec)); //验证密码 if (i == 0) { byte[] bytData = new byte[32]; i = RWCard.rf_read_hex(_iPonter, Convert.ToInt16(_iBlock), bytData);//读取_iBlock块区中的数据 if (i == 0) { _strReadBlockData = DecConverString(bytData); _FactoryCode = uFactoryCode.ToString(); _iValid = 1; //读取成功 SetUIValue(sender, e); } else { _iValid = 0; //读取失败 } } else { _iValid = -1; //密码验证失败 } } } else { _iValid = -2; //未寻到卡 } tmTrick.Start(); } catch (Exception ex) { Log.WriteLog("IC卡读写控件-读卡", ex); } }
/// <summary> /// 写数据 1:写入成功 0:写入失败 -1:密码验证失败 -2:未寻到卡 /// </summary> /// <param name="iBlock">要写的块号</param> /// <param name="strBlockData">要写的数据</param> /// <returns></returns> public int WriteBlockData(int iBlock, string strBlockData) { try { _iBlock = iBlock; _strWriteBlockData = strBlockData; ulong uFactoryCode = 0; RWCard.rf_card(_iPonter, 0, ref uFactoryCode); if (uFactoryCode != 0) { tmTrick.Stop(); int iSec = _iBlock / 4; RWCard.rf_load_key_hex(_iPonter, 0, Convert.ToInt16(iSec), _strPassWordA); RWCard.rf_load_key_hex(_iPonter, 4, Convert.ToInt16(iSec), _strPassWordB); int i = RWCard.rf_authentication(_iPonter, 0, Convert.ToInt16(iSec)); if (i == 0) { i = RWCard.rf_write_hex(_iPonter, Convert.ToInt16(_iBlock), _strWriteBlockData);//往_iBlock块区中写入数据 Thread.Sleep(10); if (i == 0) { RWCard.rf_beep(_iPonter, 20); _iValid = 1; //写成功 } else //写失败 { _iValid = 0; } } else { _iValid = -1;//密码验证失败 } } else { _iValid = -2; } //转到读卡状态 tmTrick.Start(); return(_iValid); } catch (Exception ex) { Log.WriteLog("IC卡读写控件-写卡", ex); return(0); } }