Мне нужно записать некоторые данные в файл HDF5 с помощью С#. Я не привязан к какой-либо конкретной библиотеке, но единственная доступная библиотека, которую я смог найти, это HDF5DotNet (http://hdf5.net/). У меня есть простой класс, содержащий некоторые данные (просто использование значения по умолчанию инициализирует его, чтобы легко его проверить, обычно данные считываются с датчика):
public class mData
{
public double temp = 123.456789;
public double humid = 223.456789;
public int chamberId = 5;
}
Как записать массив или список в файл HDF5? HDF5 кажется слишком хорошим, чтобы это был особый случай, но я не смог найти подходящей документации. Это то, что я пробовал, следуя примеру:
List<mData> mdl = new List<mData>();
mdl.Add(new mData()); // create some dummy data
mdl.Add(new mData());
mdl.Add(new mData());
string filename = "test.h5";
const int DATA_ARRAY_LENGTH = 3;
const int RANK = 1; // <- unsure about this one
H5FileId fileId = H5F.create(filename, H5F.CreateMode.ACC_TRUNC);
H5GroupId groupId = H5G.create(fileId, "/myGroup");
long[] dims = new long[RANK]; // <- unsure, extrapolated from example
dims[0] = DATA_ARRAY_LENGTH;
H5DataSpaceId spaceId = H5S.create_simple(RANK, dims);
H5DataTypeId typeId = H5T.copy(H5T.H5Type.NATIVE_DOUBLE); // <- NATIVE_DOUBLE is definitely wrong but I dont know which type to use in this case
int typeSize = H5T.getSize(typeId);
H5DataSetId dataSetId = H5D.create(fileId, "/myDataset", typeId, spaceId);
H5D.write(dataSetId, new H5DataTypeId(H5T.H5Type.NATIVE_DOUBLE),
new H5Array<double>(mdl)); // <- NATIVE_DOUBLE and H5Array<double> are definitely wrong but again unsure which type to use in both cases
H5G.close(groupId);
H5F.close(fileId);
Любая помощь или указания в других библиотеках приветствуются!