/// <summary> /// 设置某个扇区的密钥,使用默认密钥,修改为设置好的密钥 /// </summary> /// <param name="cardID">卡片的卡号(为null或空时不检查卡号是否一致)</param> /// <param name="section">扇区(0~15)</param> /// <param name="successBuz">成功是否发出提示音</param> /// <param name="failBuz">失败是否发出提示音</param> /// <returns></returns> public CardOperationResultCode SetSectionKey(string cardID, int section, bool successBuz, bool failBuz) { bool originalStarted = _Started; if (originalStarted) { StopReadCard(); //正在读卡,先停止 WaitForReading(); //等待读卡完成 } CardOperationResultCode result = CardOperationResultCode.InitFail; try { if (HadActiveReader) { result = _ActiveReader.SetSectionKey(cardID, section, successBuz, failBuz); } else { foreach (ICardReader reader in _Readers) { result = reader.SetSectionKey(cardID, section, successBuz, failBuz); if (result == CardOperationResultCode.Success) { _ActiveReader = reader; break; } } } } catch (ThreadAbortException ex) { } catch (Exception ex) { ExceptionPolicy.HandleException(ex); } if (originalStarted) { BeginReadCard(); //恢复读卡 } return(result); }