Exemplo n.º 1
0
        private void frmDataDisplay_Load(object sender, EventArgs e)
        {
            MccDaq.TriggerType DefaultTrig;

            InitUL();

            // determine the number of analog channels and their capabilities
            int ChannelType = clsAnalogIO.ANALOGINPUT;

            NumAIChans = AIOProps.FindAnalogChansOfType(DaqBoard, ChannelType,
                                                        out ADResolution, out Range, out LowChan, out DefaultTrig);

            if (NumAIChans == 0)
            {
                lblAcqStat.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                  " does not have analog input channels.";
                lblAcqStat.ForeColor   = Color.Red;
                cmdStartAcq.Visible    = false;
                cmdStopConvert.Visible = true;
                cmdStopConvert.Enabled = true;
            }
            else
            {
                lblAcqStat.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                  " collecting analog data on two" +
                                  " channels using FileAInScan with Range set to "
                                  + Range.ToString() + ".";
            }
        }
Exemplo n.º 2
0
        private void frmAOut_Load(object sender, EventArgs e)
        {
            MccDaq.TriggerType DefaultTrig;

            InitUL();

            // determine the number of analog channels and their capabilities
            int ChannelType = clsAnalogIO.ANALOGOUTPUT;

            NumAoChans = AIOProps.FindAnalogChansOfType(DaqBoard, ChannelType,
                                                        out DAResolution, out Range, out LowChan, out DefaultTrig);

            if (NumAoChans == 0)
            {
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " does not have analog output channels.";
                this.btnSendData.Enabled   = false;
                this.btnUpdateDACs.Enabled = false;
            }
            else
            {
                if (NumAoChans > 4)
                {
                    NumAoChans = 4;
                }
                MaxChan             = LowChan + NumAoChans - 1;
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " updating analog data on up to " + NumAoChans.ToString() +
                                      " channels using AOut with Range set to " + Range.ToString() + ".";
            }
        }
Exemplo n.º 3
0
        private void frmSendAData_Load(object sender, EventArgs e)
        {
            int LowChan;
            int ChannelType;

            MccDaq.TriggerType DefaultTrig;

            InitUL();

            // determine the number of analog channels and their capabilities
            ChannelType = clsAnalogIO.ANALOGOUTPUT;
            NumAOChans  = AIOProps.FindAnalogChansOfType(DaqBoard, ChannelType,
                                                         out DAResolution, out Range, out LowChan, out DefaultTrig);
            if (NumAOChans == 0)
            {
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " does not have analog input channels.";
                UpdateButton.Enabled  = false;
                txtVoltsToSet.Enabled = false;
            }
            else
            {
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " generating analog output on channel 0 using cbAOut()" +
                                      " and Range of " + Range.ToString() + ".";
                HighChan = LowChan + NumAOChans - 1;
            }
        }
Exemplo n.º 4
0
        private void frmDataDisplay_Load(object sender, EventArgs e)
        {
            InitUL();

            // determine the number of analog channels and their capabilities
            int ChannelType = clsAnalogIO.ATRIGIN;

            NumAIChans = AIOProps.FindAnalogChansOfType(DaqBoard, ChannelType,
                                                        out ADResolution, out Range, out LowChan, out DefaultTrig);

            if (NumAIChans == 0)
            {
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " does not have analog input or it does not support analog trigger.";
                cmdStart.Enabled    = false;
                txtHighChan.Enabled = false;
            }
            else
            {
                // Check the resolution of the A/D data and allocate memory accordingly
                if (ADResolution > 16)
                {
                    // set aside memory to hold high resolution data
                    ADData32  = new uint[NumPoints];
                    MemHandle = MccDaq.MccService.WinBufAlloc32Ex(NumPoints);
                }
                else
                {
                    // set aside memory to hold 16-bit data
                    ADData    = new ushort[NumPoints];
                    MemHandle = MccDaq.MccService.WinBufAllocEx(NumPoints);
                }
                if (MemHandle == IntPtr.Zero)
                {
                    cmdStart.Enabled = false;
                    NumAIChans       = 0;
                }
                if (NumAIChans > 8)
                {
                    NumAIChans = 8;                 //limit to 8 for display
                }
                MaxChan             = LowChan + NumAIChans - 1;
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " collecting analog data on up to " + NumAIChans.ToString() +
                                      " channels using AInScan with Range set to " + Range.ToString() + ".";
            }
        }
