Hi All,

I use compound data types for my dataset, and here I create the struct first, 
and then load the data, after that create compound data types, create dataset 
using that compound data types, and finally write into the dataset. I don't 
know what was wrong with my code, because the result's looking was not exactly 
what I want. The reason because:
1. The string data that should contains hour:minute (for example 1:20, 17:50) 
was change into symbol in the HDF5 file
2. The dataset do not containt the same structures as the dset_data (array as 
the source data), it is messy in the HDF5 file.

Until now, I'm trying to fix this, but still can't find any clue. 

Thanks

regards,
Elisa

Here is the copy of my code:

public struct struct1
        {
            public string a;
            public int b;
            public float c;
            public short d;
            public int e;
        }

public void btnInsert()
{
struct1[] dset_data = new struct1[numline];

foreach (string s in pd_data)
        {
                           if (temp1 == 1)
                            {
                                dset_data[temp].a = s;
                            }
                            if (temp1 == 2)
                            {
                                dset_data[temp].b = int.Parse(s);
                            }
                            if (temp1 == 3)
                            {
                                if (s == null || s.Length == 0)
                                {
                                    dset_data[temp].c = float.Parse("0");
                                }
                                else
                                {
                                    dset_data[temp].c = float.Parse(s);
                                }
                            }
                            if (temp1 == 4)
                            {
                                dset_data[temp].d = short.Parse(s);
                            }

                            if (temp1 == 5)
                            {
                                if (s == null || s.Length == 0)
                                {
                                    dset_data[temp].e = int.Parse("0");
                                }
                                else
                                {
                                    dset_data[temp].e = int.Parse(s);
                                }
                            }
                            temp1 = temp1 + 1;
     }


//create data space
ulong[] dims = new ulong[1];
dims[0] = ulong.Parse(numline.ToString());
spaceId = H5S.create_simple(1, dims);

//create compound data type
typeId1 = H5T.create(H5T.CreateClass.COMPOUND,15);
                H5T.insert(typeId1, "minutes", 0, H5T.H5Type.C_S1);
                H5T.insert(typeId1, "fractional", 1, H5T.H5Type.NATIVE_INT);
                H5T.insert(typeId1, "charges", 5, H5T.H5Type.NATIVE_FLOAT);
                H5T.insert(typeId1, "phase angle", 9, H5T.H5Type.NATIVE_SHORT);
                H5T.insert(typeId1, "EMT", 11, H5T.H5Type.NATIVE_INT);

dataSetId = H5D.create(fileId, "/" + circuitid + "/" + groupname[0] + "/" + 
groupname[1] + "/" + groupname[2] + "/" + groupname[3],  typeId1, spaceId);

// Write the data to the data set.
H5D.write(dataSetId,typeId1,new H5Array<struct1>(dset_data));





      
_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

Reply via email to