using DevExpress.XtraEditors; using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using TProduct.Model; namespace TProduct.WinFrmUI.TValve { /// /// 性能测试 /// public partial class FeatTestIngMainPage : TestIngBaseMainPage { //通讯辅助类 private TProduct.Link.LinkBaseHelper _linkHelper = null; //是否正在测试 protected bool _isIngTestStatus = false; //仪表盘控件 private Dictionary _allMonitorGaugeDict = null; //列表控件 private GridFeatMonitorRecordCtrl _monitorGridCtrl = null; //图表控件 private ChartValveFeatCurveCtrl _chartMainCtrl = null; //步骤操作控件 private TProduct.WinFrmUI.TBase.CommConBaseCtrl _commCtrl = null; //自动测试表 private FeatTestAutoParasCtrl _autoTestInfoCtrl = null; //日志控件 private TBase.TestItemLogContentCtrl _testLogCtrl = null; //产品信息 private PartInfoCtrl _partInfoCtrl = null; //所有记录 private List _allRecords = null; public int GetTestRecordCount() { if (_allRecords == null) return 0; return _allRecords.Count(); } //数据记录辅助类 private MonitorValveIngRecordHelper _monitorValveIngRecordHelper = null; // private TProduct.Model.TestStandard _testStandard = null; /// /// 构造函数 /// public FeatTestIngMainPage() { InitializeComponent(); this.PageTitle.Caption = "性能测试"; this.tabPageLinkLog.PageVisible = TProduct.UserSetting.Setting.Disp.IsShowLog; } public override void Close() { if (_realTimeChart != null) _realTimeChart.Stop(); base.Close(); DisconectCommPort(); } //能否关闭对话框 public virtual bool IsCloseFrmAble() { if (_durabilityTestTimeHelper != null) { if (_durabilityTestTimeHelper.IsTesting()) { MessageBox.Show("请先停止耐力试验,再关闭对话框"); return false; } } if (_isIngTestStatus) { DialogResult result = MessageBox.Show("请问是否关闭", "询问", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Warning); if (result != DialogResult.Yes) { return false; } DisconectCommPort(); } if (_realTimeChart != null) _realTimeChart.Stop(); return true; } #region 收到信息/发送消息 //收到信息 private void ReceiveIntrumentMonitorValue(List receiveMessagesInfos) { if (receiveMessagesInfos == null) return; //放到辅助类进行修正 List items = this._monitorValveIngRecordHelper.SetMonitorValue(receiveMessagesInfos); //仪表控件 foreach (var measValue in items) { if (_allMonitorGaugeDict.ContainsKey(measValue.ID)) _allMonitorGaugeDict[measValue.ID].RefreshRecordValue(measValue.Value); } //三维控件 //if (this._model3dCtrl != null) //{ // this._model3dCtrl.RefreshMonitorValue(items); //} } //附加信息 private void RefreshAdditionInfo( Dictionary additionInfos) { if (_isRefreshAdditionInfo == false) return; if (additionInfos == null) return; if (TProduct.CorpConfig.Instance.CorpFlag == eCorpFlag.WH701) { RefreshAdditionInfo武汉701(additionInfos); } _isRefreshAdditionInfo = false; } #endregion #region 修改Comm链接状态 private bool ChangeCommConnectStatus(bool isConnect) { if (isConnect) { return ConectCommPort(); } else { return DisconectCommPort(); } } /// /// 是否链接过COM口 /// private bool _isConnetctCommPort = false; public bool IsConnetctCommPort { get { return _isConnetctCommPort; } } /// /// 链接COM口 /// private bool ConectCommPort() { if (_linkHelper == null) { XtraMessageBox.Show("设备初始化失败!Error:79"); return false; } _isConnetctCommPort = true; //开始 string error_info = null; if (!_linkHelper.Start(out error_info)) { XtraMessageBox.Show(error_info); return false; } if (this._monitorValveIngRecordHelper != null) { _monitorValveIngRecordHelper.Start(); } //通知操作组件 if (_recordOperateCtrl != null) { _recordOperateCtrl.SetCommConnectStatus(true); } //实时图表 if (_realTimeChart != null) _realTimeChart.Start(); //设置最后一次测试信息 RefreshLastTestInfo(); bsiOperateInfo.Caption = "已链接COM口"; this._isIngTestStatus = true; return true; } public void RefreshLastTestInfo() { var user = TProduct.WinFrmUI.GlobeParas.CurrentLoginUser; if (user == null) return; if (_currentPart != null) { new BLL.PartBase().UpdateLastTestUserID(_currentPart.ID, user.ID); } if (_workBenchInfo != null) { new BLL.WorkBenchBase().UpdateLastTestUserID(_workBenchInfo.ID, user.ID); } if (this._testItem.TestStartTime == null) { this._testItem.TestStartTime = DateTime.Now; new BLL.TestProjectItem().RefreshTestStartTime(this._testItem.ItemID); } } /// /// 结束测试,断开链接 /// public bool DisconectCommPort() { if (_recordOperateCtrl != null) {//在Stop之前, 因为还要调用COM口 _recordOperateCtrl.SetCommConnectStatus(false); } string error_info = null; if (!_linkHelper.Stop(out error_info)) { MessageBox.Show(error_info); } this._isIngTestStatus = false; //if (_durabilityTestTimeHelper != null) //{ // _durabilityTestTimeHelper.SetStop(); //} if (this._monitorValveIngRecordHelper != null) { this._monitorValveIngRecordHelper.Stop(); } if (_realTimeChart != null) _realTimeChart.Stop(); this._testItem.TestEndTime = DateTime.Now; new BLL.TestProjectItem().RefreshTestEndTime(this._testItem.ItemID); bsiOperateInfo.Caption = "已断开COM口"; return true; } public void CheckTestEndTime() { if (this._testItem.TestStartTime == null) return; if (this._isIngTestStatus) { if (this._testItem.TestEndTime == null) { this._testItem.TestEndTime = DateTime.Now; new BLL.TestProjectItem().RefreshTestEndTime(this._testItem.ItemID); } else if (this._testItem.TestEndTime.Value <= this._testItem.TestStartTime.Value) { this._testItem.TestEndTime = DateTime.Now; new BLL.TestProjectItem().RefreshTestEndTime(this._testItem.ItemID); } } } #endregion public Action OnCloseAndView = null; private void bbi关闭并查看_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { if (OnCloseAndView != null) OnCloseAndView.Invoke(); } private bool _isRefreshAdditionInfo = false; private void bbi刷新状态信息_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) { _isRefreshAdditionInfo = true; } } }