Beispiel #1
0
        public void SelectRange(Int32 ComboBoxIndex)
        {
            switch (ComboBoxIndex)
            {
            case 0:
                Range = MccDaq.Range.Bip10Volts;
                analogMeter1.Minimum = -10;
                analogMeter1.Maximum = 10;
                break;

            case 1:
                Range = MccDaq.Range.Bip5Volts;
                analogMeter1.Minimum = -5;
                analogMeter1.Maximum = 5;
                break;

            case 2:
                Range = MccDaq.Range.Bip2Volts;
                analogMeter1.Minimum = -5;
                analogMeter1.Maximum = 5;
                break;

            case 3:
                Range = MccDaq.Range.Bip1Volts;
                analogMeter1.Minimum = -5;
                analogMeter1.Maximum = 5;
                break;
            }
        }
        private void tmrConvert_Tick(object eventSender, System.EventArgs eventArgs)         /* Handles tmrConvert.Tick */
        {
            tmrConvert.Stop();

            //  Collect the values by calling MccDaq.MccBoard.AInScan function
            //  Parameters:
            //    LowChan    :the first channel of the scan
            //    HighChan   :the last channel of the scan
            //    Count      :the total number of A/D samples to collect
            //    Rate       :sample rate
            //    Range      :the range for the board
            //    MemHandle  :Handle for Windows buffer to store data in
            //    Options    :data collection options
            int LowChan = 0;                        //  first channel to acquire

            HighChan = int.Parse(txtHighChan.Text); //  last channel to acquire
            if (HighChan > 7)
            {
                HighChan = 7;
            }
            txtHighChan.Text = HighChan.ToString();

            int Count = NumPoints;                               //  total number of data points to collect
            int Rate  = 100;                                     //  sampling rate is ignored

            MccDaq.Range       Range   = MccDaq.Range.Bip5Volts; // set the range
            MccDaq.ScanOptions Options = MccDaq.ScanOptions.ConvertData
                                         | MccDaq.ScanOptions.ExtClock;
            MccDaq.ErrorInfo ULStat = DaqBoard.AInScan(LowChan, HighChan, Count, ref Rate, Range, MemHandle, Options);


            //  Transfer the data from the memory buffer set up by Windows to an array

            if (HighResAD)
            {
                ULStat = MccDaq.MccService.WinBufToArray32(MemHandle, ADData32, FirstPoint, Count);

                for (int i = 0; i <= HighChan; ++i)
                {
                    lblADData[i].Text = ADData32[i].ToString("0");
                }
            }
            else
            {
                ULStat = MccDaq.MccService.WinBufToArray(MemHandle, ADData, FirstPoint, Count);

                for (int i = 0; i <= HighChan; ++i)
                {
                    lblADData[i].Text = ADData[i].ToString("0");
                }
            }

            for (int j = HighChan + 1; j <= 7; ++j)
            {
                lblADData[j].Text = ("");
            }

            tmrConvert.Start();
        }
Beispiel #3
0
        private ushort GetTrigCounts(MccDaq.Range range, float EngUnits)
        {
            float fCounts;
            int   iFSCounts;

            MccDaq.ErrorInfo ULStat;
            int   FSCounts;
            float FSEngUnits;


            // check if range is bipolar or unipolar
            FSCounts   = 0;
            FSEngUnits = 0.0F;
            ULStat     = DaqBoard.ToEngUnits(range, System.Convert.ToUInt16(FSCounts), out FSEngUnits);
            if (FSEngUnits < 0)
            {
                // range is bipolar
                // check bitness
                FSCounts = 0XFFF;                 // max 12-bit value
                ULStat   = DaqBoard.ToEngUnits(range, System.Convert.ToUInt16(FSCounts), out FSEngUnits);
                if (FSEngUnits < 0)
                {
                    // must be 16-bit A/D
                    FSCounts  = 65535;
                    iFSCounts = 0XFFFF;
                    ULStat    = DaqBoard.ToEngUnits(range, System.Convert.ToUInt16(iFSCounts), out FSEngUnits);
                }

                fCounts = (float)((FSCounts / 2.0F) * (1.0F + EngUnits / FSEngUnits));
            }
            else
            {
                // range is unipolar
                // check bitness
                FSCounts = 0XFFF;                 // max 12-bit value
                ULStat   = DaqBoard.ToEngUnits(range, System.Convert.ToUInt16(FSCounts), out FSEngUnits);
                ULStat   = DaqBoard.ToEngUnits(range, System.Convert.ToUInt16(FSCounts + 0X1000), out fCounts);
                if (fCounts >= 2.0F * FSEngUnits)
                {
                    // must be 16-bit A/D
                    FSCounts  = 65535;
                    iFSCounts = 0XFFFF;
                    ULStat    = DaqBoard.ToEngUnits(range, System.Convert.ToUInt16(iFSCounts), out FSEngUnits);
                }

                fCounts = FSCounts * EngUnits / FSEngUnits;
            }

            if (fCounts > FSCounts)
            {
                fCounts = FSCounts;
            }
            if (fCounts < 0)
            {
                fCounts = 0;
            }

            return(Convert.ToUInt16(fCounts));
        }
