I am trying to convert one of the “C” examples into “C#” and not having
much luck.



“C” code:

#define FILE            "h5ex_t_cmpdatt.h5"

#define DATASET         "DS1"

#define ATTRIBUTE       "A1"

#define DIM0            4



typedef struct {

    int     serial_no;

    char    *location;

    double  temperature;

    double  pressure;

} sensor_t;                                 /* Compound type */



int

main (void)

{

    hid_t       file, filetype, memtype, strtype, space, dset, attr;

                                            /* Handles */

    herr_t      status;

    hsize_t     dims[1] = {DIM0};

    sensor_t    wdata[DIM0],                /* Write buffer */

                *rdata;                     /* Read buffer */

    int         ndims,

                i;

    /*     * Initialize data.     */

    wdata[0].serial_no = 1153;

    wdata[0].location = "Exterior (static)";

    wdata[0].temperature = 53.23;

    wdata[0].pressure = 24.57;

    wdata[1].serial_no = 1184;

    wdata[1].location = "Intake";

    wdata[1].temperature = 55.12;

    wdata[1].pressure = 22.95;

    wdata[2].serial_no = 1027;

    wdata[2].location = "Intake manifold";

    wdata[2].temperature = 103.55;

    wdata[2].pressure = 31.23;

    wdata[3].serial_no = 1313;

    wdata[3].location = "Exhaust manifold";

    wdata[3].temperature = 1252.89;

    wdata[3].pressure = 84.11;

    /*     * Create a new file using the default properties.     */

    file = H5Fcreate (FILE, H5F_ACC_TRUNC, H5P_DEFAULT, H5P_DEFAULT);

    /*     * Create variable-length string datatype.     */

    strtype = H5Tcopy (H5T_C_S1);

    status = H5Tset_size (strtype, H5T_VARIABLE);

    /*     * Create the compound datatype for memory.     */

    memtype = H5Tcreate (H5T_COMPOUND, sizeof (sensor_t));

    status = H5Tinsert (memtype, "Serial number", HOFFSET (sensor_t,
serial_no), H5T_NATIVE_INT);



“C#” Code:



            string FILE = @"c:\h5ex_t_cmpdatt.h5";

            string DATASET = "DS1";

            string ATTRIBUTE = "A1";

            int DIM0 = 4;

            int filetype, space, dset, attr, status; /* Handles */

            sensor_t[] wdata = new sensor_t[DIM0];

            int ndims, i;

            /* Initialize data. */

            wdata[0].serial_no = 1153;

            wdata[0].location = "Exterior (static)";

            wdata[0].temperature = 53.23;

            wdata[0].pressure = 24.57;

            wdata[1].serial_no = 1184;

            wdata[1].location = "Intake";

            wdata[1].temperature = 55.12;

            wdata[1].pressure = 22.95;

            wdata[2].serial_no = 1027;

            wdata[2].location = "Intake manifold";

            wdata[2].temperature = 103.55;

            wdata[2].pressure = 31.23;

            wdata[3].serial_no = 1313;

            wdata[3].location = "Exhaust manifold";

            wdata[3].temperature = 1252.89;

            wdata[3].pressure = 84.11;

            /* Create a new file using the default properties. */

            H5FileId FileID = H5F.create(FILE, H5F.CreateMode.ACC_TRUNC);

            /* Create variable-length string datatype. */

            H5DataTypeId strtype = H5T.copy(H5T.H5Type.C_S1);

            status = H5T.setSize(strtype, sizeof(sensor_t));

            /* Create the compound datatype for memory. */

            H5DataTypeId memtype = H5T.create(H5T.CreateClass.COMPOUND,
sizeof(sensor_t));

            H5T.insert(memtype, "Serial Number",  offset, (sensor_t,
serial_no), H5T.H5Type.NATIVE_INT);



I am having all kinds of problems with the HDF calls.  Anyone want to jump
in and help?

The example I am trying to convert is ‘h5ex_t_cmpdatt-1.c’.
_______________________________________________
Hdf-forum is for HDF software users discussion.
[email protected]
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org

Reply via email to