private void toolSave_Click(object sender, EventArgs e)
 {
     FeederDefine.Instance.SaveFeederConfig(this.feederInfo.FeederConfig);
     if (this.feederInfo.FeederConfig.FeederName
         == FeederDefine.Instance.InstallFeederName[this.feederInfo.FeederConfig.Module][this.feederInfo.FeederConfig.Feeder])
     {
         FeederDefine.Instance.InstallFeeder[this.Module][this.feederInfo.FeederConfig.Feeder] = this.feederInfo.FeederConfig;
         FeederDefine.Save();
     }
 }
 private void toolUnInstall_Click(Feeder feeder)
 {
     if (FeederDefine.Instance.InstallFeederName[this.Module][feeder] != string.Empty)
     {
         if (MessageBox.Show($"是否卸载当前使用的Feeder [{FeederDefine.Instance.InstallFeederName[this.Module][feeder]}] Y/N", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
         {
             FeederDefine.Instance.InstallFeederName[this.Module][feeder] = string.Empty;
             FeederDefine.Instance.InstallFeeder[this.Module].Remove(feeder);
             this.lLeftUsed.Text  = $"左Feeder正在使用:[{FeederDefine.Instance.InstallFeederName[this.Module][Feeder.Left]}]";
             this.lRightUsed.Text = $"右Feeder正在使用:[{FeederDefine.Instance.InstallFeederName[this.Module][Feeder.Right]}]";
             FeederDefine.Save();
         }
     }
 }
        private void toolInstall_Click(object sender, EventArgs e)
        {
            if (this.listFeeder.SelectedItems.Count > 0 && this.listFeeder.SelectedIndex != -1 &&
                this.listFeeder.SelectedIndex < this.listFeeder.Items.Count)
            {
                var feder = FeederDefine.Instance.GetFeederConfig(Module, this.listFeeder.Items[this.listFeeder.SelectedIndex].ToString());

                if (MessageBox.Show($"是否安装[{feder.FeederName}] 到 [{feder.Feeder}] Y/N", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
                {
                    FeederDefine.Instance.InstallFeederName[this.Module][feder.Feeder] = feder.FeederName;
                    FeederDefine.Instance.InstallFeeder[this.Module][feder.Feeder]     = feder;
                    this.lLeftUsed.Text  = $"左Feeder正在使用:[{FeederDefine.Instance.InstallFeederName[this.Module][Feeder.Left]}]";
                    this.lRightUsed.Text = $"右Feeder正在使用:[{FeederDefine.Instance.InstallFeederName[this.Module][Feeder.Right]}]";
                    FeederDefine.Save();
                }
            }
        }
        public int SystemInit()
        {
            try
            {
                if (!SystemConfig.Load())
                {
                    throw new Exception("系统配置文件");
                }
                if (!SpeedDefine.Load())
                {
                    throw new Exception("速度配置文件");
                }

                if (!CameraDefine.Load())
                {
                    throw new Exception("相机配置文件");
                }

                if (!IODefine.Load())
                {
                    throw new Exception("IO配置文件");
                }

                if (!FeederDefine.Load())
                {
                    throw new Exception("Feeder配置文件");
                }

                if (!HardwareOrgHelper.Load())
                {
                    throw new Exception("机械校验文件");
                }

                if (!AxisDefine.Load())
                {
                    throw new Exception("轴卡配置文件");
                }
            }
            catch (Exception ex)
            {
                return(Error.Invoke(new SystemErrorEventArg {
                    Error = $"加载参数失败:[{ex.Message}]!!!"
                }));
            }

            bool rtn = MotionHelper.Instance.InitCard(PathDefine.sPathCard);

            if (!rtn)
            {
                return(Error.Invoke(new SystemErrorEventArg {
                    Error = "轴卡初始化失败!!!"
                }));
            }

            Task <string> result = Task <string> .Factory.StartNew(() =>
            {
                return(CameraDefine.Instance.CameraConnected());
            });

            Axis_Advantech.DisableCamDO();
            MotionHelper.Instance.ResetAllOuput();
            MotionHelper.Instance.StartMointorIO();
            Track.TrackManager.Instance.TrackInit();
            Thread.Sleep(100);

            if (MotionHelper.Instance.bServoWarning)
            {
                return(Error.Invoke(new SystemErrorEventArg {
                    Error = "伺服报警,请重新上电再复位!!!"
                }));
            }

            if (MotionHelper.Instance.bEmg)
            {
                return(Error.Invoke(new SystemErrorEventArg {
                    Error = "急停按下,请打开急停重新上电再复位!!!"
                }));
            }

            // 初始化实例

            for (Module module = Module.Front; module <= Module.After; ++module)
            {
                Entiys.Add(module, new MachineEntiy(module));
                this.FlowMachine.Add(module, new StateMachine(module));
                Module index = module;
                Task.Factory.StartNew(() => {
                    IODefine.Instance.MachineIO[index].Init();
                    IODefine.Instance.TrackIO[(Config.Track)(index)].Init();
                    if (index == Module.Front)
                    {
                        IODefine.Instance.OtherIO.Init();
                    }
                });
            }


            result.Wait();
            if (result.Result != string.Empty)
            {
                return(Error.Invoke(new SystemErrorEventArg {
                    Error = result.Result
                }));
            }
            else
            {
                MotionHelper.Instance.MachineIOMointor.Tick += Entiys[Module.Front].MachineIOMointor;
                MotionHelper.Instance.MachineIOMointor.Tick += Entiys[Module.After].MachineIOMointor;
            }

            return(0);
        }