Beispiel #4
0
        public float GetRangeVolts(MccDaq.Range Range)
        {
            string RangeString;
            float  RangeVolts;

            GetRangeInfo(Range, out RangeString, out RangeVolts);
            return(RangeVolts);
        }
Beispiel #5
0
        private bool TestOutputRanges(out MccDaq.Range DefaultRange)
        {
            short dataValue = 0;

            MccDaq.ErrorInfo ULStat;
            MccDaq.Range     TestRange;
            bool             RangeFound = false;
            int    configVal;
            string ConnectionConflict;

            ConnectionConflict = "This network device is in use by another process or user." +
                                 System.Environment.NewLine + System.Environment.NewLine +
                                 "Check for other users on the network and close any applications " +
                                 System.Environment.NewLine +
                                 "(such as Instacal) that may be accessing the network device.";

            DefaultRange = MccDaq.Range.NotUsed;
            TestRange    = (MccDaq.Range)(-5);
            ULStat       = TestBoard.AOut(0, TestRange, dataValue);
            if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors)
            {
                ULStat = TestBoard.GetConfig(2, 0, 114, out configVal);
                if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors)
                {
                    DefaultRange = (MccDaq.Range)configVal;
                    RangeFound   = true;
                }
            }
            else
            {
                TestRange = MccDaq.Range.NotUsed;
                foreach (int i in Enum.GetValues(TestRange.GetType()))
                {
                    TestRange = (MccDaq.Range)i;
                    ULStat    = TestBoard.AOut(0, TestRange, dataValue);
                    if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors)
                    {
                        if (DefaultRange == MccDaq.Range.NotUsed)
                        {
                            DefaultRange = TestRange;
                        }
                        RangeFound = true;
                        break;
                    }
                    else
                    {
                        if ((ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NetDevInUseByAnotherProc) ||
                            (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NetDevInUse))
                        {
                            System.Windows.Forms.MessageBox.Show(ConnectionConflict, "Device In Use");
                            break;
                        }
                    }
                }
            }
            return(RangeFound);
        }
Beispiel #6
0
        private void tmrConvert_Tick(object eventSender, System.EventArgs eventArgs)         /* Handles tmrConvert.Tick */
        {
            tmrConvert.Stop();

            //  Collect the values with MccDaq.MccBoard.AInScan()
            //   Parameters:
            //     LowChan    :the first channel of the scan
            //     HighChan   :the last channel of the scan
            //     Count      :the total number of A/D samples to collect
            //     Rate       :sample rate
            //     Range      :the range for the board
            //     MemHandle  :Handle for Windows buffer to store data in
            //     Options    :data collection options (determined by
            //                  Set Mode option buttons in this program)
            int LowChan = 0;                                    //  first channel to acquire

            HighChan = int.Parse(txtHighChan.Text);             //  last channel to acquire
            if (HighChan > 7)
            {
                HighChan = 7;
            }
            txtHighChan.Text = HighChan.ToString();

            int Count = NumPoints;                            //  total number of data points to collect
            int Rate  = 290;                                  //  per channel sampling rate ((samples per second) per channel)

            MccDaq.Range     Range  = MccDaq.Range.Bip5Volts; // set the range
            MccDaq.ErrorInfo ULStat = DaqBoard.AInScan(LowChan, HighChan, Count, ref Rate, Range, MemHandle, Options);

            if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.FreeRunning)
            {                   // Turn off library error handling for subsequent calls
                ULStat = MccDaq.MccService.ErrHandling(MccDaq.ErrorReporting.DontPrint, MccDaq.ErrorHandling.StopAll);
            }

            //  Transfer the data from the memory buffer set up by Windows to an array
            if (HighResAD)
            {
                ULStat = MccDaq.MccService.WinBufToArray32(MemHandle, ADData32, FirstPoint, Count);

                for (int i = 0; i <= HighChan; ++i)
                {
                    lblADData[i].Text = ADData32[i].ToString("0");
                }
            }
            else
            {
                ULStat = MccDaq.MccService.WinBufToArray(MemHandle, ADData, FirstPoint, Count);

                for (int i = 0; i <= HighChan; ++i)
                {
                    lblADData[i].Text = ADData[i].ToString("0");
                }
            }

            tmrConvert.Start();
        }
