using System; using System.Text; using System.Linq; using System.Drawing; using System.Diagnostics; using System.Windows.Forms; using System.Threading; using System.Threading.Tasks; using System.Collections.Generic; using Tango.PMR.Hardware; using Tango.PMR.Printing; using Tango.PMR.Stubs; using Tango.Stubs.UI; public void OnExecute(StubManager stubManager) { stubManager.RequestTimeout = 2000; UploadHardwareConfigurationRequest uploadHardwareConfigurationRequest = new UploadHardwareConfigurationRequest(); HardwareConfiguration hardwareConfiguration = new HardwareConfiguration(); HardwarePidControl hardwarePidControl1 = new HardwarePidControl(); hardwarePidControl1.HardwarePidControlType = Tango.PMR.Hardware.HardwarePidControlType.MotorFeeder; hardwarePidControl1.OutputProportionalPowerLimit = 80; hardwarePidControl1.OutputProportionalBand = 5; hardwarePidControl1.IntegralTime = 5; hardwarePidControl1.DerivativeTime = 0; hardwarePidControl1.SensorCorrectionAdjustment = 0; hardwarePidControl1.SensorMinValue = 0; hardwarePidControl1.SensorMaxValue = 0; hardwarePidControl1.SetPointRampRateorSoftStartRamp = 0; hardwarePidControl1.SetPointControlOutputRate = 4; hardwarePidControl1.ControlOutputType = 0; hardwarePidControl1.SsrControlOutputType = 0; hardwarePidControl1.OutputOnOffHysteresisValue = 0; hardwarePidControl1.ProcessVariableSamplingRate = 1000; hardwarePidControl1.PvInputFilterFactorMode = 4; hardwarePidControl1.OutputProportionalCycleTime = 0; hardwarePidControl1.AcHeatersHalfCycleTime = 0; hardwarePidControl1.ProportionalGain = 11.0; hardwareConfiguration.PidControls.Add(hardwarePidControl1); HardwareDancer hardwareDancer1 = new HardwareDancer(); hardwareDancer1.HardwareDancerType = Tango.PMR.Hardware.HardwareDancerType.RightDancer; hardwareDancer1.Gradual = false; hardwareDancer1.K = 0; hardwareDancer1.X = 0; hardwareDancer1.PulsePerMmSpring = 0; hardwareDancer1.MaximalMovementMm = 15; hardwareDancer1.ZeroPoint = 9784; hardwareDancer1.ResolutionBits = 14; hardwareDancer1.ArmLength = 126; hardwareConfiguration.Dancers.Add(hardwareDancer1); HardwareMotor hardwareMotor1 = new HardwareMotor(); hardwareMotor1.HardwareMotorType = Tango.PMR.Hardware.HardwareMotorType.MotoRdriving; hardwareMotor1.MinFrequency = 0; hardwareMotor1.MaxFrequency = 50000; hardwareMotor1.SetMicroStep = 1; hardwareMotor1.MicroStep = 32; hardwareMotor1.MaxChangeSlope = 10000; hardwareMotor1.HighLengthMicroSecond = 0; hardwareMotor1.SpeedMaster = false; hardwareMotor1.PulsePerRound = 200; hardwareMotor1.PulleyRadius = 1.25; hardwareMotor1.ConfigWord = 0x1c80; hardwareMotor1.DirectionThreadWize = true; hardwareMotor1.KvalHold = 0x35; hardwareMotor1.KvalRun = 0x7f; hardwareMotor1.KvalAcc = 0x7f; hardwareMotor1.KvalDec = 0x7f; hardwareMotor1.OverCurrentThreshold = 7; hardwareMotor1.StallThreshold = 0x1F; hardwareMotor1.ThermalCompensationFactor = 0; hardwareMotor1.LowSpeedOptimization = false; hardwareMotor1.StSlp = 0x20; hardwareMotor1.IntSpd = 0x1A13; hardwareMotor1.FnSlpAcc = 0x50; hardwareMotor1.FnSlpDec = 0x50; hardwareConfiguration.Motors.Add(hardwareMotor1); HardwareMotor hardwareMotor7 = new HardwareMotor(); hardwareMotor7.HardwareMotorType = Tango.PMR.Hardware.HardwareMotorType.MotoRloading; hardwareMotor7.MinFrequency = 0; hardwareMotor7.MaxFrequency = 15000; hardwareMotor7.SetMicroStep = 1; hardwareMotor7.MicroStep = 64; hardwareMotor7.MaxChangeSlope = 1000; hardwareMotor7.HighLengthMicroSecond = 0; hardwareMotor7.SpeedMaster = false; hardwareMotor7.PulsePerRound = 200; hardwareMotor7.PulleyRadius = 1.25; hardwareMotor7.ConfigWord = 0xC80; hardwareMotor7.DirectionThreadWize = true; hardwareMotor7.KvalHold = 0x28; hardwareMotor7.KvalRun = 0x5f; hardwareMotor7.KvalAcc = 0x5f; hardwareMotor7.KvalDec = 0x5f; hardwareMotor7.OverCurrentThreshold = 7; hardwareMotor7.StallThreshold = 0x1F; hardwareMotor7.ThermalCompensationFactor = 0; hardwareMotor7.LowSpeedOptimization = false; hardwareMotor7.StSlp = 6; hardwareMotor7.IntSpd = 0x44B8; hardwareMotor7.FnSlpAcc = 0x14; hardwareMotor7.FnSlpDec = 0x14; hardwareConfiguration.Motors.Add(hardwareMotor7); stubManager.WriteLine("data.data length = " + hardwareConfiguration.CalculateSize()); uploadHardwareConfigurationRequest.HardwareConfiguration = hardwareConfiguration; var response = stubManager.Run(uploadHardwareConfigurationRequest); Thread.Sleep(10000); JobRequest jobRequest = new JobRequest(); JobTicket jobTicket = new JobTicket(); jobTicket.Name = "Stubs Job"; jobTicket.EnableInterSegment = false; jobTicket.InterSegmentLength = 50; jobTicket.Length = 1000; ProcessParameters processParameters = new ProcessParameters(); processParameters.DyeingSpeed = 40; processParameters.TableIndex = 0; jobTicket.ProcessParameters = processParameters; jobTicket.WindingMethod = Tango.PMR.Printing.JobWindingMethod.Embroidery; JobSpool jobSpool = new JobSpool(); jobSpool.JobSpoolType = Tango.PMR.Printing.JobSpoolType.StandardSpool; jobSpool.Length = 1000; jobSpool.Weight = 0; jobSpool.Diameter = 0; jobSpool.StartOffsetPulses = 50; jobSpool.BackingRate = 10; jobSpool.SegmentOffsetPulses = 4000; jobSpool.BottomBackingRate = 70; jobSpool.RotationsPerPassage = 7; jobTicket.Spool = jobSpool; JobSegment jobSegment = new JobSegment(); jobSegment.Name = "Segment1"; jobSegment.Length = 8; JobBrushStop jobBrushStop = new JobBrushStop(); jobBrushStop.Index = 0; jobBrushStop.OffsetPercent = 0; jobBrushStop.OffsetMeters = 0; JobDispenser jobDispenser = new JobDispenser(); jobDispenser.Index = 2; jobDispenser.Volume = 10; jobDispenser.DispenserStepDivision = Tango.PMR.Printing.DispenserStepDivision.Auto; jobDispenser.NanolitterPerSecond = 10; jobDispenser.NanoliterPerCentimeter = 10; jobDispenser.PulsePerSecond = 500; jobDispenser.DispenserLiquidType = Tango.PMR.Printing.DispenserLiquidType.Cyan; jobDispenser.LiquidMaxNanoliterPerCentimeter = 40; jobDispenser.NanoliterPerPulse = 10; jobBrushStop.Dispensers.Add(jobDispenser); jobSegment.BrushStops.Add(jobBrushStop); jobTicket.Segments.Add(jobSegment); jobRequest.JobTicket = jobTicket; Thread.Sleep(50); stubManager.WriteLine("data.data length = " + jobRequest.CalculateSize()); var response2 = stubManager.Run(jobRequest); Thread.Sleep(100); int i=0; stubManager.RunContinuous("StubHeatingTestPollRequest",(response1) => { // stubManager.WriteLine (String.Format("Data, {0}, {1}, {2}, {3}, {4}, {5}, {6}, {7}",++i,response1.Zone1Temp,response1.Zone2Temp,response1.Heater1Active,response1.Heater2Active,response1.Heater1Percentage,response1.Heater2Percentage,response1.InfoMessage)); stubManager.WriteLine (String.Format("Feeder, {0}, Orig {1}, Err {2}, Calc {3}, read {4}, {5}",++i,response1.Zone1Temp,response1.Zone2Temp,response1.Heater1Percentage,response1.Heater2Percentage, response1.InfoMessage)); },0); }