Exemplo n.º 1
0
        public override IObservable <Mat> Process(IObservable <Mat> source)
        {
            return(Observable.Using(
                       () => PulsePalManager.ReserveConnection(PortName),
                       pulsePal => source.Do(input =>
            {
                var pulseInterval = 1000000 / (Frequency * CycleTimeMicroseconds);
                var pulseTimes = new int[input.Cols];
                var pulseVoltages = new byte[input.Cols];
                for (int i = 0; i < pulseTimes.Length; i++)
                {
                    pulseTimes[i] = pulseInterval * i;
                }

                using (var voltageHeader = Mat.CreateMatHeader(pulseVoltages))
                {
                    CV.Convert(input, voltageHeader);
                }

                lock (pulsePal.PulsePal)
                {
                    pulsePal.PulsePal.SendCustomPulseTrain(PulseId, pulseTimes, pulseVoltages);
                }
            })));
        }
Exemplo n.º 2
0
 public override IObservable <TSource> Process <TSource>(IObservable <TSource> source)
 {
     return(Observable.Using(
                () => PulsePalManager.ReserveConnection(PortName),
                pulsePal => source.Do(input =>
     {
         lock (pulsePal.PulsePal)
         {
             pulsePal.PulsePal.TriggerOutputChannels(Channels);
         }
     })));
 }