Beispiel #7
0
        private bool TestInputRanges(out MccDaq.Range DefaultRange)
        {
            short dataValue;
            int   dataHRValue, Options, index;

            MccDaq.ErrorInfo ULStat;
            MccDaq.Range     TestRange;
            bool             RangeFound = false;
            string           ConnectionConflict;

            ConnectionConflict = "This network device is in use by another process or user." +
                                 System.Environment.NewLine + System.Environment.NewLine +
                                 "Check for other users on the network and close any applications " +
                                 System.Environment.NewLine +
                                 "(such as Instacal) that may be accessing the network device.";

            ValidRanges  = new MccDaq.Range[49];
            DefaultRange = MccDaq.Range.NotUsed;
            TestRange    = MccDaq.Range.NotUsed;
            Options      = 0;
            index        = 0;
            foreach (int i in Enum.GetValues(TestRange.GetType()))
            {
                TestRange = (MccDaq.Range)i;
                if (ADRes > 16)
                {
                    ULStat = TestBoard.AIn32(0, TestRange, out dataHRValue, Options);
                }
                else
                {
                    ULStat = TestBoard.AIn(0, TestRange, out dataValue);
                }
                if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors)
                {
                    if (DefaultRange == MccDaq.Range.NotUsed)
                    {
                        DefaultRange = TestRange;
                    }
                    ValidRanges.SetValue(TestRange, index);
                    index      = index + 1;
                    RangeFound = true;
                }
                else
                {
                    if ((ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NetDevInUseByAnotherProc) ||
                        (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NetDevInUse))
                    {
                        System.Windows.Forms.MessageBox.Show(ConnectionConflict, "Device In Use");
                        break;
                    }
                }
            }
            Array.Resize(ref ValidRanges, index);
            return(RangeFound);
        }
Beispiel #8
0
        //constuctor for the dyno
        public Dyno()
        {
            isDynCon = false;

            //Initialize Error Handling
            ULStat = MccDaq.MccService.ErrHandling(MccDaq.ErrorReporting.PrintAll, MccDaq.ErrorHandling.StopAll);

            //Create an object for board 0
            DaqBoard = new MccDaq.MccBoard(0);

            //Set the range
            Range = MccDaq.Range.Bip10Volts;
            //  return scaled data
            Options = MccDaq.ScanOptions.ScaleData;

            // creating and defining the objects for the moving average
            filterLength = 5;
            averager     = new MovingAverage(filterLength);

            XForce         = 0;
            YForce         = 0;
            ZForceDyno     = 0;
            TForce         = 0;
            VAngle         = 0;
            XYForce        = 0;
            XYForceAverage = 0;

            // Try to initialize the dyno control port and catch any errors
            try
            {
                //Set up port for controlling the dyno
                DynoControlPort          = new SerialPort();
                DynoControlPort.PortName = "COM3";
                DynoControlPort.BaudRate = 4800;
                DynoControlPort.Parity   = Parity.None;
                DynoControlPort.StopBits = StopBits.One;
                DynoControlPort.DataBits = 8;
                DynoControlPort.Open();
            }
            catch (System.IO.IOException e)
            {
                //MessageBox.Show("Open device manager in windows and the 'Setup Serial Ports' section of the C# code and check the serial port names and settings are correct\n\n" + e.ToString(), "Serial Port Error");
                //Process.GetCurrentProcess().Kill();
            }
            catch (System.UnauthorizedAccessException e)
            {
                //MessageBox.Show("Something is wrong? maybe try to restart computer?\n\nHere is some error message stuff...\n\n" + e.ToString(), "Serial Port Error");
                //Process.GetCurrentProcess().Kill();
            }
        }
