/// <summary> /// 磁条卡优先,兼容IC卡 /// </summary> /// <returns></returns> protected Result DefaultRead3() { Result ret = DefaultRead(); if ((ret == Result.Fail) && GlobalAppData.GetInstance().UseICCard) { //读卡失败,如果有启动IC,则进入IC卡读卡模式 ReportSync("none"); CardReader.CardType(0, 0); EMVTransProcess emv = new EMVTransProcess(); int state = emv.EMVTransInit(0, EMVTransProcess.PbocTransType.PURCHASE); CardReader.CardPowerDown(); if (state == 0) { SaveBoolean("UseICCard", true);//交易变量 BankCardNum = emv.EMVInfo.CardNum; Track2 = emv.EMVInfo.Track2; Log.Debug("IC Card In"); return(Result.Success); } } return(ret); }
private void monitorTimer_TimeTick(object sender, TimerWrapperEventArgs e) { int nCurrentCount = mMonitorTimer.CurrentCount; mMonitorTimer.Stop(); try { #region 清空管理界面计数器 if (nCurrentCount % mClearClickNumInterval == 0) { clearClickNum(); } #endregion long calcInterval = GlobalAppData.GetInstance().MonitorTimeInterval; if (nCurrentCount % calcInterval == 0) { if (SystemStatus == AppStatus.Idle || SystemStatus == AppStatus.OnAd || SystemStatus == AppStatus.OnStopServer) { #region 自动开关机时间检测 if (GlobalAppData.GetInstance().CloseAcmSwitch) { Log.Info("自动开关机时间检测..."); DateTime shutTime = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd") + " " + GlobalAppData.GetInstance().CloseAcmTime); DateTime shutTimeEnd = shutTime.AddMinutes(2); //2分钟内关机 if (DateTime.Now >= shutTime && DateTime.Now <= shutTimeEnd) { switch (GlobalAppData.GetInstance().CloseAcmType) { case GlobalAppData.ECloseAcmType.Close: WindowsController.ExitWindows(RestartOptions.PowerOff, true); System.Threading.Thread.Sleep(5000); break; case GlobalAppData.ECloseAcmType.Restart: WindowsController.ExitWindows(RestartOptions.Reboot, true); System.Threading.Thread.Sleep(5000); break; } return; } } #endregion #region 发送tms状态监控报文 if (GlobalAppData.GetInstance().TMSSwitch) { #region 设备自检,判断当前设备是否正常,暂停服务或者恢复服务 Log.Info("设备自检开始..."); bool isHdError = HardwareManager.CheckAll(); if (!isHdError && SystemStatus != AppStatus.OnStopServer) { bool isNetError = !HardwareManager.CheckOne("GPRS"); HideAd(); string errMsg = isNetError ? "网络故障" : "设备故障"; Intent stop = new Intent(mApplicationInfo.StopServerActivity); stop.PutExtra("Message", errMsg); SendMessage(ActivityManagerHandler.LAUNCH_ACTIVITY, stop); } #endregion Log.Info("发送TMS终端监控报文..."); } #endregion } nCurrentCount = 0; } } catch (System.Exception ex) { Log.Error(this, ex); } finally { mMonitorTimer.CurrentCount = nCurrentCount; mMonitorTimer.Start(); } }
/// <summary> /// IC卡优先,兼容磁条卡,不降级处理 /// </summary> /// <returns></returns> protected Result DefaultRead4() { bool isIcCard = true; int nCardType = 0; string trk1 = "", trk2 = "", trk3 = ""; CardReader.Status ret = CardReader.InsertCard(ref trk1, ref trk2, ref trk3); if (ret == CardReader.Status.CARD_SUCC) { CommonData.BIsCardIn = true;//有卡进入 //读卡模式隐藏按钮 ReportSync("none"); Log.Debug("Track1:" + trk1); Log.Debug("Track2 : " + trk2); Log.Debug("Track3 : " + trk3); string CardNumber = Utility.GetCardNumber(trk2, trk3); if (CardNumber.Trim().Length > 0) { Log.Info("MS Card Deal"); Track1 = trk1; Track2 = trk2; Track3 = trk3; BankCardNum = CardNumber; ExpDate = Utility.GetExpDate(trk2, trk3); isIcCard = Utility.CheckIcCardFlag(trk2); nCardType = 1; } if (isIcCard && GlobalAppData.GetInstance().UseICCard) { Log.Info("IC Card Deal"); CardReader.CardType(0, 0);//防止读卡器问题类型问题 EMVTransProcess emv = new EMVTransProcess(); int state = emv.EMVTransInit(0, EMVTransProcess.PbocTransType.PURCHASE); CardReader.CardPowerDown(); if (state == 0) { BankCardNum = emv.EMVInfo.CardNum; Track2 = emv.EMVInfo.Track2; ExpDate = emv.EMVInfo.CardExpDate; CardSeqNum = emv.EMVInfo.CardSeqNum; nCardType += 2; } } BankCardType = (UserBankCardType)nCardType; if (isIcCard && nCardType < 2)//不降级处理 { return(Result.Fail); } if (BankCardType == UserBankCardType.None) { return(Result.Fail); } } else if (ret == CardReader.Status.CARD_WAIT) { return(Result.Again); } else { Log.Error("ReaderOnce:" + ret.ToString()); return(Result.HardwareError); } return(Result.Success); }