Example #1
0
        public void RoundTripStreamITChannelInfo()
        {
            foreach (HekaDAQController daq in HekaDAQController.AvailableControllers())
            {
                daq.InitHardware();
                try
                {
                    daq.ExceptionalStop += (c, arg) =>
                    {
                        throw arg.Exception;
                    };

                    foreach (HekaDAQStream stream in daq.Streams.Cast <HekaDAQStream>())
                    {
                        daq.SampleRate = new Measurement(stream.ChannelNumber, 1, "Hz");
                        ITCMM.ITCChannelInfo info = stream.ChannelInfo;

                        Assert.AreEqual(stream.ChannelNumber, info.ChannelNumber);
                        Assert.AreEqual((uint)stream.ChannelType, info.ChannelType);

                        //NO_SCALE is seconds scale (Hz)
                        Assert.AreEqual(ITCMM.USE_FREQUENCY & ITCMM.NO_SCALE & ITCMM.ADJUST_RATE, info.SamplingIntervalFlag);
                        Assert.That(info.SamplingRate, Is.EqualTo(stream.SampleRate.QuantityInBaseUnit));
                        Assert.AreEqual(IntPtr.Zero, info.FIFOPointer);
                        Assert.AreEqual(0, info.Gain);
                    }
                }
                finally
                {
                    daq.CloseHardware();
                }
            }
        }
Example #2
0
        public void ChannelInfoShouldGiveCompleteITCChannelInfo(
            [Values((ushort)0, (ushort)1, (ushort)8)]
            ushort channelNumber,
            [Values(StreamType.ANALOG_OUT, StreamType.DIGITAL_OUT, StreamType.AUX_OUT)]
            StreamType streamType
            )
        {
            var          controller = new HekaDAQController();
            const string name       = "UNUSED_NAME";
            var          s          = new HekaDAQOutputStream(name,
                                                              streamType,
                                                              channelNumber,
                                                              controller);

            const decimal sampleRate = 9000;
            var           srate      = new Measurement(sampleRate, "Hz");

            controller.SampleRate = srate;

            ITCMM.ITCChannelInfo info = s.ChannelInfo;

            Assert.AreEqual(channelNumber, info.ChannelNumber);
            Assert.AreEqual((int)streamType, info.ChannelType);
            Assert.AreEqual(s.SampleRate.QuantityInBaseUnit, info.SamplingRate);
            Assert.AreEqual(ITCMM.USE_FREQUENCY, info.SamplingIntervalFlag);
            Assert.AreEqual(0, info.Gain);
            Assert.AreEqual(IntPtr.Zero, info.FIFOPointer);
        }
        public ITCMM.ITCChannelInfo ChannelInfo(StreamType channelType, ushort channelNumber)
        {
            ITCMM.ITCChannelInfo[] info = new ITCMM.ITCChannelInfo[1];
            info[0] = new ITCMM.ITCChannelInfo()
            {
                ChannelNumber = channelNumber, ChannelType = (uint)channelType
            };

            uint err = ItcmmCall(() => ITCMM.ITC_GetChannels(DevicePtr, 1, info));

            if (err != ITCMM.ACQ_SUCCESS)
            {
                throw new HekaDAQException("Unable to retrieve channel info struct.", err);
            }

            return(info[0]);
        }
Example #4
0
        public void SetsChannelInfo()
        {
            foreach (HekaDAQController daq in HekaDAQController.AvailableControllers())
            {
                const decimal srate = 10000;

                daq.InitHardware();
                Assert.True(daq.HardwareReady);
                Assert.False(daq.HardwareRunning);

                try
                {
                    foreach (IDAQOutputStream s in daq.OutputStreams)
                    {
                        daq.SampleRate = new Measurement(srate, "Hz");
                        TestDevice externalDevice = new TestDevice("OUT-DEVICE", null);

                        s.Device = externalDevice;
                    }

                    daq.ConfigureChannels();

                    foreach (HekaDAQStream s in daq.OutputStreams.Cast <HekaDAQStream>())
                    {
                        ITCMM.ITCChannelInfo actual = daq.ChannelInfo(s.ChannelType, s.ChannelNumber);

                        ITCMM.ITCChannelInfo expected = s.ChannelInfo;

                        Assert.AreEqual(expected.ChannelNumber, actual.ChannelNumber);
                        Assert.AreEqual(expected.ChannelType, actual.ChannelType);
                        Assert.AreEqual(expected.SamplingIntervalFlag, actual.SamplingIntervalFlag);
                        Assert.AreEqual(expected.SamplingRate, actual.SamplingRate);
                        // Gain set by hardware.
                    }
                }
                finally
                {
                    daq.CloseHardware();
                }
            }
        }
        public void ReadAvailableSamples()
        {
            HekkaDevice device = HekkaDevice.Zero;

            uint err = ITCMM.ITC_OpenDevice(ITCMM.USB18_ID, 0, ITCMM.SMART_MODE, out device);

            if (err != ITCMM.ACQ_SUCCESS)
            {
                Assert.Fail(ErrorDescription.ErrorString(err));
            }

            try
            {
                //ITCMM.HWFunction hwf = new ITCMM.HWFunction();

                err = ITCMM.ITC_InitDevice(device, IntPtr.Zero); // ref hwf);

                ITCMM.ITCPublicConfig config = new ITCMM.ITCPublicConfig();
                config.OutputEnable = 1;

                err = ITCMM.ITC_ConfigDevice(device, ref config);
                if (err != ITCMM.ACQ_SUCCESS)
                {
                    Assert.Fail(ErrorDescription.ErrorString(err));
                }


                Assert.NotNull(device);

                ITCMM.ITCChannelInfo channelInfo = new ITCMM.ITCChannelInfo();
                channelInfo.ChannelType   = ITCMM.H2D;
                channelInfo.ChannelNumber = 0;
                channelInfo.SamplingRate  = 1000.0;
                Assert.AreEqual(System.IntPtr.Zero, channelInfo.FIFOPointer);

                Assert.AreEqual(ITCMM.ACQ_SUCCESS,
                                ITCMM.ITC_SetChannels(device, 1, new ITCMM.ITCChannelInfo[] { channelInfo })
                                );

                Assert.AreEqual(ITCMM.ACQ_SUCCESS,
                                (int)ITCMM.ITC_UpdateChannels(device)
                                );

                ITCMM.ITCChannelDataEx info = new ITCMM.ITCChannelDataEx();

                info.ChannelType   = ITCMM.H2D;
                info.ChannelNumber = 0;

                ITCMM.ITCChannelDataEx[] arr = new ITCMM.ITCChannelDataEx[] { info };
                err = ITCMM.ITC_GetDataAvailable(device, 1, arr);
                if (err != ITCMM.ACQ_SUCCESS)
                {
                    Assert.Fail(ErrorDescription.ErrorString(err));
                }

                info = arr[0];

                Assert.That(info.Value, Is.GreaterThanOrEqualTo(0));
            }
            finally
            {
                err = ITCMM.ITC_CloseDevice(device);
                Assert.AreEqual(ITCMM.ACQ_SUCCESS,
                                err,
                                ErrorDescription.ErrorString(err)
                                );
            }
        }
        public void RoundTripChannelConfig()
        {
            HekkaDevice device = HekkaDevice.Zero;

            uint err = ITCMM.ITC_OpenDevice(ITCMM.USB18_ID, 0, ITCMM.SMART_MODE, out device);

            if (err != ITCMM.ACQ_SUCCESS)
            {
                Assert.Fail(ErrorDescription.ErrorString(err));
            }

            try
            {
                //ITCMM.HWFunction hwf = new ITCMM.HWFunction();

                err = ITCMM.ITC_InitDevice(device, IntPtr.Zero); //ref hwf);

                ITCMM.ITCPublicConfig config = new ITCMM.ITCPublicConfig();
                config.OutputEnable = 1;

                err = ITCMM.ITC_ConfigDevice(device, ref config);
                if (err != ITCMM.ACQ_SUCCESS)
                {
                    Assert.Fail(ErrorDescription.ErrorString(err));
                }


                Assert.NotNull(device);



                err = ITCMM.ITC_ResetChannels(device);
                if (err != ITCMM.ACQ_SUCCESS)
                {
                    Assert.Fail(ErrorDescription.ErrorString(err));
                }


                ITCMM.ITCChannelInfo[] info = new ITCMM.ITCChannelInfo[2];

                info[0].ChannelNumber = 0;
                info[0].ChannelType   = ITCMM.OUTPUT_GROUP;
                info[1].ChannelNumber = 0;
                info[1].ChannelType   = ITCMM.INPUT_GROUP;

                const double srate = 8000;
                info[0].SamplingRate = srate;
                info[1].SamplingRate = srate;


                err = ITCMM.ITC_SetChannels(device, 2, info);
                if (err != ITCMM.ACQ_SUCCESS)
                {
                    Assert.Fail(ErrorDescription.ErrorString(err));
                }

                err = ITCMM.ITC_UpdateChannels(device);
                if (err != ITCMM.ACQ_SUCCESS)
                {
                    Assert.Fail(ErrorDescription.ErrorString(err));
                }


                ITCMM.ITCChannelInfo[] actual = new ITCMM.ITCChannelInfo[2];
                actual[0].ChannelType   = info[0].ChannelType;
                actual[0].ChannelNumber = info[0].ChannelNumber;
                actual[1].ChannelType   = info[1].ChannelType;
                actual[1].ChannelNumber = info[1].ChannelNumber;


                err = ITCMM.ITC_GetChannels(device, 2, actual);
                if (err != ITCMM.ACQ_SUCCESS)
                {
                    Assert.Fail(ErrorDescription.ErrorString(err));
                }


                Assert.AreEqual(info[0].SamplingRate, actual[0].SamplingRate);
                Assert.AreEqual(info[1].SamplingRate, actual[1].SamplingRate);
            }
            finally
            {
                err = ITCMM.ITC_CloseDevice(device);
                Assert.AreEqual(ITCMM.ACQ_SUCCESS,
                                err,
                                ErrorDescription.ErrorString(err)
                                );
            }
        }