Beispiel #9
0
        public double[] ReadDyno()
        {
            //establish all the varables for the data
            double[] reading = new double[7];

            //sampleing from all 8 channels, DAQ has a max sampling rate of 10,000Hz so for sampleing 8 channels the rate=10,000/8=1,250
            int LowChan = 0, HighChan = 7, Rate = 1250, Count = 8;//JNEW

            //IntPtr MemHandle = IntPtr.Zero;//JNEW //dont think this is needed here
            int NumPoints  = 8;                                                  //  Number of data points to collect //JNEW
            int FirstPoint = 0;                                                  //  set first element in buffer to transfer to array //JNEW

            ushort[] ADData = new ushort[NumPoints];                             //JNEW

            IntPtr MemHandle = MccDaq.MccService.ScaledWinBufAllocEx(NumPoints); //JNEW

            //  return scaled data (dont know exactly what this means)
            Options = MccDaq.ScanOptions.ConvertData | MccDaq.ScanOptions.SingleIo;

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

            ULStat = DaqBoard.AInScan(LowChan, HighChan, Count, ref Rate, Range, MemHandle, Options);
            if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.BadRange)
            {
                Console.WriteLine("Change the Range argument to one supported by this board.");
            }
            //  Transfer the data from the memory buffer set up by Windows to an array
            ULStat = MccDaq.MccService.WinBufToArray(MemHandle, ADData, FirstPoint, Count);

            //calibration variables (probably from kistler)
            //Copy into local variables
            XForce         = 487.33 * Count2Volt(ADData[0]);
            YForce         = 479.85 * Count2Volt(ADData[1]);
            ZForceDyno     = 2032.52 * Count2Volt(ADData[2]);
            TForce         = 18.91 * Count2Volt(ADData[3]);
            VAngle         = Count2Volt(ADData[7]);
            XYForce        = Math.Sqrt(XForce * XForce + YForce * YForce);
            XYForceAverage = averager.calculateAverage(XYForce);

            reading[0] = XForce;
            reading[1] = YForce;
            reading[2] = ZForceDyno;
            reading[3] = TForce;
            reading[4] = VAngle;
            reading[5] = XYForce;
            reading[6] = XYForceAverage;

            return(reading);
        }
Beispiel #10
0
        private ushort GetTrigCounts(MccDaq.Range range, float EngUnits)
        {
            float fCounts;

            MccDaq.ErrorInfo ULStat;
            int   FSCounts;
            float FSEngUnits;
            bool  RangeIsBipolar = false;


            // check if range is bipolar or unipolar
            FSCounts   = 0;
            FSEngUnits = 0.0F;
            ULStat     = DaqBoard.ToEngUnits(range, System.Convert.ToUInt16(FSCounts), out FSEngUnits);
            if (FSEngUnits < 0)
            {
                RangeIsBipolar = true;
            }

            FSCounts = (int)Math.Pow(2, ADResolution) - 1;
            ULStat   = DaqBoard.ToEngUnits(range, System.Convert.ToUInt16(FSCounts), out FSEngUnits);

            if (RangeIsBipolar)
            {
                fCounts = (float)((FSCounts / 2.0F) * (1.0F + EngUnits / FSEngUnits));
            }
            else
            {
                fCounts = FSCounts * EngUnits / FSEngUnits;
            }

            if (fCounts > FSCounts)
            {
                fCounts = FSCounts;
            }
            if (fCounts < 0)
            {
                fCounts = 0;
            }

            return(Convert.ToUInt16(fCounts));
        }
        private bool TestOutputRanges(out MccDaq.Range DefaultRange)
        {
            short dataValue = 0;

            MccDaq.ErrorInfo ULStat;
            MccDaq.Range     TestRange;
            bool             RangeFound = false;
            int configVal;

            DefaultRange = MccDaq.Range.NotUsed;
            TestRange    = (MccDaq.Range)(-5);
            ULStat       = TestBoard.AOut(0, TestRange, dataValue);
            if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors)
            {
                ULStat = TestBoard.GetConfig(2, 0, 114, out configVal);
                if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors)
                {
                    DefaultRange = (MccDaq.Range)configVal;
                    RangeFound   = true;
                }
            }
            else
            {
                TestRange = MccDaq.Range.NotUsed;
                foreach (int i in Enum.GetValues(TestRange.GetType()))
                {
                    TestRange = (MccDaq.Range)i;
                    ULStat    = TestBoard.AOut(0, TestRange, dataValue);
                    if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors)
                    {
                        if (DefaultRange == MccDaq.Range.NotUsed)
                        {
                            DefaultRange = TestRange;
                        }
                        RangeFound = true;
                        break;
                    }
                }
            }
            return(RangeFound);
        }
        private bool TestInputRanges(out MccDaq.Range DefaultRange)
        {
            short dataValue;
            int   dataHRValue, Options, index;

            MccDaq.ErrorInfo ULStat;
            MccDaq.Range     TestRange;
            bool             RangeFound = false;

            ValidRanges  = new MccDaq.Range[49];
            DefaultRange = MccDaq.Range.NotUsed;
            TestRange    = MccDaq.Range.NotUsed;
            Options      = 0;
            index        = 0;
            foreach (int i in Enum.GetValues(TestRange.GetType()))
            {
                TestRange = (MccDaq.Range)i;
                if (ADRes > 16)
                {
                    ULStat = TestBoard.AIn32(0, TestRange, out dataHRValue, Options);
                }
                else
                {
                    ULStat = TestBoard.AIn(0, TestRange, out dataValue);
                }
                if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors)
                {
                    if (DefaultRange == MccDaq.Range.NotUsed)
                    {
                        DefaultRange = TestRange;
                    }
                    ValidRanges.SetValue(TestRange, index);
                    index      = index + 1;
                    RangeFound = true;
                }
            }
            Array.Resize(ref ValidRanges, index);
            return(RangeFound);
        }
