Esempio n. 1
0
        /// <summary>
        /// creates a new read channel suckaz
        /// </summary>
        /// <param name="channelName"></param>
        /// <param name="isCounter"></param>
        public void CreateReadTask()
        {
            DestroyReaderTask();

            ReaderWaitHandle = new System.Threading.ManualResetEvent(true);
            ReaderTask       = new Task("IntensityReader");
            ReaderTask.SynchronizeCallbacks = SynchronizeCallbacks;
            ReaderTask.Stream.Timeout       = Timeout;


            // Creates Input Channel task after checking channel type
            string cname = new String(ChannelName.Where(Char.IsLetter).ToArray());

            if (!IsCounter)
            {
                this.ReaderTask.AIChannels.CreateVoltageChannel(ChannelName, "IntensityReader " + cname,
                                                                AITerminalConfiguration.Differential, -10, 10, AIVoltageUnits.Volts);

                AnalogReader = new AnalogMultiChannelReader(ReaderTask.Stream);
                AnalogReader.SynchronizeCallbacks = SynchronizeCallbacks;
            }
            else
            {
                this.ReaderTask.CIChannels.CreateCountEdgesChannel(ChannelName, "CounterReader " + cname,
                                                                   CICountEdgesActiveEdge.Rising, 10, CICountEdgesCountDirection.Up);

                this.ReaderTask.CIChannels.All.CountEdgesTerminal           = InputTerminal;
                this.ReaderTask.CIChannels.All.CountEdgesCountResetTerminal = "/CARD/PFI0";

                CounterReader = new CounterMultiChannelReader(ReaderTask.Stream);
                CounterReader.SynchronizeCallbacks = SynchronizeCallbacks;
            }

            LastReadDataChunk = null;
            // configureing the clock.
            ReaderTask.Timing.ConfigureSampleClock(TimeBaseTerminal,
                                                   SamplingFrequency, SampleClockActiveEdge.Rising, SampleQuantityMode.ContinuousSamples);
            ReaderTask.Control(TaskAction.Verify);
        }
Esempio n. 2
0
        private void btnStart_Click(object sender, EventArgs e)
        {
            try
            {
                #region NNInit
                IDMotorExperiment _experiment = new IDMotorExperiment();
                xmlConfig = new XmlDocument();
                xmlConfig.Load("IDMotor.config.xml");
                _experiment.Initialize("IDMotor", xmlConfig.DocumentElement);
                _activationScheme = ExperimentUtils.CreateActivationScheme(xmlConfig.DocumentElement, "Activation");
                XmlReader         xr          = XmlReader.Create(genomeFile);
                List <NeatGenome> _genomeList = _experiment.LoadPopulation(xr);
                _genomeDecoder = new NeatGenomeDecoder(_activationScheme);
                neatGenome     = _genomeList[0];
                box            = _genomeDecoder.Decode(neatGenome);
                #endregion

                if (chkMotor.Checked)
                {
                    #region Encoder Init
                    digitalTask = new Task("digitalTask");

                    double zIndexValue = Convert.ToDouble(zIndexValueTextBox.Text);
                    int    pulsePerRev = Convert.ToInt32(pulsePerRevTextBox.Text);
                    zIndexEnable = zIndexEnabledCheckBox.Checked;

                    switch (decodingTypeComboBox.SelectedIndex)
                    {
                    case 0:     //X1
                        encoderType = CIEncoderDecodingType.X1;
                        break;

                    case 1:     //X2
                        encoderType = CIEncoderDecodingType.X2;
                        break;

                    case 2:     //X4
                        encoderType = CIEncoderDecodingType.X4;
                        break;
                    }

                    switch (zIndexPhaseComboBox.SelectedIndex)
                    {
                    case 0:     //A High B High
                        encoderPhase = CIEncoderZIndexPhase.AHighBHigh;
                        break;

                    case 1:     //A High B Low
                        encoderPhase = CIEncoderZIndexPhase.AHighBLow;
                        break;

                    case 2:     //A Low B High
                        encoderPhase = CIEncoderZIndexPhase.ALowBHigh;
                        break;

                    case 3:     //A Low B Low
                        encoderPhase = CIEncoderZIndexPhase.ALowBLow;
                        break;
                    }

                    digitalTask.CIChannels.CreateAngularEncoderChannel(counterComboBox.Text,
                                                                       "", encoderType, zIndexEnable, zIndexValue, encoderPhase, pulsePerRev,
                                                                       0.0, CIAngularEncoderUnits.Radians);

                    digitalTask.Control(TaskAction.Verify);

                    digitalReader = new CounterMultiChannelReader(digitalTask.Stream);
                    digitalTask.Start();

                    #endregion

                    #region Vout Init
                    waveTask = new Task("ControlVoltageTask");
                    waveTask.AOChannels.CreateVoltageChannel(physicalChannelComboBox.Text,
                                                             "",
                                                             Convert.ToDouble(minimumTextBox.Text),
                                                             Convert.ToDouble(maximumTextBox.Text),
                                                             AOVoltageUnits.Volts);

                    // verify the task before doing the waveform calculations
                    waveTask.Control(TaskAction.Verify);

                    writer = new AnalogSingleChannelWriter(waveTask.Stream);


                    waveTask.Start();

                    #endregion
                }
                box.ResetState();
                actualPos           = 0;
                n                   = 0;
                tmrRefresh.Enabled  = true;
                btnStart.Enabled    = false;
                btnStopDemo.Enabled = true;
                motorPos            = 0;
                ti                  = DateTime.Now;
                ta                  = ti;

                if (csFile != null && ControlSignal == null)
                {
                    ControlSignal = unpackControlSignal(csFile);
                }
                i = 0;

                if (!chckBoxWarmUp.Checked)
                {
                    csvWriter = new StreamWriter(dataFile);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }