예제 #1
0
        // ReadBlock
        public short[] ReadBlock()
        {
            if (Handle == IntPtr.Zero)
            {
                return(new short[0]);
            }
            int sampleCount = OmApi.OmReaderNextBlock(Handle);

            if (sampleCount <= 0)
            {
                return(null);
            }

            Channels   = OmApi.OmReaderGetValue(Handle, OmApi.OM_READER_VALUE_TYPE.OM_VALUE_AXES);
            SequenceId = (uint)OmApi.OmReaderGetValue(Handle, OmApi.OM_READER_VALUE_TYPE.OM_VALUE_SEQUENCEID); // DWORD @10 offset in block
            AccelOneG  = OmApi.OmReaderGetValue(Handle, OmApi.OM_READER_VALUE_TYPE.OM_VALUE_SCALE_ACCEL);
            GyroRange  = OmApi.OmReaderGetValue(Handle, OmApi.OM_READER_VALUE_TYPE.OM_VALUE_SCALE_GYRO);
            Light      = OmApi.OmReaderGetValue(Handle, OmApi.OM_READER_VALUE_TYPE.OM_VALUE_LIGHT);
            Temp       = OmApi.OmReaderGetValue(Handle, OmApi.OM_READER_VALUE_TYPE.OM_VALUE_TEMPERATURE_MC);
            Batt       = OmApi.OmReaderGetValue(Handle, OmApi.OM_READER_VALUE_TYPE.OM_VALUE_BATTERY_PERCENT);
            BattRaw    = OmApi.OmReaderGetValue(Handle, OmApi.OM_READER_VALUE_TYPE.OM_VALUE_BATTERY_MV);

            int numValues = sampleCount * Channels;

            if (numValues > 360)
            {
                numValues = 360;
            }                                         // packed triaxials
            if (numValues < 0)
            {
                numValues = 0;
            }

            short[] samples = new short[numValues];
            IntPtr  buffer  = OmApi.OmReaderBuffer(Handle);

            System.Runtime.InteropServices.Marshal.Copy(buffer, samples, 0, numValues);

            return(samples);
        }
예제 #2
0
        // ReadBlock
        public short[] ReadBlock()
        {
            if (Handle == IntPtr.Zero)
            {
                return(new short[0]);
            }
            int sampleCount = OmApi.OmReaderNextBlock(Handle);

            if (sampleCount <= 0)
            {
                return(null);
            }
            short[] samples = new short[sampleCount * 3];
            IntPtr  buffer  = OmApi.OmReaderBuffer(Handle);

            System.Runtime.InteropServices.Marshal.Copy(buffer, samples, 0, sampleCount * 3);

            Light   = OmApi.OmReaderGetValue(Handle, OmApi.OM_READER_VALUE_TYPE.OM_VALUE_LIGHT);
            Temp    = OmApi.OmReaderGetValue(Handle, OmApi.OM_READER_VALUE_TYPE.OM_VALUE_TEMPERATURE_MC);
            Batt    = OmApi.OmReaderGetValue(Handle, OmApi.OM_READER_VALUE_TYPE.OM_VALUE_BATTERY_PERCENT);
            BattRaw = OmApi.OmReaderGetValue(Handle, OmApi.OM_READER_VALUE_TYPE.OM_VALUE_BATTERY_MV);

            return(samples);
        }