Beispiel #13
0
        private void cmdSendData_Click(object eventSender, System.EventArgs eventArgs)         /* Handles cmdSendData.Click */
        {
            //  Parameters:
            //    LowChan    :the lower channel of the scan
            //    HighChan   :the upper channel of the scan
            //    Count      :the number of D/A values to send
            //    Rate       :per channel sampling rate ((samples per second) per channel)
            //    DAData     :array of values to send to the scanned channels
            //    Options    :data send options
            FirstPoint = 0;
            int LowChan  = 0;                                        // First analog output channel
            int HighChan = 1;                                        // Last analog output channel
            int Rate     = 100;                                      // Rate of data update (ignored if board does not support timed analog output)

            MccDaq.Range       Gain    = MccDaq.Range.Bip5Volts;     // Ignored if gain is not programmable
            MccDaq.ScanOptions Options = MccDaq.ScanOptions.Default; // foreground mode scan
            MccDaq.ErrorInfo   ULStat  = DaqBoard.AOutScan(LowChan, HighChan, Count, ref Rate, Gain, MemHandle, Options);

            for (int i = 0; i <= NumPoints - 1; ++i)
            {
                lblAOutData[i].Text = DAData[i].ToString("0");
            }
        }
Beispiel #14
0
        public void SelectRange(Int32 ComboBoxIndex)
        {
            switch (ComboBoxIndex)
            {
            case 0:
                Range = MccDaq.Range.Bip20Volts;
                break;

            case 1:
                Range = MccDaq.Range.Bip10Volts;
                break;

            case 2:
                Range = MccDaq.Range.Bip5Volts;
                break;

            case 3:
                Range = MccDaq.Range.Bip4Volts;
                break;

            case 4:
                Range = MccDaq.Range.Bip2Pt5Volts;
                break;

            case 5:
                Range = MccDaq.Range.Bip2Volts;
                break;

            case 6:
                Range = MccDaq.Range.Bip1Pt25Volts;
                break;

            case 7:
                Range = MccDaq.Range.Bip1Volts;
                break;
            }
        }
Beispiel #15
0
        private void cmdStart_Click(object eventSender, System.EventArgs eventArgs)         /* Handles cmdStart.Click */
        {
            cmdStart.Enabled = false;

            //  Select the trigger source using Mccdaq.MccBoard.SetTrigger()
            //  Parameters:
            //    TrigType       :the type of triggering based on external trigger source
            //    LowThreshold   :Low threshold when the trigger input is analog
            //    HighThreshold  :High threshold when the trigger input is analog
            float highVal = 1.0F;

            MccDaq.Range Range         = MccDaq.Range.Bip10Volts;     // analog trigger range
            ushort       HighThreshold = 0;

            MccDaq.ErrorInfo ULStat = DaqBoard.FromEngUnits(Range, highVal, out HighThreshold);

            float  lowVal       = 0.1F;
            ushort LowThreshold = 0;

            ULStat = DaqBoard.FromEngUnits(Range, lowVal, out LowThreshold);

            MccDaq.TriggerType TrigType = MccDaq.TriggerType.TrigAbove;
            ULStat = DaqBoard.SetTrigger(TrigType, LowThreshold, HighThreshold);

            if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors)
            {
                //  Collect the values with MccDaq.MccBoard.AInScan()
                //  Parameters:
                //    LowChan    :the first channel of the scan
                //    HighChan   :the last channel of the scan
                //    Count      :the total number of A/D samples to collect
                //    Rate       :sample rate
                //    Range      :the range for the board
                //    MemHandle  :Handle for Windows buffer to store data in
                //    Options    :data collection options
                int LowChan = 0;                        //  first channel to acquire
                HighChan = int.Parse(txtHighChan.Text); //  last channel to acquire
                if (HighChan > 7)
                {
                    HighChan = 7;
                }
                txtHighChan.Text = HighChan.ToString();

                int Count = NumPoints;                                      //  total number of data points to collect
                int Rate  = 390;                                            //  per channel sampling rate ((samples per second) per channel)
                Range = MccDaq.Range.Bip5Volts;                             // set the range
                MccDaq.ScanOptions Options = MccDaq.ScanOptions.ConvertData //  return data as 12-bit values
                                             | MccDaq.ScanOptions.ExtTrigger;
                ULStat = DaqBoard.AInScan(LowChan, HighChan, Count, ref Rate, Range, MemHandle, Options);

                if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.BadRange)
                {
                    MessageBox.Show("Change the Range argument to one supported by this board.", "Unsupported Range", 0);
                }


                //  Transfer the data from the memory buffer set up by Windows to an array
                ULStat = MccDaq.MccService.WinBufToArray(MemHandle, out ADData[0], FirstPoint, Count);


                for (int i = 0; i <= HighChan; ++i)
                {
                    lblADData[i].Text = ADData[i].ToString("0");
                }

                for (int j = HighChan + 1; j <= 7; ++j)
                {
                    lblADData[j].Text = "";
                }
            }
            cmdStart.Enabled = true;
        }
