/// <summary> /// 当客户端l连入或断开时要更新主界面 /// </summary> /// <param name="e"></param> private void SocketConnectOrClose(SocketConnectArgs e) { Controller controller = ControllerManager.Instance().Get(e.ConnectedSocket); if (controller == null) { return; } int dockNo = controller.DockNo; AgingDock dock = null; for (int i = 0; i < m_DockList.Count; i++) { dock = m_DockList[i]; if (dock.DockNo == dockNo) { if (e.Connected == true) { #region //如果已经开始老化了,新的控制器不准连入,但是如果是偶然断开重连的除外 if (dock.IsStartAging) { //这里主要是通过连接时间戳判断的 if (controller.SocketConnectTimestamp.Year > 2000) { controller.SocketConnectTimestamp = DateTime.Now; } else { if (controller.SocketToken != null && controller.SocketToken.ConnectSocket != null) { AsyncServer.Instance().CloseClientSocketEx(controller.SocketToken); } //controller.SocketToken.ConnectSocket.Shutdown(SocketShutdown.Both); else { Logger.Instance().ErrorFormat("SocketConnectOrClose() Error,编号为{0}的控制器SocketToken为null", dockNo); } break; } } else { controller.SocketConnectTimestamp = DateTime.Now; } SolidColorBrush brush = dock.dockGrid.Background as SolidColorBrush; switch (dock.AgingStatus) { case EAgingStatus.Unknown: case EAgingStatus.Waiting: dock.dockGrid.Background = new SolidColorBrush(Colors.Blue); dock.AgingStatus = EAgingStatus.PowerOn; break; case EAgingStatus.PowerOn: dock.dockGrid.Background = new SolidColorBrush(Colors.Blue); break; case EAgingStatus.Charging: case EAgingStatus.DisCharging: case EAgingStatus.Recharging: dock.dockGrid.Background = new SolidColorBrush(Colors.Yellow); break; case EAgingStatus.AgingComplete: dock.dockGrid.Background = new SolidColorBrush(Colors.Green); break; case EAgingStatus.Alarm: //出现除低电和耗尽以外的报警时提示红色 dock.dockGrid.Background = new SolidColorBrush(Colors.Red); break; default: break; } dock.lbStatus.Content = AgingStatusMetrix.Instance().GetAgingStatus(dock.AgingStatus); List <Controller> controllers = ControllerManager.Instance().Get(dockNo); int clientCount = controllers.Count((x) => { return(x.SocketToken != null && x.SocketToken.ConnectSocket != null && x.SocketToken.ConnectSocket.Connected == true); }); dock.lbWifiCount.Content = string.Format("控制器数量:{0}/5", clientCount); #endregion } else { #region List <Controller> controllers = ControllerManager.Instance().Get(dockNo); int clientCount = controllers.Count((x) => { return(x.SocketToken != null && x.SocketToken != e.ConnectedSocket && x.SocketToken.ConnectSocket != null && x.SocketToken.ConnectSocket.Connected == true); }); dock.lbWifiCount.Content = string.Format("控制器数量:{0}/5", clientCount); //int index = controllers.FindIndex((x) => { return x.SocketToken != null && x.SocketToken != e.ConnectedSocket;}); if (clientCount <= 0) { //dock.AgingStatus = EAgingStatus.Waiting; dock.dockGrid.Background = new SolidColorBrush(dock.DefaultColor); dock.lbStatus.Content = "等待接入"; break; } #endregion } break; } } }
/// <summary> /// 只显示那些用户选中的泵信息 /// </summary> private void LoadDetailList() { //列表中要显示几台泵 int pumpCount = m_PumpLocationList.Count; if (pumpCount <= 0) { Logger.Instance().Info("老化泵数量等于0。"); return; } for (int i = 0; i < pumpCount; i++) { RowDefinition row = new RowDefinition(); row.Height = new GridLength(40); pumpListGrid.RowDefinitions.Add(row); } for (int i = 0; i < pumpCount; i++) { SingleDetail detail = new SingleDetail(); detail.Name = "detail" + (i + 1).ToString(); detail.Tag = i + 1; detail.Margin = new Thickness(1, 1, 1, 1); detail.lbNo.Content = string.Format("{0}", i + 1); detail.lbPumpLocation.Content = string.Format("{0}-{1}-{2}", m_DockNo, m_PumpLocationList[i].Item2, m_PumpLocationList[i].Item3); detail.lbPumpType.Content = m_Parameter.PumpType; detail.lbRate.Content = m_Parameter.Rate.ToString(); AgingPump AgingPump = m_AgingPumpList.Find((x) => { return(x.DockNo == m_DockNo && x.RowNo == m_PumpLocationList[i].Item2 && x.Channel == m_PumpLocationList[i].Item3); }); if (AgingPump != null) { if (AgingPump.BeginAgingTime.Year > 2000) { detail.lbAgingStartTime.Content = AgingPump.BeginAgingTime.ToString("MM-dd HH:mm:ss"); } if (AgingPump.BeginDischargeTime.Year > 2000) { detail.lbDischargeStartTime.Content = AgingPump.BeginDischargeTime.ToString("MM-dd HH:mm:ss"); } if (AgingPump.BeginLowVoltageTime.Year > 2000) { detail.lbLowVoltageStartTime.Content = AgingPump.BeginLowVoltageTime.ToString("MM-dd HH:mm:ss"); } if (AgingPump.BeginBattaryDepleteTime.Year > 2000) { detail.lbDepleteStartTime.Content = AgingPump.BeginBattaryDepleteTime.ToString("MM-dd HH:mm:ss"); } if (AgingPump.EndAgingTime.Year > 2000) { detail.lbAgingEndTime.Content = AgingPump.EndAgingTime.ToString("MM-dd HH:mm:ss"); } detail.lbAlarm.Content = AgingPump.GetAlarmString(); detail.lbAgingStatus.Content = AgingStatusMetrix.Instance().GetAgingStatus(AgingPump.AgingStatus); if (AgingPump.AgingStatus == EAgingStatus.Unknown) { Logger.Instance().InfoFormat("泵状态显示异常,为未状态开始老化时间={0}", AgingPump.BeginAgingTime.ToString()); } } else { detail.lbAgingStartTime.Content = ""; detail.lbDischargeStartTime.Content = ""; detail.lbLowVoltageStartTime.Content = ""; detail.lbDepleteStartTime.Content = ""; detail.lbAgingEndTime.Content = ""; detail.lbAlarm.Content = ""; detail.lbAgingStatus.Content = ""; } pumpListGrid.Children.Add(detail); Grid.SetRow(detail, i + 1); if (i % 2 == 0) { detail.Background = new SolidColorBrush(System.Windows.Media.Color.FromRgb(0x00, 0xA2, 0xE8)); } } }
/// <summary> /// 只显示那些用户选中的泵信息 /// </summary> private void LoadDetailList() { //列表中要显示几台泵 int pumpCount = m_PumpLocationList.Count; if (pumpCount <= 0) { Logger.Instance().Info("老化泵数量等于0。"); return; } CustomProductID cid = ProductIDConvertor.Name2CustomProductID(m_Parameter.PumpType); ProductID pid = ProductIDConvertor.Custom2ProductID(cid); if (pid == ProductID.GrasebyF8) { pumpCount = pumpCount * 2;//F8则需要X2 } for (int i = 0; i < pumpCount; i++) { RowDefinition row = new RowDefinition(); row.Height = new GridLength(40); pumpListGrid.RowDefinitions.Add(row); } for (int i = 0; i < pumpCount; i++) { SingleDetail detail = new SingleDetail(); //F6,F8双道泵显示详细内容与其他泵不一样,要体现双道信息 if (cid == CustomProductID.GrasebyF6_Double || cid == CustomProductID.WZS50F6_Double) { if (m_PumpLocationList[i].Item3 % 2 == 0) { detail.lbPumpLocation.Content = string.Format("{0}-{1}-{2}(2道泵)", m_DockNo, m_PumpLocationList[i].Item2, m_PumpLocationList[i].Item3); } else { detail.lbPumpLocation.Content = string.Format("{0}-{1}-{2}(1道泵)", m_DockNo, m_PumpLocationList[i].Item2, m_PumpLocationList[i].Item3); } detail.lbPumpSN.Content = m_PumpLocationList[i].Item4; } else if (cid == CustomProductID.GrasebyF8) { if (i % 2 == 0) { detail.lbPumpLocation.Content = string.Format("{0}-{1}-{2}(1道泵)", m_DockNo, m_PumpLocationList[i / 2].Item2, m_PumpLocationList[i / 2].Item3); } else { detail.lbPumpLocation.Content = string.Format("{0}-{1}-{2}(2道泵)", m_DockNo, m_PumpLocationList[i / 2].Item2, m_PumpLocationList[i / 2].Item3); } detail.lbPumpSN.Content = m_PumpLocationList[i / 2].Item4; } else { detail.lbPumpSN.Content = m_PumpLocationList[i].Item4; detail.lbPumpLocation.Content = string.Format("{0}-{1}-{2}", m_DockNo, m_PumpLocationList[i].Item2, m_PumpLocationList[i].Item3); } detail.Name = "detail" + (i + 1).ToString(); detail.Tag = i + 1; detail.Margin = new Thickness(1, 1, 1, 1); detail.lbNo.Content = string.Format("{0}", i + 1); detail.lbPumpType.Content = m_Parameter.PumpType; detail.lbRate.Content = m_Parameter.Rate.ToString(); AgingPump AgingPump = null; if (cid == CustomProductID.GrasebyF8) { //F8双通道共用一个串口,在查找泵时需要指定通道编号从0开始 AgingPump = m_AgingPumpList.Find((x) => { return(x.DockNo == m_DockNo && x.RowNo == m_PumpLocationList[i / 2].Item2 && x.Channel == m_PumpLocationList[i / 2].Item3 && x.SubChannel == i % 2); }); } else { AgingPump = m_AgingPumpList.Find((x) => { return(x.DockNo == m_DockNo && x.RowNo == m_PumpLocationList[i].Item2 && x.Channel == m_PumpLocationList[i].Item3); }); } if (AgingPump != null) { if (AgingPump.BeginAgingTime.Year > 2000) { detail.lbAgingStartTime.Content = AgingPump.BeginAgingTime.ToString("MM-dd HH:mm:ss"); } if (AgingPump.BeginDischargeTime.Year > 2000) { detail.lbDischargeStartTime.Content = AgingPump.BeginDischargeTime.ToString("MM-dd HH:mm:ss"); } if (AgingPump.BeginLowVoltageTime.Year > 2000) { detail.lbLowVoltageStartTime.Content = AgingPump.BeginLowVoltageTime.ToString("MM-dd HH:mm:ss"); } if (AgingPump.BeginBattaryDepleteTime.Year > 2000) { detail.lbDepleteStartTime.Content = AgingPump.BeginBattaryDepleteTime.ToString("MM-dd HH:mm:ss"); } if (AgingPump.EndAgingTime.Year > 2000) { detail.lbAgingEndTime.Content = AgingPump.EndAgingTime.ToString("MM-dd HH:mm:ss"); } detail.lbAlarm.Content = AgingPump.GetAlarmString(); detail.lbAgingStatus.Content = AgingStatusMetrix.Instance().GetAgingStatus(AgingPump.AgingStatus); if (AgingPump.AgingStatus == EAgingStatus.Unknown) { Logger.Instance().InfoFormat("泵状态显示异常,为未状态开始老化时间={0}", AgingPump.BeginAgingTime.ToString()); } } else { detail.lbAgingStartTime.Content = ""; detail.lbDischargeStartTime.Content = ""; detail.lbLowVoltageStartTime.Content = ""; detail.lbDepleteStartTime.Content = ""; detail.lbAgingEndTime.Content = ""; detail.lbAlarm.Content = ""; detail.lbAgingStatus.Content = ""; } pumpListGrid.Children.Add(detail); Grid.SetRow(detail, i + 1); if (i % 2 == 0) { detail.Background = new SolidColorBrush(System.Windows.Media.Color.FromRgb(0x00, 0xA2, 0xE8)); } } }