Exemplo n.º 5
0
        private void frmSendAData_Load(object sender, EventArgs e)
        {
            int ChannelType;

            MccDaq.TriggerType DefaultTrig;

            InitUL();

            // determine the number of analog channels and their capabilities
            ChannelType = clsAnalogIO.ANALOGOUTPUT;
            NumAOChans  = AIOProps.FindAnalogChansOfType(DaqBoard, ChannelType,
                                                         out DAResolution, out Range, out LowChan, out DefaultTrig);

            if (NumAOChans == 0)
            {
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " does not have analog input channels.";
                cmdSendData.Enabled = false;
            }
            else
            {
                if (NumAOChans > 4)
                {
                    NumAOChans = 4;
                }
                NumPoints = NumAOChans;
                MemHandle = MccDaq.MccService.WinBufAllocEx(NumPoints);
                if (MemHandle == IntPtr.Zero)
                {
                    lblInstruction.Text = "Failure creating memory buffer.";
                    cmdSendData.Enabled = false;
                    return;
                }
                DAData = (new ushort[NumPoints]);
                int    ValueStep, FSCount;
                ushort StepCount, i;

                FSCount   = (int)Math.Pow(2, DAResolution);
                ValueStep = FSCount / (NumAOChans + 1);
                for (i = 0; i < NumPoints; i++)
                {
                    StepCount = (ushort)(ValueStep * (i + 1));
                    DAData[i] = StepCount;
                }
                FirstPoint = 0;
                ULStat     = MccDaq.MccService.WinArrayToBuf
                                 (DAData, MemHandle, FirstPoint, NumPoints);
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString("0") +
                                      " generating analog output on up to " + NumAOChans.ToString("0")
                                      + " channels using cbAOutScan() " +
                                      " at a Range of " + Range.ToString() + ".";
                HighChan = LowChan + NumAOChans - 1;
            }
        }
Exemplo n.º 6
0
        private void frmDataDisplay_Load(object sender, EventArgs e)
        {
            MccDaq.TriggerType DefaultTrig;

            InitUL();

            // determine the number of analog channels and their capabilities
            int ChannelType = clsAnalogIO.ANALOGINPUT;

            NumAIChans = AIOProps.FindAnalogChansOfType(DaqBoard, ChannelType,
                                                        out ADResolution, out Range, out LowChan, out DefaultTrig);

            if (NumAIChans == 0)
            {
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " does not have analog input channels.";
                cmdStartConvert.Enabled = false;
                txtHighChan.Enabled     = false;
            }
            else if (ADResolution > 12)
            {
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " resolution is greater than 12-bits. This sample applies " +
                                      "only to 12-bit devices that contain composite data.";
                cmdStartConvert.Enabled = false;
                txtHighChan.Enabled     = false;
            }
            else
            {
                // set aside memory to hold 16-bit data
                ADData    = new ushort[NumPoints];
                ConvData  = new ushort[NumPoints];
                MemHandle = MccDaq.MccService.WinBufAllocEx(NumPoints);
                if (MemHandle == IntPtr.Zero)
                {
                    cmdStartConvert.Enabled = false;
                    NumAIChans = 0;
                }
                if (NumAIChans > 5)
                {
                    NumAIChans = 5;
                }
                MaxChan             = LowChan + NumAIChans - 1;
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " collecting analog data on up to " + NumAIChans.ToString() +
                                      " channels using AInScan with Range set to " + Range.ToString() +
                                      ". For devices that store composite data, this sample separates " +
                                      "channel tags from data manually. Most new designs do not support this.";
            }
        }
Exemplo n.º 7
0
        private void frmAnalogTrig_Load(object sender, EventArgs e)
        {
            MccDaq.TriggerType DefaultTrig;

            InitUL();

            // determine the number of analog channels and their capabilities
            int ChannelType = clsAnalogIO.ANALOGINPUT;

            NumAIChans = AIOProps.FindAnalogChansOfType(DaqBoard, ChannelType,
                                                        out ADResolution, out Range, out LowChan, out DefaultTrig);

            if (NumAIChans == 0)
            {
                lblWarn.Text = "Board " + DaqBoard.BoardNum.ToString() +
                               " does not have analog input channels.";
            }
            else if (ADResolution > 16)
            {
                lblWarn.Text = "Board " + DaqBoard.BoardNum.ToString() +
                               " resolution is greater than 16-bit. The ATrig function " +
                               "does not support high resolution devices.";
            }
            else
            {
                lblWarn.Text = "Board " + DaqBoard.BoardNum.ToString() +
                               " collecting analog data meeting trigger criterea " +
                               " with input Range set to " + Range.ToString() + ".";
                HighChan            = LowChan + NumAIChans - 1;
                lblTriggerChan.Text = "Enter a channel (" +
                                      LowChan.ToString() + " - " + HighChan.ToString() + "):";
                UpdateTrigCriterea();
                cmdStartConvert.Enabled     = true;
                this.txtShowChannel.Enabled = true;
                this.txtShowTrigSet.Enabled = true;
                this.chkNegTrigger.Enabled  = true;
                this.chkPosTrigger.Enabled  = true;
            }
        }
