public bool StartWaveform()
        {
            if (DAQTask == null)
            {
                return(false);
            }

            lastStateIdx = 0;
            running      = true;

            if (!periodicWaveform)
            {
                if (rnd == null)
                {
                    rnd = new Random();
                }

                if (waveform[lastStateIdx].state == true)
                {
                    waveform[lastStateIdx].durationMilliSec = rnd.Next(onMinDuration, onMaxDuration);
                }
                else
                {
                    waveform[lastStateIdx].durationMilliSec = rnd.Next(offMinDuration, offMaxDuration);
                }
            }

            bool signalLevel = GetSignalLevel(waveform[lastStateIdx].state);

            if (signalLevel == true)
            {
                transitionevent.Transition = DigitalLineTransition.ToHigh;
            }
            else
            {
                transitionevent.Transition = DigitalLineTransition.ToLow;
            }
            OnWaveformTransition(transitionevent);

            try
            {
                writer.BeginWriteSingleSampleSingleLine(true, signalLevel, new AsyncCallback(OnDataWritten), DAQTask);
            }
            catch (DaqException ex)
            {
                MessageBox.Show(ex.Message);
                running = false;
            }
            stopped = !running;
            return(running);
        }
Esempio n. 2
0
    public void setLine(uint line, bool value)
    {
        Task      task        = new Task();
        string    devFullname = string.Format("{0}/port0/line{1}", name, line);
        DOChannel dochannel   = task.DOChannels.CreateChannel(devFullname, "", ChannelLineGrouping.OneChannelForEachLine);

        task.Start();
        DigitalSingleChannelWriter writer = new DigitalSingleChannelWriter(task.Stream);

        writer.BeginWriteSingleSampleSingleLine(true, value, null, null);
        task.Stop();
    }
Esempio n. 3
0
        private void StartGenerating()
        {
            if (!stopimmediate)
            {
                lastStateIdx = 0;
            }
            stopimmediate = false;

            running = true;

            waitDurationStopwatch = new Stopwatch();
            delaystopwatch        = new Stopwatch();
            microsec2ticks        = Convert.ToDouble(Stopwatch.Frequency) / 1000000.0;

            if (!periodicWaveform)
            {
                if (rnd == null)
                {
                    rnd = new Random();
                }

                if (waveform[lastStateIdx].state == true)
                {
                    waveform[lastStateIdx].durationMicroSec = rnd.Next(onMinDuration, onMaxDuration);
                }
                else
                {
                    waveform[lastStateIdx].durationMicroSec = rnd.Next(offMinDuration, offMaxDuration);
                }
            }
            else
            {
                //startstopTransitionTime
                if (smoothStartStop)
                {
                    smoothtransitionStep = 0;
                    smoothstarting       = true;
                    double multiplier = GetSmoothStart_StepMultiplier(smoothtransitionStep);
                    waveform[0].durationMicroSec = Convert.ToInt32(onDuration * multiplier);
                    waveform[1].durationMicroSec = Convert.ToInt32(offDuration * multiplier);

                    smoothtransitionTimer           = new System.Timers.Timer();
                    smoothtransitionTimer.Interval  = startstopTransitionTime / 4;
                    smoothtransitionTimer.Elapsed  += OnSmoothTransitionTimedEvent;
                    smoothtransitionTimer.AutoReset = false;
                    smoothtransitionTimer.Enabled   = true;
                    smoothtransition_inprogress     = true;
                }
                else
                {
                    waveform[0].durationMicroSec = onDuration;
                    waveform[1].durationMicroSec = offDuration;
                }
            }

            bool signalLevel = GetSignalLevel(waveform[lastStateIdx].state);

            if (signalLevel == true)
            {
                activeTransitionCounter++;
                transitionevent.Transition = DigitalLineTransition.ToHigh;
            }
            else
            {
                transitionevent.Transition = DigitalLineTransition.ToLow;
            }
            OnWaveformTransition(transitionevent);

            if (waveformType == WaveformType.DigitalIO)
            {
                if (DAQTask == null)
                {
                    return;
                }
                try
                {
                    writer.BeginWriteSingleSampleSingleLine(true, signalLevel, new AsyncCallback(OnDataWritten), DAQTask);
                }
                catch (DaqException ex)
                {
                    MessageBox.Show(ex.Message);
                    running = false;
                }
            }
            if (waveformType == WaveformType.TCP)
            {
                if (tcpClientGeneratorThread == null)
                {
                    tcpClientGeneratorThread = new Thread(new ThreadStart(DoTCPConnection));
                }

                if (tcpClientGeneratorThread.ThreadState == System.Threading.ThreadState.Unstarted)
                {
                    tcpClientGeneratorThread.Start();
                }
                running = true;
            }

            startCounter++;
            stopped = !running;

            if (running)
            {
                stateevent.State = WaveformState.Running;
            }
            else
            {
                stateevent.State = WaveformState.Stopped;
            }
            OnWaveformStateChange(stateevent);
        }