Exemple #1
0
        private void GetValue()
        {
            int status = 0;

            switch (_data_type)
            {
            case HDF4Helper.DataTypeDefinitions.DFNT_CHAR8:    //string
            //case HDF4Helper.DataTypeDefinitions.DFNT_CHAR:
            case HDF4Helper.DataTypeDefinitions.DFNT_UCHAR8:
                //case HDF4Helper.DataTypeDefinitions.DFNT_UCHAR:
            {
                IntPtr ptr = Marshal.AllocHGlobal(_count * 8);
                status = HDF4Helper.SDreadattr(_sd_id, _attr_index, ptr);
                var buffer = new byte[_count];
                Marshal.Copy(ptr, buffer, 0, _count);
                Marshal.FreeHGlobal(ptr);
                _value = Encoding.ASCII.GetString(buffer);        //new ASCIIEncoding()
            }
            break;

            case HDF4Helper.DataTypeDefinitions.DFNT_INT8:
            case HDF4Helper.DataTypeDefinitions.DFNT_UINT8:
            {
                IntPtr ptr = Marshal.AllocHGlobal(_count * 8);
                status = HDF4Helper.SDreadattr(_sd_id, _attr_index, ptr);
                var buffer = new byte[_count];
                Marshal.Copy(ptr, buffer, 0, _count);
                Marshal.FreeHGlobal(ptr);
                _value = buffer;
            }
            break;

            case HDF4Helper.DataTypeDefinitions.DFNT_INT16:
            case HDF4Helper.DataTypeDefinitions.DFNT_UINT16:
            {
                IntPtr ptr = Marshal.AllocHGlobal(_count * 16);
                status = HDF4Helper.SDreadattr(_sd_id, _attr_index, ptr);
                var buffer = new short[_count];
                Marshal.Copy(ptr, buffer, 0, _count);
                Marshal.FreeHGlobal(ptr);
                _value = buffer;
            }
            break;

            case HDF4Helper.DataTypeDefinitions.DFNT_INT32:
            case HDF4Helper.DataTypeDefinitions.DFNT_UINT32:
            {
                IntPtr ptr = Marshal.AllocHGlobal(_count * 32);
                status = HDF4Helper.SDreadattr(_sd_id, _attr_index, ptr);
                var buffer = new int[_count];
                Marshal.Copy(ptr, buffer, 0, _count);
                Marshal.FreeHGlobal(ptr);
                _value = buffer;
            }
            break;

            case HDF4Helper.DataTypeDefinitions.DFNT_FLOAT32:
            {
                IntPtr ptr = Marshal.AllocHGlobal(_count * 32);
                status = HDF4Helper.SDreadattr(_sd_id, _attr_index, ptr);
                var buffer = new float[_count];
                Marshal.Copy(ptr, buffer, 0, _count);
                Marshal.FreeHGlobal(ptr);
                _value = buffer;
            }
            break;

            case HDF4Helper.DataTypeDefinitions.DFNT_FLOAT64:
            {
                IntPtr ptr = Marshal.AllocHGlobal(_count * 64);
                status = HDF4Helper.SDreadattr(_sd_id, _attr_index, ptr);
                var buffer = new double[_count];
                Marshal.Copy(ptr, buffer, 0, _count);
                Marshal.FreeHGlobal(ptr);
                _value = buffer;
            }
            break;

            case HDF4Helper.DataTypeDefinitions.DFNT_NINT8:
                break;

            case HDF4Helper.DataTypeDefinitions.DFNT_NUINT8:
                break;

            case HDF4Helper.DataTypeDefinitions.DFNT_NINT16:
                break;

            case HDF4Helper.DataTypeDefinitions.DFNT_NUINT16:
                break;

            case HDF4Helper.DataTypeDefinitions.DFNT_NINT32:
                break;

            case HDF4Helper.DataTypeDefinitions.DFNT_NUINT32:
                break;

            case HDF4Helper.DataTypeDefinitions.DFNT_NFLOAT32:
                break;

            case HDF4Helper.DataTypeDefinitions.DFNT_NFLOAT64:
                break;

            default:
                break;
            }
        }