Exemplo n.º 8
0
        private void frmDataDisplay_Load(object eventSender, System.EventArgs eventArgs)
        {
            int LowChan;

            MccDaq.TriggerType DefaultTrig;

            InitUL();

            // determine the number of analog channels and their capabilities
            int ChannelType = clsAnalogIO.ANALOGINPUT;

            NumAIChans = AIOProps.FindAnalogChansOfType(DaqBoard, ChannelType,
                                                        out ADResolution, out Range, out LowChan, out DefaultTrig);

            if (NumAIChans == 0)
            {
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " does not have analog input channels.";
                cmdStartConvert.Enabled = false;
                txtNumChan.Enabled      = false;
            }
            else
            {
                string CurFunc = "MccBoard.AIn";
                if (ADResolution > 16)
                {
                    CurFunc = "MccBoard.AIn32";
                }
                lblDemoFunction.Text = "Demonstration of " + CurFunc;
                lblInstruction.Text  = "Board " + DaqBoard.BoardNum.ToString() +
                                       " collecting analog data using " + CurFunc +
                                       " and Range of " + Range.ToString() + ".";
                HighChan = LowChan + NumAIChans - 1;
                this.lblChanPrompt.Text = "Enter a channel ("
                                          + LowChan.ToString() + " - " + HighChan.ToString() + "):";
            }
        }
Exemplo n.º 9
0
        private void frmStatusDisplay_Load(System.Object eventSender, System.EventArgs eventArgs)
        {
            int NumCntrs, NumPorts, CounterNum;
            int FirstBit;
            int ProgAbility = 0;
            int NumBits     = 0;

            MccDaq.DigitalPortType      PortNum = DigitalPortType.AuxPort;
            MccDaq.DigitalPortDirection Direction;
            MccDaq.ErrorInfo            ULStat;
            MccDaq.TriggerType          DefaultTrig;

            InitUL();

            NumCntrs = 0;
            NumPorts = 0;
            // determine the number of analog, digital, and counter channels and their capabilities
            int ChannelType = clsAnalogIO.ANALOGINPUT;

            NumAIChans = AIOProps.FindAnalogChansOfType(DaqBoard, ChannelType,
                                                        out ADResolution, out Range, out LowChan, out DefaultTrig);
            ChannelType = DigitalIO.clsDigitalIO.PORTIN;
            if (!clsErrorDefs.GeneralError)
            {
                NumPorts = DioProps.FindPortsOfType(DaqBoard, ChannelType, out ProgAbility,
                                                    out PortNum, out NumBits, out FirstBit);
            }
            ChannelType = clsCounters.CTRSCAN;
            if (!clsErrorDefs.GeneralError)
            {
                NumCntrs = CtrProps.FindCountersOfType(DaqBoard, ChannelType, out CounterNum);
            }

            if (NumCntrs == 0)
            {
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " has no counter devices.";
                cmdStartBgnd.Enabled = false;
            }
            else if (NumAIChans == 0)
            {
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " does not have analog input channels.";
                cmdStartBgnd.Enabled = false;
            }
            else if (NumPorts == 0)
            {
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " has no digital devices.";
                cmdStartBgnd.Enabled = false;
            }
            else
            {
                cmdStartBgnd.Enabled = true;
                ADData        = new ushort[NumElements];
                ChanArray     = new short[ChanCount];
                ChanTypeArray = new MccDaq.ChannelType[ChanCount];
                GainArray     = new MccDaq.Range[ChanCount];
                MemHandle     = MccDaq.MccService.WinBufAllocEx(NumElements);
                if (MemHandle == IntPtr.Zero)
                {
                    this.cmdStartBgnd.Enabled = false;
                    NumAIChans = 0;
                }
                //load the arrays with values
                ChanArray[0]     = 0;
                ChanTypeArray[0] = MccDaq.ChannelType.Analog;
                GainArray[0]     = Range;

                ChanArray[1]     = System.Convert.ToInt16(PortNum);
                ChanTypeArray[1] = MccDaq.ChannelType.Digital8;
                if (NumBits == 16)
                {
                    ChanTypeArray[1] = MccDaq.ChannelType.Digital16;
                }
                GainArray[1] = MccDaq.Range.NotUsed;

                ChanArray[2]     = 0;
                ChanTypeArray[2] = MccDaq.ChannelType.Ctr32Low;
                GainArray[2]     = MccDaq.Range.NotUsed;

                ChanArray[3]     = 0;
                ChanTypeArray[3] = MccDaq.ChannelType.Ctr32High;
                GainArray[3]     = MccDaq.Range.NotUsed;

                if (ProgAbility == -1)
                {
                    //configure programmable port for digital input
                    Direction = MccDaq.DigitalPortDirection.DigitalIn;
                    ULStat    = DaqBoard.DConfigPort(PortNum, Direction);
                }

                ULStat = DaqBoard.CConfigScan(0, MccDaq.CounterMode.Bit16,
                                              MccDaq.CounterDebounceTime.DebounceNone,
                                              MccDaq.CounterDebounceMode.TriggerAfterStable,
                                              MccDaq.CounterEdgeDetection.FallingEdge,
                                              MccDaq.CounterTickSize.Tick20833pt3ns, 0);
                lblInstruction.Text = "Board " + DaqBoard.BoardNum.ToString() +
                                      " collecting analog, digital, and counter data " +
                                      " using DaqInScan with Range set to " + Range.ToString() + ".";
            }
        }
