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 }
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())); }
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; } }
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); }
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); }
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); } } }
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); //} }
public void SetParameter(LaserParameter para) { this.para = para; byte[] cmd = this.CovertToBytes(this.CreateParaCmd()); this.serial.WriteData(cmd); }
public void NotifyLaserParaChanged(LaserParameter para) { this.OnLaserParaChanged?.Invoke(para); }
public void SetParameter(LaserParameter para) { }
public void SetLaserPara(LaserParameter laserPara) { this.Laser.SetParameter(laserPara); }
public void LaserOn(LaserParameter laserPara) { this.SetLaserPara(laserPara); this.LaserOn(); }