Пример #1
0
        public override void Intialize(out List <LineSegment> segments, double speed, CancellationToken token)
        {
            if (double.IsNaN(speed))
            {
                segments = this.GetCuttingSegments();
            }
            else
            {
                segments = this.GetEmptySegments();
            }

            if (SystemContext.Hardware?.IsLaserOn == true)
            {
                var laserPara = new LaserParameter
                {
                    VoltagePercentage = this.layerPara.PowerPercent,
                    FrequencyHz       = this.layerPara.PulseFrequency,
                    DutyCircle        = this.layerPara.PulseDutyFactorPercent
                };
                SystemContext.Hardware?.SetLaserPara(laserPara);
                OperationEngine.Instance.NotifyLaserParaChanged(laserPara);
                token.WaitHandle.WaitOne((int)layerPara.DelayTime);
            }

            //Fllow logic, case: EmptyMove, Cut->Config
        }
Пример #2
0
        public static byte[] CreateLaserCmd(LaserParameter laserPara, int index = 1)
        {
            var list = new List <uint>();

            list.Add((uint)laserPara.FrequencyHz);
            list.Add((uint)laserPara.DutyCircle);
            list.Add(laserPara.Enabled ? 0xA5A5A5A5 : 0x00);
            list.Add((uint)laserPara.VoltagePercentage);
            return(Protocol.CreateRequest(index == 1 ? Commands.Laser1 : Commands.Laser2, list.ToArray()));
        }
Пример #3
0
 private void Engine_OnLaserParaChanged(LaserParameter para)
 {
     if (!double.IsNaN(para.FrequencyHz))
     {
         this.Frequency = para.FrequencyHz;
     }
     if (!double.IsNaN(para.VoltagePercentage))
     {
         this.Power = para.VoltagePercentage;
     }
     if (!double.IsNaN(para.DutyCircle))
     {
         this.DutyCircle = para.DutyCircle;
     }
 }
Пример #4
0
        public override void Execute(CancellationToken token, Predicate <MotorInfoMap <double> > posInfoHandler, bool isFirst)
        {
            if (SystemContext.Hardware?.IsLaserOn == true)
            {
                var laserPara = new LaserParameter
                {
                    VoltagePercentage = this.layerPara.PowerPercent,
                    FrequencyHz       = this.layerPara.PulseFrequency,
                    DutyCircle        = this.layerPara.PulseDutyFactorPercent
                };
                SystemContext.Hardware?.SetLaserPara(laserPara);
                OperationEngine.Instance.NotifyLaserParaChanged(laserPara);
            }
            double delay = this.layerPara.DelayTime + this.layerPara.LaserOffDelay;

            token.WaitHandle.WaitOne((int)delay);
        }
Пример #5
0
        public void LaserOn()
        {
            if (this.running)
            {
                return;
            }

            this.NotityStatusChanged("Laser", true);
            double freq = GlobalModel.Params.LayerConfig.DotBurstPulseFrequency;
            var    tmp  = new LaserParameter
            {
                FrequencyHz       = freq,
                DutyCircle        = 50,
                VoltagePercentage = this.Power
            };

            SystemContext.Hardware.LaserOn(tmp);
        }
Пример #6
0
 private void PierceCore(PierceParameters para, CancellationToken token)
 {
     //Control Axis Z
     this.MoveZ(this.GetFollowHeight(para), token);
     //Control gas
     if (SystemContext.Hardware?.IsBlowingOn == false)
     {
         SystemContext.Hardware?.SetBlowingPara(para.GasKind, para.GasPressure);
         SystemContext.Hardware?.BlowingOn();
         this.OnBlowingEnabledChanged?.Invoke(true);
         double delay = GlobalModel.Params.LayerConfig.OpenAirDelay;
         if (this.isFirst)
         {
             delay += GlobalModel.Params.LayerConfig.FirstOpenAirDelay;
         }
         token.WaitHandle.WaitOne((int)delay);
     }
     //Control focus
     //Control laser
     if (this.config.LaserEnabled)
     {
         var laserPara = new LaserParameter
         {
             FrequencyHz       = para.PulseFrequency,
             DutyCircle        = para.PulseDutyFactorPercent,
             VoltagePercentage = para.PowerPercent
         };
         SystemContext.Hardware?.LaserOn(laserPara);
         this.OnLaserEnabledChanged?.Invoke(true);
         this.OnLaserParaChanged?.Invoke(laserPara);
         //Delay -> (Laser off -> Delay -> Laser on)
         token.WaitHandle.WaitOne((int)para.DelayTime);
         if (para.IsExtraPuffing)
         {
             SystemContext.Hardware?.LaserOff();
             this.OnLaserEnabledChanged?.Invoke(false);
             token.WaitHandle.WaitOne((int)para.ExtraPuffing);
         }
     }
 }
Пример #7
0
        public void SetParameter(LaserParameter para)
        {
            ////uint freq = (uint)(1000000000 / (para.FrequencyHz * 1000 * 30.30303030));
            //uint freq = (uint)(1000000000 / (para.FrequencyHz * 30.30303030));
            //uint duty = (uint)(freq * para.DutyCircle / 100.0);

            //this.tcpClient.WriteIOData(RegisterDefinition.LaserFrequency, freq);
            //this.tcpClient.WriteIOData(RegisterDefinition.LaserDutyCycle, duty);

            //double voltage = this.maxVoltage * para.VoltagePercentage / 100.0;
            //uint data = ((uint)(voltage * 3276.7) | 0x8000) + 170;
            //if (voltage > 9.9)
            //{
            //    data = 0xFFFF;
            //}
            //var para1 = PciProtocol.CreateExtCommand(RegisterDefinition.AnalogOut1, data);
            //foreach (var pair in para1)
            //{
            //    this.pci.WriteMemoryData(pair.Key, pair.Value);
            //    Thread.Sleep(SEND_DELAY_MS);
            //}
        }
Пример #8
0
 public void SetParameter(LaserParameter para)
 {
     this.para = para;
     byte[] cmd = this.CovertToBytes(this.CreateParaCmd());
     this.serial.WriteData(cmd);
 }
Пример #9
0
 public void NotifyLaserParaChanged(LaserParameter para)
 {
     this.OnLaserParaChanged?.Invoke(para);
 }
Пример #10
0
 public void SetParameter(LaserParameter para)
 {
 }
Пример #11
0
 public void SetLaserPara(LaserParameter laserPara)
 {
     this.Laser.SetParameter(laserPara);
 }
Пример #12
0
 public void LaserOn(LaserParameter laserPara)
 {
     this.SetLaserPara(laserPara);
     this.LaserOn();
 }