领胜LDS 键盘AOI检测项目
wells.liu
2020-07-13 54f0329172de152cf95644f6d427971542e9f42c
src/Bro.UI.Config/MainFrm.cs
@@ -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,90 @@
        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);
                }
            }
            catch (Exception ex)
            {
            }
        }
        private void OnProcessLogOutput(DateTime dt, string prefix, string msg)
        {
            DockFrm_OnLogMsgOutput(new LogMsg(dt, prefix, msg));
        }
        private void CloseAllDocuments()
@@ -310,7 +399,7 @@
        private void OnLoginOK(bool isLogin)
        {
            IsLogin = true;
            IsLogin = isLogin;
        }
        #endregion
@@ -411,6 +500,9 @@
                }).ToList().ForEach(u =>
                {
                    if (u == null)
                        return;
                    if (_process.DeviceCollection.Any(d => d.Id == u.Device.Id))
                        return;
                    u.DockPanel = null;
@@ -535,10 +627,10 @@
                dockFrm.Text = desc[2];
                if (_process != null)
                {
                    dockFrm.DownloadProcess(_process);
                }
                //if (_process != null)
                //{
                //    dockFrm.DownloadProcess(_process);
                //}
                dockFrm.SetLoginStatus(IsLogin);
@@ -573,10 +665,10 @@
                dockFrm.Text = desc[2];
                if (_process != null)
                {
                    dockFrm.DownloadProcess(_process);
                }
                //if (_process != null)
                //{
                //    dockFrm.DownloadProcess(_process);
                //}
                dockFrm.SetLoginStatus(IsLogin);