예제 #1
0
        void InitDetection()
        {
            //IO监测
            if (Config.IOCard.Enable)
            {
                IOCard           = new IOCard();
                IOCard.OnTrayIn += () =>
                {
                    TrayInDate = DateTime.Now;
                    Machine.TrayIn();
                    UpdateUi();
                };
                IOCard.OnTrayOut += () =>
                {
                    Machine.TrayOut();
                    UpdateUi();
                };
                IOCard.OnTrigger += () =>
                {
                    int?index = Machine.NowTray?.NewColumn();
                    if (index == null)
                    {
                        return;
                    }
                    Trigger.TriggerOn((int)index);
                    UpdateUi();
                };
                IOCard.OnMachineStart += () => { OnPropertyChanged(nameof(StopVisibility)); };
                IOCard.OnMachineStop  += () => { OnPropertyChanged(nameof(StopVisibility)); };
                if (IOCard is IOCard ioCard)
                {
                    ioCard.OnMoni += () =>
                    {
                        MoniVisibility = Visibility.Visible;
                        OnPropertyChanged(nameof(MoniVisibility));
                    }
                }
                ;
            }
            //相机监测
            else
            {
            }
        }

        void UpdateUi()
        {
            Application.Current.Dispatcher.Invoke(new Action(() =>
            {
                OnPropertyChanged(nameof(NowTray));
                OnPropertyChanged(nameof(TraySpeed));
            }));
        }
예제 #2
0
        void InitTrigger()
        {
            Trigger         = new Trigger(SocketHelper.visionClient);
            Trigger.OnLog  += ShowLog;
            Trigger.OnRead += (cam, stageId, data) =>
            {
                if (cam == 1 && data.Count > 7)
                {
                    double.TryParse(data[7], out double px);
                    IOCard.AddTriggerDelay(px);
                }
                if (Machine.NowTray == null)
                {
                    LogError.Log.Debug($"Not Find Tray! \r\nTrayID:{Machine.NowTrayId} {cam} {stageId} {data.ToJson()}");
                    return;
                }

                Stopwatch stopwatch = new Stopwatch();
                stopwatch.Start();
                Product product;// = Machine.NowTray.Add(cam, stageId, data);
                lock (TriggerDataObject)
                {
                    product = Machine.NowTray.Add(cam, stageId, data);
                    if (product == null)
                    {
                        return;
                    }
                    if (!product.Success || product.IsRepeat)
                    {
                        Machine.AddCount(product);
                        return;
                    }
                }

                stopwatch.Stop();
                //LogRead.Log.Debug($"{stageId} {cam} 锁时长:{stopwatch.Elapsed.TotalMilliseconds}");
                Task.Run(() =>
                {
                    //LogRead.Log.Debug($" {stageId} {cam} 读码完成");
                    new Trace().PostData(Machine, product);
                });
            };
        }
예제 #3
0
 private void Button_Click_1(object sender, RoutedEventArgs e)
 {
     IOCard.MoniMachine(IOCard.IsRuning);
 }
예제 #4
0
 private void Button_Click(object sender, RoutedEventArgs e)
 {
     IOCard.MoniTray(2);
 }