#include#include #include typedef unsigned char raw_obs_t[11]; void check_err(const int stat, const int line, const char *file) { if (stat != NC_NOERR) { (void)fprintf(stderr,"line %d of %s: %s\n", line, file, nc_strerror(stat)); fflush(stderr); exit(1); } } int main() {/* create sensor.nc */ int stat; /* return status */ int ncid; /* netCDF id */ /* group ids */ int root_grp; /* type ids */ int raw_obs_t_typ; /* dimension ids */ int time_dim; /* dimension lengths */ size_t time_len = 5; /* variable ids */ int raw_obs_id; /* rank (number of dimensions) for each variable */ # define RANK_raw_obs 1 /* variable shapes */ int raw_obs_dims[RANK_raw_obs]; /* enter define mode */ stat = nc_create("sensor.nc", NC_CLOBBER|NC_NETCDF4, &ncid); check_err(stat,__LINE__,__FILE__); root_grp = ncid; stat = nc_def_opaque(root_grp, 11, "raw_obs_t", &raw_obs_t_typ); check_err(stat,__LINE__,__FILE__); /* define dimensions */ stat = nc_def_dim(root_grp, "time", time_len, &time_dim); check_err(stat,__LINE__,__FILE__); /* define variables */ raw_obs_dims[0] = time_dim; stat = nc_def_var(root_grp, "raw_obs", raw_obs_t_typ, RANK_raw_obs, raw_obs_dims, &raw_obs_id); check_err(stat,__LINE__,__FILE__); /* assign per-variable attributes */ { /* _FillValue */ static const raw_obs_t raw_obs_FillValue_att[1] = {"\xca\xfe\xba\xbe\xca\xfe\xba\xbe\xca\xfe\xba"} ; stat = nc_put_att(root_grp, raw_obs_id, "_FillValue", raw_obs_t_typ, 1, raw_obs_FillValue_att); check_err(stat,__LINE__,__FILE__); } /* leave define mode */ stat = nc_enddef (root_grp); check_err(stat,__LINE__,__FILE__); /* assign variable data */ { raw_obs_t raw_obs_data[5] = {"\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b", "\xaa\xbb\xcc\xdd\xee\xff\xee\xdd\xcc\xbb\xaa", "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff", "\xca\xfe\xba\xbe\xca\xfe\xba\xbe\xca\xfe\xba", "\xcf\x0d\xef\xac\xed\x0c\xaf\xe0\xfa\xca\xde"} ; size_t raw_obs_startset[1] = {0} ; size_t raw_obs_countset[1] = {5} ; stat = nc_put_vara(root_grp, raw_obs_id, raw_obs_startset, raw_obs_countset, raw_obs_data); stat = nc_put_vara(root_grp, raw_obs_id, raw_obs_startset, raw_obs_countset, raw_obs_data); check_err(stat,__LINE__,__FILE__); } stat = nc_close(root_grp); check_err(stat,__LINE__,__FILE__); return 0; }