领胜LDS 键盘AOI检测项目
wells.liu
2020-07-16 81480d62561dcb75a1fc968814ace1368fe5181b
src/Bro.UI.Config/MainFrm.cs
@@ -32,7 +32,7 @@
            VisualStudioToolStripExtender extender = new VisualStudioToolStripExtender();
            extender.SetStyle(menuMain, VisualStudioToolStripExtender.VsVersion.Vs2015, theme);
            InitialMenu(MenuFormFactory.MenuFrmTypeDict, "");
            //MenuFormFactory.MenuFrmTypeDict.ToList().ForEach(t =>
@@ -74,10 +74,10 @@
            //});
            m_deserializeMenuFrm = new DeserializeDockContent(GetMenuFromPersistString);
            LoadLayoutFromXML(m_deserializeMenuFrm);
            m_deserializeDeviceRunFrm = new DeserializeDockContent(GetAllFormPersistString);
            _allMenuLoadDoneHandle.Set();
            //LoadLayoutFromXML(m_deserializeMenuFrm);
            //_allMenuLoadDoneHandle.Set();
            Text = SettingHelper.GetProgramDescription();
            string iconPath = SettingHelper.GetProgramIcon();
@@ -90,7 +90,9 @@
        private void RegisterEvent(MenuFrmBase dockFrm)
        {
            dockFrm.OnUploadProcess = DockFrm_OnUploadProcess;
            dockFrm.OnLogMsgOutput = DockFrm_OnLogMsgOutput;
            dockFrm.OnLogMsgOutput -= DockFrm_OnLogMsgOutput;
            dockFrm.OnLogMsgOutput += DockFrm_OnLogMsgOutput;
            //if (dockFrm is FrmDevices)
            //{
@@ -155,21 +157,32 @@
                CloseAllDeviceFrm();
                LoadDevices();
                foreach (var dock in dockPanelMain.Contents)
                try
                {
                    MenuFrmBase m = dock as MenuFrmBase;
                    if (m != null && m.Id != frmId)
                    foreach (var dock in dockPanelMain.Contents)
                    {
                        m.DownloadProcess(process);
                        MenuFrmBase m = dock as MenuFrmBase;
                        if (m != null && m.Id != frmId)
                        {
                            m.DownloadProcess(process);
                        }
                    }
                }
                catch (Exception ex)
                {
                }
            });
        }
        private void Process_OnAlarmUpdate(string alarmMsg)
        private async void Process_OnAlarmUpdate(string alarmMsg)
        {
            tsslWarning.Text = alarmMsg;
            this.BeginInvoke(new Action(() =>
            {
                tsslWarning.Text = alarmMsg;
            }));
            await Task.Delay(100);
        }
        private ToolStripMenuItem GetMatchNode(ToolStripItemCollection items, string parentMenuCode)
@@ -247,14 +260,95 @@
        private void MainFrm_Load(object sender, EventArgs e)
        {
            LoadLayoutFromXML(m_deserializeMenuFrm);
            _allMenuLoadDoneHandle.Set();
            AdvancedPwdFrm.OnLoginOK = OnLoginOK;
            SpinWait wait = new SpinWait();
            while (_process == null)
            {
                wait.SpinOnce();
            }
            //SpinWait wait = new SpinWait();
            //while (_process == null)
            //{
            //    wait.SpinOnce();
            //}
            LoadProcess();
            LoadLayoutFromXML(m_deserializeDeviceRunFrm);
            LoadProcess(false);
        }
        private List<string> LoadProcessCode()
        {
            var systemProcessCodes = ProcessFactory.GetProcessCodes();
            var avaiableProcessCodes = SettingHelper.GetProcessCodes();
            List<string> pCodes = new List<string>();
            if (avaiableProcessCodes.Count > 0)
            {
                pCodes = avaiableProcessCodes.Intersect(systemProcessCodes).ToList();
            }
            else
            {
                pCodes = systemProcessCodes;
            }
            return pCodes;
        }
        private List<string> LoadProductionCode()
        {
            return SettingHelper.GetProductionCodes();
        }
        private void LoadProcess(bool isInitialProcess = true)
        {
            if (isInitialProcess)
            {
                _process = ProcessFactory.CreateStationProcess(LoadProcessCode()[0], LoadProductionCode()[0], out string msg);
                if (!string.IsNullOrWhiteSpace(msg))
                {
                    _process = null;
                    //LogAsync(DateTime.Now, "Process创建失败", $"{msg}");
                    throw new ProcessException($"Process创建失败,{msg}", null, ExceptionLevel.Fatal);
                }
                _process.InitialProcess("");
            }
            _process.OnLog -= OnProcessLogOutput;
            _process.OnLog += OnProcessLogOutput;
            _process.OnAlarmUpdate -= Process_OnAlarmUpdate;
            _process.OnAlarmUpdate += Process_OnAlarmUpdate;
            //CloseAllDeviceFrm();
            LoadDevices();
            try
            {
                foreach (var dock in dockPanelMain.Contents)
                {
                    //MenuFrmBase m = dock as MenuFrmBase;
                    //m.DownloadProcess(_process);
                    if (dock is MenuFrmBase menuFrm)
                    {
                        menuFrm.DownloadProcess(_process);
                    }
                }
            }
            catch (Exception ex)
            {
            }
        }
        private void OnProcessLogOutput(DateTime dt, string prefix, string msg)
        {
            DockFrm_OnLogMsgOutput(new LogMsg(dt, prefix, msg));
        }
        private void CloseAllDocuments()
@@ -310,7 +404,7 @@
        private void OnLoginOK(bool isLogin)
        {
            IsLogin = true;
            IsLogin = isLogin;
        }
        #endregion
@@ -413,6 +507,9 @@
                    if (u == null)
                        return;
                    if (_process.DeviceCollection.Any(d => d.Id == u.Device.Id))
                        return;
                    u.DockPanel = null;
                    u.Close();
                });
@@ -491,15 +588,18 @@
        private void Device_OnDeviceStateChanged(IDevice device, EnumHelper.DeviceState currentState)
        {
            for (int i = 1; i < ststripDevices.Items.Count; i++)
            ststripDevices.BeginInvoke(new Action(() =>
            {
                if ((ststripDevices.Items[i].Tag as IDevice)?.Id == device.Id)
                for (int i = 1; i < ststripDevices.Items.Count; i++)
                {
                    ststripDevices.Items[i].BackColor = currentState.GetEnumSelectedColor();
                    ststripDevices.Items[i].ForeColor = currentState.GetEnumSelectedFontColor();
                    break;
                    if ((ststripDevices.Items[i].Tag as IDevice)?.Id == device.Id)
                    {
                        ststripDevices.Items[i].BackColor = currentState.GetEnumSelectedColor();
                        ststripDevices.Items[i].ForeColor = currentState.GetEnumSelectedFontColor();
                        break;
                    }
                }
            }
            }));
        }
        #endregion
@@ -532,10 +632,10 @@
                dockFrm.Text = desc[2];
                if (_process != null)
                {
                    dockFrm.DownloadProcess(_process);
                }
                //if (_process != null)
                //{
                //    dockFrm.DownloadProcess(_process);
                //}
                dockFrm.SetLoginStatus(IsLogin);
@@ -570,10 +670,10 @@
                dockFrm.Text = desc[2];
                if (_process != null)
                {
                    dockFrm.DownloadProcess(_process);
                }
                //if (_process != null)
                //{
                //    dockFrm.DownloadProcess(_process);
                //}
                dockFrm.SetLoginStatus(IsLogin);