示例#1
0
        private void Write(H5GroupId parent, string name, IEnumerable <IMeasurement> measurements)
        {
            H5DataSpaceId spaceId = H5S.create_simple(1, new long[1] {
                (long)measurements.Count()
            });


            // Set compression options for dataset
            H5PropertyListId dataSetPropertyList = H5P.create(H5P.PropertyListClass.DATASET_CREATE);

            H5P.setDeflate(dataSetPropertyList, NumericDataCompression);
            H5P.setChunk(dataSetPropertyList, new long[] { (long)measurements.Count() });

            H5DataSetId dataSetId = H5D.create(parent,
                                               name,
                                               measurement_t,
                                               spaceId,
                                               new H5PropertyListId(H5P.Template.DEFAULT),
                                               dataSetPropertyList,
                                               new H5PropertyListId(H5P.Template.DEFAULT));

            MeasurementT[] ms       = new MeasurementT[measurements.Count()];
            int            ilmCount = 0;

            foreach (IMeasurement m in measurements)
            {
                MeasurementT mt = Convert(m);
                ms[ilmCount++] = mt;
            }

            H5D.write <MeasurementT>(dataSetId, measurement_t, new H5Array <MeasurementT>(ms));

            H5D.close(dataSetId);
            H5S.close(spaceId);
        }
示例#2
0
        private void Write(H5GroupId parent, string name, IMeasurement m)
        {
            H5DataSpaceId spaceId = H5S.create_simple(1, new long[1] {
                (long)1
            });
            H5DataSetId dataSetId = H5D.create(parent, name, measurement_t, spaceId);

            MeasurementT mt = Convert(m);

            H5D.writeScalar <MeasurementT>(dataSetId, measurement_t, ref mt);

            H5D.close(dataSetId);
            H5S.close(spaceId);
        }
示例#3
0
        private MeasurementT Convert(IMeasurement m)
        {
            MeasurementT mt = new MeasurementT {
                quantity = (double)m.Quantity
            };

            byte[] unitdata = System.Text.Encoding.UTF8.GetBytes(m.DisplayUnit);

            if (unitdata.Length > FIXED_STRING_LENGTH)
            {
                throw new InvalidOperationException("BaseUnits string is longer than 40 characters.");
            }

            unsafe
            {
                for (int i = 0; i < Math.Min(unitdata.Length, FIXED_STRING_LENGTH); i++)
                {
                    mt.unit[i] = unitdata[i];
                }
            }
            return(mt);
        }
        private void Write(H5GroupId parent, string name, IEnumerable<IMeasurement> measurements)
        {
            H5DataSpaceId spaceId = H5S.create_simple(1, new long[1] { (long)measurements.Count() });

            // Set compression options for dataset
            H5PropertyListId dataSetPropertyList = H5P.create(H5P.PropertyListClass.DATASET_CREATE);
            H5P.setDeflate(dataSetPropertyList, NumericDataCompression);
            H5P.setChunk(dataSetPropertyList, new long[] {(long)measurements.Count()});

            H5DataSetId dataSetId = H5D.create(parent,
                name,
                measurement_t,
                spaceId,
                new H5PropertyListId(H5P.Template.DEFAULT),
                dataSetPropertyList,
                new H5PropertyListId(H5P.Template.DEFAULT));

            MeasurementT[] ms = new MeasurementT[measurements.Count()];
            int ilmCount = 0;
            foreach (IMeasurement m in measurements)
            {
                MeasurementT mt = Convert(m);
                ms[ilmCount++] = mt;
            }

            H5D.write<MeasurementT>(dataSetId, measurement_t, new H5Array<MeasurementT>(ms));

            H5D.close(dataSetId);
            H5S.close(spaceId);
        }
        private MeasurementT Convert(IMeasurement m)
        {
            MeasurementT mt = new MeasurementT { quantity = (double)m.Quantity };

            byte[] unitdata = System.Text.Encoding.UTF8.GetBytes(m.DisplayUnit);

            if (unitdata.Length > FIXED_STRING_LENGTH)
                throw new InvalidOperationException("BaseUnits string is longer than 40 characters.");

            unsafe
            {
                for (int i = 0; i < Math.Min(unitdata.Length, FIXED_STRING_LENGTH); i++)
                    mt.unit[i] = unitdata[i];
            }
            return mt;
        }