Beispiel #16
0
 private void cmbRange_SelectedIndexChanged(object sender, System.EventArgs e)
 {
     RangeSelected = (MccDaq.Range)(cmbRange.SelectedItem);
 }
Beispiel #17
0
 private void cmbRange_SelectedIndexChanged(object sender, System.EventArgs e)
 {
     RangeSelected = (MccDaq.Range)(cmbRange.SelectedItem);
 }
        /// <summary>
        /// Function that check the luminosity
        /// </summary>
        /// <returns></returns>
        public Boolean IsDay()
        {
            float Voltage;   // [] car array
            System.UInt16 DataValue;

            //  Collect the data by calling AIn memeber function of MccBoard object
            //   Parameters:
            //     Chan       :the input channel number
            //     Range      :the Range for the board.
            //     DataValue  :the name for the value collected
            Range = Range.Bip10Volts; // selectionne un range de 10 V

            ULStat = DaqBoard.AIn(4, Range.Bip10Volts, out DataValue);

            // on vérifie si le range est bon
            if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.BadRange)
            {
                MessageBox.Show("Range not upported by the card.",
                    "Unsupported Range", MessageBoxButtons.OK);
                Application.Exit();
            }

            ULStat = DaqBoard.ToEngUnits(Range, DataValue, out Voltage);// converting to voltage
            Program.MainForm.LightConfProgress.Value = Convert.ToInt16(Voltage * 100/5);

            if (Voltage >= 0.5 + 0.2 * Program.MainForm.ScrollSensibility.Value/5)
                return false;
            else
                return true;
        }
Beispiel #19
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");
        }
