public override void RobotInit() { absoluteTach = new Tachometer(di); quadratureTach = new Tachometer(quadDI); quadratureTach.EdgesPerRevolution = 2048; quadratureCounter = new UpDownCounter(); quadratureCounter.UpSource = quadDI; quadratureCounter.UpEdgeConfiguration = EdgeConfiguration.kRisingEdge; externalDirectionCounter = new ExternalDirectionCounter(quadDI, quadDIB); externalDirectionCounter2x = new ExternalDirectionCounter(quadDI, quadDIB); externalDirectionCounter2x.EdgeConfiguration = EdgeConfiguration.kBothEdges; externalDirectionCounter2x.ReverseDirection = true; DigitalGlitchFilter filter = new DigitalGlitchFilter(); filter.SetPeriod(TimeSpan.FromSeconds(1)); //filter.Add(di); interrupt = new AsynchronousInterrupt(di, (r, f) => { Console.WriteLine("Interrupt Occured " + count); count++; //Thread.Sleep(20); }); interrupt.SetInterruptEdges(true, false); interrupt.Enable(); }
public void TestGlitchFilterOverCreation() { List<FilterList> inputs = new List<FilterList>(); try { for (int i = 0; i < 3; i++) { DigitalInput input = new DigitalInput(i); DigitalGlitchFilter filter = new DigitalGlitchFilter(); filter.Add(input); FilterList list = new FilterList { input = input, filter = filter, index = i }; inputs.Add(list); Assert.That(SimData.DIO[i].FilterIndex, Is.EqualTo(i)); } Assert.Throws<AllocationException>(() => { DigitalGlitchFilter filter = new DigitalGlitchFilter(); }); } finally { foreach (var filterList in inputs) { filterList.filter.Remove(filterList.input); filterList.filter.Dispose(); filterList.input.Dispose(); Assert.That(SimData.DIO[filterList.index].FilterIndex, Is.EqualTo(-1)); } } }