private void CardReadHandler(object sender, CardReadEventArgs e) { if (AppSettings.CurrentSetting.EnableWriteCard) { //当前读到的卡片 _cardInfo = CardDateResolver.Instance.GetCardInfoFromData(e.CardID, e[GlobalVariables.ParkingSection]); } foreach (int enID in WorkStationInfo.CurrentStation.EntranceList) { EntranceInfo entrance = ParkBuffer.Current.GetEntrance(enID); if (entrance != null && entrance.IsExitDevice) { RemoteReadCardNotify notify = new RemoteReadCardNotify(entrance.ParkID, entrance.EntranceID, e.CardID, e[GlobalVariables.ParkingSection]); if (_cardInfo != null) { notify.LastCarPlate = _cardInfo.LastCarPlate; } IParkingAdapter pad = ParkingAdapterManager.Instance[entrance.ParkID]; if (pad != null) { pad.RemoteReadCard(notify); break; } } } }
public void ProcessReport(ReportBase report) { Action <ReportBase> action = delegate(ReportBase report1) { EntranceInfo entrance = ParkBuffer.Current.GetEntrance(report1.EntranceID); if (entrance != null && WorkStationInfo.CurrentStation.EntranceList.Exists(e => e == entrance.EntranceID))//是否是工作站要处理的事件 { if (report1 is CardEventReport) { CardEventReport eventInfo = report1 as CardEventReport; ProcessCardEvent(eventInfo); } if (!(report1 is ParkVacantReport) && !(report1 is EntranceRemainTempCardReport) && !(report1 is EntranceStatusReport)) { eventList.InsertReport(report1); } } }; if (this.InvokeRequired) { this.Invoke(action, report); } else { action(report); } }
private void GetWorkmodeFromInput(EntranceInfo entrance) { entrance.WorkMode = EntranceWorkmodeOption.OPT_None; entrance.IsMaster = this.rdHost.Checked; entrance.IsExitDevice = this.rdExit.Checked; entrance.ReadAndTakeCardNeedCarSense = this.chkTakeCardNeedCarSense.Checked; entrance.AllowEjectCardWhithoutRead = this.chkAllowEjectCardWhithoutRead.Checked; entrance.LightEnable = this.chkLightEnable.Checked; entrance.ForbidWhenCardExpired = this.chkForbidWhenCardExpired.Checked; entrance.ExportCharge = this.chkExportCharge.Checked; entrance.OnlineHandleWhenNotOnList = this.chkOnlineHandleWhenNotOnList.Checked; entrance.ForbidWhenFull = this.chkForbidWhenFull.Checked; entrance.DisableTempCard = !this.chkAllowTempCard.Checked; entrance.Wiegand34 = this.chkWeigand34.Checked; entrance.NoParkingCount = this.chkNoParkingCount.Checked; entrance.Valid = this.chkValid.Checked; entrance.ReadCardInterval = this.txtCardReadInterval.IntergerValue; entrance.TicketPrinterCOMPort = this.cmbTicketPrinter.ComPort; entrance.TicketReaderCOMPort = this.cmbTicketReader.ComPort; entrance.TicketReaderCOMPort2 = this.cmbTicketReader2.ComPort; entrance.EnableParkvacantLed = this.chkEnableParkvacantLed.Checked; entrance.NoReaderOnCardCaptuer = this.chkNoReaderOnCardCaptuer.Checked; entrance.MonthCardWaitWhenOut = this.chkMonthCardWaitWhenOut.Checked; entrance.PrepayCardWaitWhenOut = this.chkPrepayCardWaitWhenOut.Checked; entrance.OnlyTempReaderAfterButtonClick = this.chkOnlyTempReaderAfterButtonClick.Checked; entrance.CardValidNeedResponse = true; //卡片有效指令需要控制器返回确认一直为真 entrance.UseAsAcs = this.chkUseAsACS.Checked; }
private void ClearInvalidWaitingCommand() { if (ParkBuffer.Current != null) { WaitingCommandBLL wb = new WaitingCommandBLL(AppSettings.CurrentSetting.ParkConnect); List <WaitingCommandInfo> wcs = wb.GetAllCommands().QueryObjects; List <EntranceInfo> entrances = ParkBuffer.Current.GetEntrances(); int entranceID = 0; //当前控制器id bool invalidEntrance = false; //当前控制器是否无效控制器 foreach (var wc in wcs) { if (wc.EntranceID != entranceID) { EntranceInfo entrance = entrances.FirstOrDefault(e => e.EntranceID == wc.EntranceID); entranceID = wc.EntranceID; invalidEntrance = entrance == null; } if (invalidEntrance) { wb.Delete(wc); } } } }
private void HandleBlacklist(YCTItem item, YCTWallet w, YCTBlacklist black) { bool catched = item.Reader.CatchBlackList(); //捕捉黑名单 if (catched && black.CatchAt == null) //之前没有捕捉日期的才写数据库 { black.WalletType = w.WalletType; black.CatchAt = DateTime.Now; black.UploadFile = null; new YCTBlacklistBll(AppSettings.CurrentSetting.MasterParkConnect).Update(black); } EntranceInfo entrance = item.EntranceID.HasValue ? ParkBuffer.Current.GetEntrance(item.EntranceID.Value) : null; OpenCardEventArgs args = new OpenCardEventArgs() { CardID = w.LogicCardID, CardType = w.WalletType == 0 ? string.Empty : YCTSetting.CardTyte, Entrance = entrance, Balance = (decimal)w.Balance / 100, LastError = "黑名单卡", }; if (this.OnError != null) { this.OnError(this, args); } }
private void FrmZSTSetting_Load(object sender, EventArgs e) { dataGridView1.Rows.Clear(); YiTingShanFuSetting yt = (new SysParaSettingsBll(AppSettings.CurrentSetting.ParkConnect)).GetSetting <YiTingShanFuSetting>(); if (yt != null) { AppSettings.CurrentSetting.GetYiTingConfig(yt); txtIP.IP = yt.IP; txtPort.IntergerValue = yt.Port; dataGridView1.Rows.Clear(); if (yt.Items != null && yt.Items.Count > 0) { foreach (YiTingPOS item in yt.Items) { EntranceInfo entrance = item.EntranceID != null?ParkBuffer.Current.GetEntrance(item.EntranceID.Value) : null; int row = dataGridView1.Rows.Add(); ShowItemOnRow(dataGridView1.Rows[row], item.ID, entrance != null ? entrance.EntranceName : string.Empty, entrance != null ? entrance.EntranceID : 0, item.Memo); } } chkEnable.Checked = GlobalSettings.Current.Get <OpenCardMessageHandler>().ContainService <YiTingShanFuSetting>(); } else { System.Net.IPAddress ip = Ralid.GeneralLibrary.NetTool.GetFirstIP(); if (ip != null) { txtIP.IP = ip.ToString(); } txtPort.IntergerValue = 16171; } }
private CardPaymentInfo GetPaymentInfo(CardInfo card, OpenCardEventArgs e, DateTime dt) { CardPaymentInfo ret = null; IParkingAdapter pad = null; EntranceInfo entrance = e.Entrance; if (entrance != null) { pad = ParkingAdapterManager.Instance[entrance.RootParkID]; } else //中央收费,默认使用卡片的入场停车场来扣费 { entrance = ParkBuffer.Current.GetEntrance(card.LastEntrance); if (entrance != null) { pad = ParkingAdapterManager.Instance[entrance.RootParkID]; } else { if (ParkingAdapterManager.Instance != null && ParkingAdapterManager.Instance.ParkAdapters != null) { pad = ParkingAdapterManager.Instance.ParkAdapters[0]; } } } if (pad != null) { ret = pad.CreateCardPaymentRecord(card, card.CarType, dt); } return(ret); }
public EntranceBase(EntranceInfo info, ParkBase parent) { Parent = parent; _entrance = info; _status = EntranceStatus.UnKnown; //初始状态设置为未知 if (info.TicketReaderCOMPort > 0) { _TicketReader = new BarCodeReader(info.TicketReaderCOMPort); _TicketReader.BarCodeRead += new BarCodeReadEventHandler(TicketReader_BarCodeRead); _TicketReader.Open(); } if (info.TicketPrinterCOMPort > 0) { _TicketPrinter = new KPM150BarCodePrinter(info.TicketPrinterCOMPort); _TicketPrinter.Open(); } //初始化处理消息包的线程 _PacketHandleThread = new Thread(ReportHandle_Thread); _PacketHandleThread.Start(); Thread t = new Thread(new ThreadStart(HeartBeatCheck_Thread)); t.IsBackground = true; t.Start(); }
/// <summary> /// 查看控制器中是否与有工作站要侦听的控制器在同一个停车场 /// </summary> /// <param name="park"></param> /// <returns></returns> public bool IsInSameParkList(List <int> entranceIDs1, List <int> entranceIDs2) { if (entranceIDs1 != null && entranceIDs1.Count > 0 && entranceIDs2 != null && entranceIDs2.Count > 0) { foreach (int id1 in entranceIDs1) { if (entranceIDs2.Exists(e => e == id1)) { return(true); } EntranceInfo entrance1 = GetEntrance(id1); if (entrance1 != null) { foreach (int id2 in entranceIDs2) { EntranceInfo entrance2 = GetEntrance(id2); if (entrance2 != null && entrance1.ParkID == entrance2.ParkID) { return(true); } } } } } return(false); }
public PlateRecognitionResult Recognize(int parkID, int entranceID) { string dir = TempFolderManager.GetCurrentFolder(); PlateRecognitionResult ret = new PlateRecognitionResult(); try { //EntranceInfo entrance = ParkBuffer.Current.GetEntrance(entranceID); EntranceInfo entrance = ParkBuffer.Current.GetEntrance(parkID, entranceID); if (entrance != null) { foreach (VideoSourceInfo video in entrance.VideoSources) { if (video.IsForCarPlate) { FrmSnapShoter frm = FrmSnapShoter.GetInstance(); string path = Path.Combine(dir, string.Format("{0}_{1}_{2}.jpg", "CarPlate", Guid.NewGuid().ToString(), video.VideoID)); if (frm.SnapShotTo(video, ref path, true, false)) { ret = Recognize(path); } } } } } catch (Exception ex) { Ralid.GeneralLibrary.ExceptionHandling.ExceptionPolicy.HandleException(ex); } return(ret); }
/// <summary> /// 初始化 /// </summary> public void Init() { if (ParkBuffer.Current != null) { List <Button> buttons = new List <Button>(); foreach (int enID in WorkStationInfo.CurrentStation.EntranceList) { EntranceInfo entrance = ParkBuffer.Current.GetEntrance(enID); if (entrance != null && entrance.IsExitDevice) { Button b = new Button(); b.Click += new EventHandler(b_Click); b.BackColor = System.Drawing.SystemColors.ButtonFace; b.Font = new System.Drawing.Font("宋体", 12, FontStyle.Bold); b.Tag = entrance.EntranceID; b.Text = string.Format("{0}", entrance.EntranceName); this.Controls.Add(b); buttons.Add(b); } } LayoutEntranceButtons(buttons); if (buttons.Count > 0) { SelectedEntranceID = Convert.ToInt32(buttons[0].Tag); } } }
/// <summary> /// 对通道进行图片抓拍,要求此通道有一个用于车牌识别的摄像机 /// </summary> /// <param name="parkID"></param> /// <param name="entranceID"></param> /// <returns>抓拍图片的地址,返回空时表示抓拍失败</returns> public string SnapShot(int parkID, int entranceID) { string dir = TempFolderManager.GetCurrentFolder(); try { EntranceInfo entrance = ParkBuffer.Current.GetEntrance(entranceID); if (entrance != null) { foreach (VideoSourceInfo video in entrance.VideoSources) { if (video.IsForCarPlate) { string path = Path.Combine(dir, string.Format("{0}_{1}_{2}.jpg", "SnapShot", Guid.NewGuid().ToString(), video.VideoID)); if (SnapShotTo(video, ref path, false, false)) { return(path); } } } } } catch (Exception ex) { Ralid.GeneralLibrary.ExceptionHandling.ExceptionPolicy.HandleException(ex); } return(string.Empty); }
private void ShowGeneralInfo(EntranceInfo entrance) { this.txtEntranceName.Text = entrance.EntranceName; txtIP.IP = entrance.IPAddress; txtIPMask.IP = entrance.IPMask; txtGateWay.IP = entrance.Gateway; this.txtCarPlateIP.IP = entrance.CarPlateIP; this.txtVideoID.IntergerValue = entrance.VideoID == null ? 0 : entrance.VideoID.Value; if (entrance.CarPlateNotifyIPs != null) { if (entrance.CarPlateNotifyIPs.Count > 0) { this.txtCarPlateNotifyController.IP = entrance.CarPlateNotifyIPs[0]; } if (entrance.CarPlateNotifyIPs.Count > 1) { this.txtCarPlateNotifyControllerSecond1.IP = entrance.CarPlateNotifyIPs[1]; } if (entrance.CarPlateNotifyIPs.Count > 2) { this.txtCarPlateNotifyControllerSecond2.IP = entrance.CarPlateNotifyIPs[2]; } } this.txtPaymentEventIndex.IntergerValue = entrance.PaymentEventIndex; }
private void HandleWallet(LR280Item item, LR280Response w) { EntranceInfo entrance = item.EntranceID.HasValue ? ParkBuffer.Current.GetEntrance(item.EntranceID.Value) : null; OpenCardEventArgs args = new OpenCardEventArgs() { CardID = w.卡号, CardType = LR280Setting.CardTyte, Entrance = entrance, Balance = (decimal)w.金额 / 100, }; if (args.CardType == LR280Setting.CardTyte) { ParkInfo p = ParkBuffer.Current.GetPark(entrance.ParkID); CardInfo card = (new CardBll(AppSettings.CurrentSetting.ParkConnect)).GetCardByID(w.卡号).QueryObject; if (card != null && card.CardType.Name == LR280Setting.CardTyte && (entrance == null || (!p.IsNested && entrance.IsExitDevice))) ////中央收费处和非嵌套车场的出口,则进行收费处理 { HandlePayment(item, w, args); } else { if (this.OnReadCard != null) { this.OnReadCard(this, args); } } } }
protected override void ItemShowing() { EntranceInfo info = (EntranceInfo)UpdatingItem; this.Text = info.EntranceName; this.txtEntranceName.Text = info.EntranceName; this.comAddress.EntranceAddress = info.Address; this.cmbTicketPrinter.ComPort = info.TicketPrinterCOMPort; this.cmbTicketReader.ComPort = info.TicketReaderCOMPort; if (info.TicketReaderCOMPort2 != null) { this.cmbTicketReader2.ComPort = info.TicketReaderCOMPort2.Value; } this.chkReadCardNeedCarSense.Checked = info.ReadAndTakeCardNeedCarSense; this.chkLightOnWhenCarArrive.Checked = info.LightEnable; this.txtCardReadInterval.IntergerValue = info.ReadCardInterval; this.chkEnableParkvacantLed.Checked = info.EnableParkvacantLed; this.chkNoReaderOnCardCaptuer.Checked = info.NoReaderOnCardCaptuer; this.chkMonthCardWaitWhenOut.Checked = info.MonthCardWaitWhenOut; this.chkPrepayCardWaitWhenOut.Checked = info.PrepayCardWaitWhenOut; this.chkCardValidNeedResponse.Checked = info.CardValidNeedResponse; this.chkOnlyTempReaderAfterButtonClick.Checked = info.OnlyTempReaderAfterButtonClick; this.chkNoParkingCount.Checked = info.NoParkingCount; this.chkUseAsACS.Checked = info.UseAsAcs; this.chkForbidWhenCardExpired.Checked = info.ForbidWhenCardExpired; this.chkForbidWhenFull.Checked = info.ForbidWhenFull; this.txtCarPlateIP.IP = info.CarPlateIP; this.txtVideoID.IntergerValue = info.VideoID == null ? 0 : info.VideoID.Value; }
private void ShowWorkmodeInfo(EntranceInfo entrance) { this.rdHost.Checked = entrance.IsMaster; this.rdNotHost.Checked = !entrance.IsMaster; this.rdExit.Checked = entrance.IsExitDevice; this.rdEnter.Checked = !entrance.IsExitDevice; this.chkTakeCardNeedCarSense.Checked = entrance.ReadAndTakeCardNeedCarSense; this.chkAllowEjectCardWhithoutRead.Checked = entrance.AllowEjectCardWhithoutRead; this.chkLightEnable.Checked = entrance.LightEnable; this.chkExportCharge.Checked = entrance.ExportCharge; this.chkOnlineHandleWhenNotOnList.Checked = entrance.OnlineHandleWhenNotOnList; this.chkForbidWhenCardExpired.Checked = entrance.ForbidWhenCardExpired; this.chkForbidWhenFull.Checked = entrance.ForbidWhenFull; this.chkAllowTempCard.Checked = !entrance.DisableTempCard; this.chkWeigand34.Checked = entrance.Wiegand34; this.chkNoParkingCount.Checked = entrance.NoParkingCount; this.chkValid.Checked = entrance.Valid; this.txtCardReadInterval.IntergerValue = entrance.ReadCardInterval; this.cmbTicketPrinter.ComPort = entrance.TicketPrinterCOMPort; this.cmbTicketReader.ComPort = entrance.TicketReaderCOMPort; if (entrance.TicketReaderCOMPort2 != null) { this.cmbTicketReader2.ComPort = entrance.TicketReaderCOMPort2.Value; } this.chkEnableParkvacantLed.Checked = entrance.EnableParkvacantLed; this.chkNoReaderOnCardCaptuer.Checked = entrance.NoReaderOnCardCaptuer; this.chkMonthCardWaitWhenOut.Checked = entrance.MonthCardWaitWhenOut; this.chkPrepayCardWaitWhenOut.Checked = entrance.PrepayCardWaitWhenOut; this.chkOnlyTempReaderAfterButtonClick.Checked = entrance.OnlyTempReaderAfterButtonClick; this.chkUseAsACS.Checked = entrance.UseAsAcs; }
private string GetEntrance(CardInfo card) { if (ParkBuffer.Current != null) { EntranceInfo entrance = ParkBuffer.Current.GetEntrance(card.LastEntrance); return(entrance != null ? entrance.EntranceName : string.Empty); } return(card.LastEntrance.ToString()); }
/// <summary> /// 显示通道控制器节点 /// </summary> /// <param name="node"></param> /// <param name="en"></param> public void RenderEntrance(TreeNode node, EntranceInfo en) { string toolTip = string.Empty; node.Tag = en; node.Text = en.IsExitDevice ? string.Format("{0}[{1}]", en.EntranceName, en.IPAddress) : string.Format("{0}[{1}][{2}]", en.EntranceName, en.IPAddress, en.TempCard); switch (en.Status) { case EntranceStatus.Ok: case EntranceStatus.GateDown: case EntranceStatus.GateUp: case EntranceStatus.LessCard: node.ForeColor = System.Drawing.Color.Black; node.ImageIndex = en.IsMaster ? 6 : 2; node.SelectedImageIndex = en.IsMaster ? 6 : 2; if (!en.IsExitDevice) { if (UserSetting.Current.MinTempCard >= 0 && UserSetting.Current.MinTempCard >= en.TempCard) { if (AppSettings.CurrentSetting.EnableTTS) { Ralid.GeneralLibrary.Speech.TTSSpeech.Instance.Speek(string.Format("{0} {1}", en.EntranceName, Resources.Resource1.HardwareTree_TempCardSpeech)); } toolTip = Resources.Resource1.HardwareTree_TempCardAlarm; node.ForeColor = System.Drawing.Color.Red; node.ImageIndex = 5; node.SelectedImageIndex = 5; } } break; case EntranceStatus.OffLine: node.ForeColor = System.Drawing.Color.Red; node.SelectedImageIndex = 4; node.ImageIndex = 4; break; case EntranceStatus.NoCard: case EntranceStatus.CardJam: case EntranceStatus.StorageAlarm: case EntranceStatus.StorageFull: toolTip = EntranceStatusDescription.GetDescription(en.Status); node.Text = string.Format("{0}[{1}][{2}]", en.EntranceName, toolTip); node.ForeColor = System.Drawing.Color.Red; node.ImageIndex = 5; node.SelectedImageIndex = 5; break; default: node.ForeColor = System.Drawing.Color.Red; node.SelectedImageIndex = 4; node.ImageIndex = 4; break; } node.ToolTipText = toolTip; }
private void ShowItemOnRow(DataGridViewRow row, LR280Item item) { EntranceInfo entrance = item.EntranceID != null?ParkBuffer.Current.GetEntrance(item.EntranceID.Value) : null; row.Cells["colComport"].Value = "COM" + item.Comport.ToString(); row.Cells["colEntrance"].Value = entrance != null ? entrance.EntranceName : string.Empty; row.Cells["colMemo"].Value = item.Memo; row.Tag = item; }
public PlateRecognitionResult Recognize(int parkID, int entranceID) { //if (_plnImp != null) //{ // return _plnImp.Recognize(parkID, entranceID); //} IPlateRecognition plnImp = null; //默认车牌识别类型 CarPlateRecognizationType reconizationType = AppSettings.CurrentSetting.CarPlateRecognization; try { EntranceInfo entrance = ParkBuffer.Current.GetEntrance(parkID, entranceID); if (entrance != null) { //如果是使用信路通识别的 if (entrance.CarPlateIP != "0.0.0.0" && !string.IsNullOrEmpty(entrance.CarPlateIP)) { reconizationType = CarPlateRecognizationType.XinLuTong; } else { foreach (VideoSourceInfo video in entrance.VideoSources) { if (video.IsForCarPlate) { //使用大华摄像机的 if (video.VideoSourceType == (int)VideoServerType.DaHua) { reconizationType = CarPlateRecognizationType.DaHua; } break; } } } } } catch (Exception ex) { Ralid.GeneralLibrary.ExceptionHandling.ExceptionPolicy.HandleException(ex); } if (_plnImps.ContainsKey((int)reconizationType)) { plnImp = _plnImps[(int)reconizationType]; } if (plnImp != null) { return(plnImp.Recognize(parkID, entranceID)); } return(new PlateRecognitionResult()); }
protected override CommandResult AddItem(object addingItem) { EntranceInfo entrance = addingItem as EntranceInfo; if (entrance.IsMaster && Park.MastEntrance != null) { return(new CommandResult(ResultCode.Fail, Resources.Resource1.FrmNetEntrance_MastExists)); } return(bll.Insert((EntranceInfo)addingItem)); }
private void ShowReportOnRow(DataGridViewRow row, WaitingCommandInfo record) { row.Tag = record; EntranceInfo entrance = ParkBuffer.Current.GetEntrance(record.EntranceID); row.Cells["colEntrance"].Value = entrance == null ? string.Empty : entrance.EntranceName; row.Cells["colCommandType"].Value = CommandTypeDescription.GetDescription(record.Command); row.Cells["colCardID"].Value = record.CardID; row.Cells["colWaitingCommandStatus"].Value = WaitingCommandStatusDescription.GetDescription(record.Status); }
/// <summary> /// 在树中勾选通道控制器节点 /// </summary> /// <param name="entrances"></param> public void SelectEntrances(List <EntranceInfo> entrances) { foreach (TreeNode node in allEntranceNodes) { EntranceInfo info = node.Tag as EntranceInfo; if (entrances.Exists(e => e.EntranceID == info.EntranceID)) { node.Checked = true; } } }
/// <summary> /// 获取通道控制器信息 /// </summary> /// <param name="parkID">停车场ID</param> /// <param name="entranceID">控制器ID</param> /// <returns></returns> public EntranceInfo GetEntrance(int parkID, int entranceID) { EntranceInfo entrance = null; ParkInfo park = _Parks.SingleOrDefault(p => p.ParkID == parkID); if (park != null) { entrance = park.Entrances.SingleOrDefault(en => en.EntranceID == entranceID); } return(entrance); }
protected override CommandResult UpdateItem(object updatingItem) { EntranceInfo entrance = updatingItem as EntranceInfo; ParkInfo park = ParkBuffer.Current.GetPark(entrance.ParkID); if (entrance.IsMaster && park.MastEntrance != null && park.MastEntrance.EntranceID != entrance.EntranceID) { return(new CommandResult(ResultCode.Fail, Resources.Resource1.FrmNetEntrance_MastExists)); } return(bll.Update((EntranceInfo)updatingItem)); }
protected override void ItemShowing() { EntranceInfo entrance = (EntranceInfo)UpdatingItem; ShowGeneralInfo(entrance); ShowWorkmodeInfo(entrance); rdEnter_CheckedChanged(rdEnter, EventArgs.Empty); this.Text = entrance.EntranceName; this.UCCardTypeProperty.CardTypeProperty = entrance.CardTypeProperty; this.UCCardTypeProperty.IsExit = entrance.IsExitDevice; }
/// <summary> /// 获取通道节点 /// </summary> /// <param name="entranceID"></param> /// <returns></returns> public TreeNode GetEntranceNode(int entranceID) { foreach (TreeNode node in allEntranceNodes) { EntranceInfo entrance = node.Tag as EntranceInfo; if (entrance != null && entrance.EntranceID == entranceID) { return(node); } } return(null); }
/// <summary> /// 更新一个控制板 /// </summary> /// <param name="info"></param> /// <returns></returns> public override bool UpdateEntrance(EntranceInfo info) { if (info.ParkID == this.Park.ParkID) { NetEntrance entrance = GetEntrance(info.EntranceID) as NetEntrance; if (entrance != null) { if (info.IsMaster) //更新主控制器 { entrance.EntranceInfo = info; entrance.EntranceInfo.MasterIP = info.IPAddress; _Master = entrance; _Master.SyncToHardware(); foreach (NetEntrance en in _Entrances) { if (!en.Equals(entrance)) { en.EntranceInfo.MasterIP = info.IPAddress; if (en.Status != EntranceStatus.OffLine) { en.SyncToHardware(); } } } return(true); } else { if (_Master != null && _Master.EntranceInfo == info) //info由主控制器转为非主控制器,将停车场的主控制器设置为空 { _Master = null; } info.MasterIP = _Master != null ? _Master.EntranceInfo.IPAddress : string.Empty; entrance.EntranceInfo = info; entrance.SyncToHardware(); return(true); } } } else { foreach (NETPark subPark in _SubParks) { if (info.ParkID == subPark.Park.ParkID) { return(subPark.UpdateEntrance(info)); } } return(false); } return(false); }
private void reader_CardReadHandler(object sender, ZSTReaderEventArgs e) { if (_ZSTSetting == null || _ZSTSetting.Items == null || !_ZSTSetting.HasReader(e.ReaderIP)) { _Reader.MessageConfirm(e.ReaderIP); return; } EntranceInfo entrance = ParkBuffer.Current.GetEntrance(_ZSTSetting.GetReader(e.ReaderIP).EntranceID); if (entrance == null) { _Reader.MessageConfirm(e.ReaderIP); return; } CardInfo card = (new CardBll(AppSettings.CurrentSetting.ParkConnect)).GetCardByID(e.CardID).QueryObject; if (!entrance.IsExitDevice) { _Reader.MessageConfirm(e.ReaderIP); if (card == null) //入口,如果卡片不在系统中,则先在系统中增加此中山通卡片 { //寻找系统中是否存在名称为"中山通"的自定义卡片类型 CardType ct = null; if (CustomCardTypeSetting.Current != null) { ct = CustomCardTypeSetting.Current.GetCardType("中山通"); } if (ct == null) { return; } if (!SaveZSTCard(e.CardID, ct, e.Balance)) { return; } } } ZSTHandlerInfo zst = GetZSTHandlerInstance(e.ReaderIP); zst.CardID = e.CardID; zst.Balance = e.Balance; //通过远程读卡方式 IParkingAdapter pad = ParkingAdapterManager.Instance[entrance.RootParkID]; if (pad != null) { pad.RemoteReadCard(new RemoteReadCardNotify(entrance.RootParkID, entrance.EntranceID, e.CardID)); } }
private void FrmZSTSetting_Load(object sender, EventArgs e) { dataGridView1.Rows.Clear(); if (_ZSTSetting != null && _ZSTSetting.Items != null && _ZSTSetting.Items.Count > 0) { foreach (ZSTItem item in _ZSTSetting.Items) { EntranceInfo entrance = ParkBuffer.Current.GetEntrance(item.EntranceID); int row = dataGridView1.Rows.Add(); ShowItemOnRow(dataGridView1.Rows[row], item.ReaderIP, entrance != null ? entrance.EntranceName : string.Empty, entrance != null ? entrance.EntranceID : 0, item.Memo); } } }
// Use this for initialization public void Init (EntranceInfo mEntrance,FestivalUser data) { currentPoint = 0; entrance = mEntrance; mState = FestivalUserState.FollowingDirection; currentDirection = mEntrance.entranceDirection; transform.up = currentDirection; _Data = data; followPoints = new List<Vector2> (); InitLine (); StartCoroutine ("FollowBehaviour"); mSkeletonAnimation.state.SetAnimation (0,_Data.animInfo.walk_anim, true); nameLabel = (Instantiate (nameLabel_prefab) as GameObject).GetComponent<UILabel> (); nameLabel.GetComponent<FollowPlayer> ().target = transform; nameLabel.text = _Data.name; controlState = UserControlState.Continue; }