Beispiel #20
0
        public int FindAnalogChansOfType(MccDaq.MccBoard DaqBoard,
                                         int AnalogType, out int Resolution, out MccDaq.Range DefaultRange,
                                         out int DefaultChan, out MccDaq.TriggerType DefaultTrig)
        {
            int ChansFound, IOType;

            MccDaq.ErrorInfo ULStat;
            bool             CheckPretrig, CheckATrig = false;

            MccDaq.Range TestRange;
            bool         RangeFound;

            // check supported features by trial
            // and error with error handling disabled
            ULStat = MccDaq.MccService.ErrHandling
                         (MccDaq.ErrorReporting.DontPrint, MccDaq.ErrorHandling.DontStop);

            TestBoard    = DaqBoard;
            ATrigRes     = 0;
            DefaultChan  = 0;
            DefaultTrig  = TriggerType.TrigPosEdge;
            DefaultRange = Range.NotUsed;
            Resolution   = 0;
            IOType       = (AnalogType & 3);
            switch (IOType)
            {
            case ANALOGINPUT:
                // Get the number of A/D channels
                ULStat = DaqBoard.BoardConfig.GetNumAdChans(out ChansFound);
                if (!(ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors))
                {
                    clsErrorDefs.DisplayError(ULStat);
                    return(ChansFound);
                }
                if (ChansFound > 0)
                {
                    // Get the resolution of A/D
                    ULStat = DaqBoard.BoardConfig.GetAdResolution(out ADRes);
                    if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors)
                    {
                        Resolution = ADRes;
                    }
                    // check ranges for a valid default
                    RangeFound = TestInputRanges(out TestRange);
                    if (RangeFound)
                    {
                        DefaultRange = TestRange;
                    }
                }
                break;

            default:
                // Get the number of D/A channels
                ULStat = DaqBoard.BoardConfig.GetNumDaChans(out ChansFound);
                if (!(ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors))
                {
                    clsErrorDefs.DisplayError(ULStat);
                    return(ChansFound);
                }
                if (ChansFound > 0)
                {
                    ULStat     = TestBoard.GetConfig(2, 0, 292, out DARes);
                    Resolution = DARes;
                    RangeFound = TestOutputRanges(out TestRange);
                    if (RangeFound)
                    {
                        DefaultRange = TestRange;
                    }
                }
                break;
            }

            CheckATrig = ((AnalogType & ATRIGIN) == ATRIGIN);
            if ((ChansFound > 0) & CheckATrig)
            {
                ULStat = DaqBoard.SetTrigger(MccDaq.TriggerType.TrigAbove, 0, 0);
                if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors)
                {
                    DefaultTrig = MccDaq.TriggerType.TrigAbove;
                    GetTrigResolution();
                }
                else
                {
                    ChansFound = 0;
                }
            }

            CheckPretrig = ((AnalogType & PRETRIGIN) == PRETRIGIN);
            if ((ChansFound > 0) & CheckPretrig)
            {
                // if DaqSetTrigger supported, trigger type is analog
                ULStat = DaqBoard.DaqSetTrigger(MccDaq.TriggerSource.TrigImmediate,
                                                MccDaq.TriggerSensitivity.AboveLevel, 0, MccDaq.ChannelType.Analog,
                                                DefaultRange, 0.0F, 0.1F, MccDaq.TriggerEvent.Start);
                if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors)
                {
                    DefaultTrig = MccDaq.TriggerType.TrigAbove;
                }
                else
                {
                    ULStat = DaqBoard.SetTrigger(MccDaq.TriggerType.TrigPosEdge, 0, 0);
                    if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.NoErrors)
                    {
                        DefaultTrig = MccDaq.TriggerType.TrigPosEdge;
                    }
                    else
                    {
                        ChansFound = 0;
                    }
                }
            }
            ULStat = MccDaq.MccService.ErrHandling
                         (clsErrorDefs.ReportError, clsErrorDefs.HandleError);
            return(ChansFound);
        }
        // *----------------------------------------------------------------*
        // *     Functions to take values                                   *
        // *----------------------------------------------------------------*
        /// <summary>
        /// read the temperature and send it to the model
        /// </summary>
        public void ReadTemp()
        {
            float[] EngUnits;   // [] car array
            System.UInt16 DataValue;

            //  Collect the data by calling AIn memeber function of MccBoard object
            //   Parameters:
            //     Chan       :the input channel number
            //     Range      :the Range for the board.
            //     DataValue  :the name for the value collected
            Range = Range.Bip10Volts; // selectionne un range de 10 V

            // on définit la taille de engunit
            EngUnits = new float[4];

            // taking the values from the card

            for (int i = 0; i <= 3; i++)
            {
                ULStat = DaqBoard.AIn(i, Range, out DataValue);
                // on vérifie si le range est bon
                if (ULStat.Value == MccDaq.ErrorInfo.ErrorCode.BadRange)
                {
                    MessageBox.Show("Range not upported by the card.",
                        "Unsupported Range", MessageBoxButtons.OK);
                    Application.Exit();
                }

                ULStat = DaqBoard.ToEngUnits(Range, DataValue, out EngUnits[i]);// converting to voltage
                float Value = (EngUnits[i] * 100F / 11F);
                Functions.SaveTemperature(i, Value);
            }
        }
