From 9cfd821292a82fb42dbc9464f86e2dcd5b6f79da Mon Sep 17 00:00:00 2001 From: Andrej Babic Date: Mon, 20 Apr 2020 17:18:11 +0200 Subject: [PATCH] Try first naive reader --- sf-buffer/src/sf_reader.cpp | 66 +++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 sf-buffer/src/sf_reader.cpp diff --git a/sf-buffer/src/sf_reader.cpp b/sf-buffer/src/sf_reader.cpp new file mode 100644 index 0000000..43f8968 --- /dev/null +++ b/sf-buffer/src/sf_reader.cpp @@ -0,0 +1,66 @@ +#include +#include +#include +#include +#include "jungfrau.hpp" + + +using namespace std; + +int main (int argc, char *argv[]) { + if (argc != 4) { + cout << endl; + cout << "Usage: sf_reader [device_name] [root_folder]"; + cout << endl; + cout << "\tdevice_name: Device files to read."; + cout << "\troot_folder: FS root folder." << endl; + cout << endl; + + exit(-1); + } + + string device_name = string(argv[1]); + string root_folder = string(argv[2]); + + string current_filename = root_folder + "/" + device_name + "/CURRENT"; + + uint64_t pulse_id_buffer[1000]; + + while (true) { + std::ifstream latest_input_file; + latest_input_file.open(current_filename); + + std::stringstream strStream; + strStream << latest_input_file.rdbuf(); + std::string filename = strStream.str(); + + std::cout << "Opening " << filename << endl; + + H5::H5File input_file(filename, H5F_ACC_RDONLY | H5F_ACC_SWMR_READ); + auto image_dataset = input_file.openDataSet("image"); + auto pulse_id_dataset = input_file.openDataSet("pulse_id"); + + ::memset(pulse_id_buffer, 0, sizeof(pulse_id_buffer)); + + while (true) { + + pulse_id_dataset.read( + pulse_id_buffer, + H5::PredType::NATIVE_UINT64); + + uint64_t last_pulse_id = 0; + for (size_t i=0; i<1000; i++) { + if (pulse_id_buffer[i] > last_pulse_id) { + last_pulse_id = pulse_id_buffer[i]; + } + } + + cout << last_pulse_id << endl; + + if (pulse_id_buffer[999] != 0) { + break; + } + } + + } +}