Exemplo n.º 10
0
        private void cmdStartAcq_Click(object eventSender, System.EventArgs eventArgs)         /* Handles cmdStartAcq.Click */
        {
            cmdStartAcq.Enabled    = false;
            cmdStartAcq.Visible    = false;
            cmdStopConvert.Enabled = true;
            cmdStopConvert.Visible = true;

            //  Parameters:
            //    LowChan    :first A/D channel of the scan
            //    HighChan   :last A/D channel of the scan
            //    Count      :the total number of A/D samples to collect
            //    Rate       :per channel sampling rate ((samples per second) per channel)
            //    Range      :the gain for the board
            //    FileName   :the filename for the collected data values
            //    Options    :data collection options
            int    Count    = NumPoints;
            string FileName = txtFileName.Text;             //  a full path may be required here
            int    Rate     = 50000;
            int    LowChan  = 0;
            int    HighChan = 1;

            MccDaq.ScanOptions Options = MccDaq.ScanOptions.Default;
            MccDaq.Range       Range   = MccDaq.Range.Bip5Volts;     // set the range

            string DataCount = NumPoints.ToString("0");

            lblAcqStat.Text     = "Collecting " + DataCount + " data points";
            lblShowRate.Text    = Rate.ToString("0");
            lblShowLoChan.Text  = LowChan.ToString("0");
            lblShowHiChan.Text  = HighChan.ToString("0");
            lblShowOptions.Text = Options.ToString();
            lblShowGain.Text    = Range.ToString();
            lblShowFile.Text    = FileName;
            lblShowCount.Text   = Count.ToString("0");
            lblShowPreTrig.Text = "Not Applicable";
            Application.DoEvents();

            //  Collect the values with Collect the values by calling MccDaq.MccBoard.FileAInScan()

            MccDaq.ErrorInfo ULStat = DaqBoard.FileAInScan(LowChan, HighChan, Count, ref Rate, Range, FileName, Options);

            if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.BadFileName)
            {
                MessageBox.Show("Enter the name of the file to create in text box.", "Bad File Name", 0);
                cmdStopConvert.Enabled = false;
                cmdStopConvert.Visible = false;
                cmdStartAcq.Enabled    = true;
                cmdStartAcq.Visible    = true;
                txtFileName.Focus();
                return;
            }


            //  show how many data points were collected
            short FileLowChan;
            short FileHighChan;
            int   TotalCount;
            int   PretrigCount;

            ULStat = MccDaq.MccService.FileGetInfo(FileName, out FileLowChan, out FileHighChan, out PretrigCount, out TotalCount, out Rate, out Range);



            lblReadRate.Text    = Rate.ToString("0");
            lblReadLoChan.Text  = FileLowChan.ToString("0");
            lblReadHiChan.Text  = FileHighChan.ToString("0");
            lblReadOptions.Text = Options.ToString();
            lblReadGain.Text    = Range.ToString();
            lblReadFile.Text    = FileName;

            lblReadTotal.Text   = TotalCount.ToString("0");
            lblReadPreTrig.Text = PretrigCount.ToString("0");
        }