Beispiel #22
0
        private void GetRangeInfo(MccDaq.Range Range, out string RangeString, out float RangeVolts)
        {
            switch (Range)
            {
            case MccDaq.Range.NotUsed:
                RangeString = "NOTUSED";
                RangeVolts  = 0;
                break;

            case MccDaq.Range.Bip60Volts:
                RangeString = "BIP60VOLTS";
                RangeVolts  = 120;
                break;

            case MccDaq.Range.Bip30Volts:
                RangeString = "BIP30VOLTS";
                RangeVolts  = 60;
                break;

            case MccDaq.Range.Bip20Volts:
                RangeString = "BIP20VOLTS";
                RangeVolts  = 40;
                break;

            case MccDaq.Range.Bip15Volts:
                RangeString = "BIP15VOLTS";
                RangeVolts  = 30;
                break;

            case Range.Bip10Volts:
                RangeString = "BIP10VOLTS";
                RangeVolts  = 20;
                break;

            case Range.Bip5Volts:
                RangeString = "BIP5VOLTS";
                RangeVolts  = 10;
                break;

            case MccDaq.Range.Bip4Volts:
                RangeString = "BIP4VOLTS";
                RangeVolts  = 8;
                break;

            case Range.Bip2Pt5Volts:
                RangeString = "BIP2PT5VOLTS";
                RangeVolts  = 5;
                break;

            case MccDaq.Range.Bip2Volts:
                RangeString = "BIP2VOLTS";
                RangeVolts  = 4;
                break;

            case Range.Bip1Pt25Volts:
                RangeString = "BIP1PT25VOLTS";
                RangeVolts  = 2.5F;
                break;

            case Range.Bip1Volts:
                RangeString = "BIP1VOLTS";
                RangeVolts  = 2;
                break;

            case Range.BipPt625Volts:
                RangeString = "BIPPT625VOLTS";
                RangeVolts  = 1.25F;
                break;

            case Range.BipPt5Volts:
                RangeString = "BIPPT5VOLTS";
                RangeVolts  = 1;
                break;

            case Range.BipPt1Volts:
                RangeString = "BIPPT1VOLTS";
                RangeVolts  = 0.2F;
                break;

            case Range.BipPt05Volts:
                RangeString = "BIPPT05VOLTS";
                RangeVolts  = 0.1F;
                break;

            case MccDaq.Range.BipPt312Volts:
                RangeString = "BIPPT312VOLTS";
                RangeVolts  = 0.624F;
                break;

            case MccDaq.Range.BipPt25Volts:
                RangeString = "BIPPT25VOLTS";
                RangeVolts  = 0.5F;
                break;

            case MccDaq.Range.BipPt2Volts:
                RangeString = "BIPPT2VOLTS";
                RangeVolts  = 0.4F;
                break;

            case MccDaq.Range.BipPt156Volts:
                RangeString = "BIPPT156VOLTS";
                RangeVolts  = 0.3125F;
                break;

            case MccDaq.Range.BipPt125Volts:
                RangeString = "BIPPT125VOLTS";
                RangeVolts  = 0.25F;
                break;

            case MccDaq.Range.BipPt078Volts:
                RangeString = "BIPPT078VOLTS";
                RangeVolts  = 0.15625F;
                break;

            case Range.BipPt01Volts:
                RangeString = "BIPPT01VOLTS";
                RangeVolts  = 0.02F;
                break;

            case Range.BipPt005Volts:
                RangeString = "BIPPT005VOLTS";
                RangeVolts  = 0.01F;
                break;

            case Range.Bip1Pt67Volts:
                RangeString = "BIP1PT67VOLTS";
                RangeVolts  = 3.34F;
                break;

            case Range.Uni10Volts:
                RangeString = "UNI10VOLTS";
                RangeVolts  = 10;
                break;

            case Range.Uni5Volts:
                RangeString = "UNI5VOLTS";
                RangeVolts  = 5;
                break;

            case MccDaq.Range.Uni4Volts:
                RangeString = "UNI4VOLTS";
                RangeVolts  = 4.096F;
                break;

            case Range.Uni2Pt5Volts:
                RangeString = "UNI2PT5VOLTS";
                RangeVolts  = 2.5F;
                break;

            case Range.Uni2Volts:
                RangeString = "UNI2VOLTS";
                RangeVolts  = 2;
                break;

            case Range.Uni1Pt25Volts:
                RangeString = "UNI1PT25VOLTS";
                RangeVolts  = 1.25F;
                break;

            case Range.Uni1Volts:
                RangeString = "UNI1VOLTS";
                RangeVolts  = 1;
                break;

            case MccDaq.Range.UniPt25Volts:
                RangeString = "UNIPT25VOLTS";
                RangeVolts  = 0.25F;
                break;

            case MccDaq.Range.UniPt2Volts:
                RangeString = "UNIPT2VOLTS";
                RangeVolts  = 0.2F;
                break;

            case Range.UniPt1Volts:
                RangeString = "UNIPT1VOLTS";
                RangeVolts  = 0.1F;
                break;

            case MccDaq.Range.UniPt05Volts:
                RangeString = "UNIPT05VOLTS";
                RangeVolts  = 0.05F;
                break;

            case Range.UniPt01Volts:
                RangeString = "UNIPT01VOLTS";
                RangeVolts  = 0.01F;
                break;

            case Range.UniPt02Volts:
                RangeString = "UNIPT02VOLTS";
                RangeVolts  = 0.02F;
                break;

            case Range.Uni1Pt67Volts:
                RangeString = "UNI1PT67VOLTS";
                RangeVolts  = 1.67F;
                break;

            case Range.Ma4To20:
                RangeString = "MA4TO20";
                RangeVolts  = 16;
                break;

            case Range.Ma2To10:
                RangeString = "MA2to10";
                RangeVolts  = 8;
                break;

            case Range.Ma1To5:
                RangeString = "MA1TO5";
                RangeVolts  = 4;
                break;

            case Range.MaPt5To2Pt5:
                RangeString = "MAPT5TO2PT5";
                RangeVolts  = 2;
                break;

            case MccDaq.Range.Ma0To20:
                RangeString = "MA0TO20";
                RangeVolts  = 20;
                break;

            case MccDaq.Range.BipPt025Amps:
                RangeString = "BIPPT025A";
                RangeVolts  = 0.05F;
                break;

            case MccDaq.Range.BipPt025VoltsPerVolt:
                RangeString = "BIPPT025VPERV";
                RangeVolts  = 0.05F;
                break;

            default:
                RangeString = "NOTUSED";
                RangeVolts  = 0;
                break;
            }
        }