From 161541f4c690fa6835c1534ade52087a7b47ae8e Mon Sep 17 00:00:00 2001 From: Mario Fink Date: Thu, 16 May 2019 15:59:54 +0200 Subject: [PATCH] gauge timestamp and use optional .tdx path in cython --- example.py | 7 ++++--- lib/tdm_ripper.cpp | 24 ++++++++++++++++-------- lib/tdm_ripper.hpp | 7 ++++--- main.cpp | 5 +++++ pytdm_ripper.pyx | 4 ++-- tdm_ripper.pxd | 2 +- 6 files changed, 32 insertions(+), 17 deletions(-) diff --git a/example.py b/example.py index 487e5ba..0ac0274 100644 --- a/example.py +++ b/example.py @@ -6,8 +6,9 @@ tdmpath = b"samples/SineData.tdm" tdxpath = b"samples/SineData.tdx" # create instance of ripper class -RP = tdm_ripper.pytdmripper(tdmpath) -RP = tdm_ripper.pytdmripper(b"/Users/mariofink/git/Conti_HBS/data_science/python/features/tdm_tmp_slow/75_1/Messung.tdm") +# RP = tdm_ripper.pytdmripper(tdmpath) +RP = tdm_ripper.pytdmripper(tdmpath,tdxpath) +# RP = tdm_ripper.pytdmripper(b"/Users/mariofink/git/Conti_HBS/data_science/python/features/tdm_tmp_slow/75_1/Messung.tdm") # provide overview of available channels RP.show_channels() @@ -19,7 +20,7 @@ for i in range(0,RP.num_groups()): print(str(i+1).rjust(10)+str(RP.no_channels(i)).rjust(10)) # print particular channel to file -# RP.print_channel(1,b"SineData_extract.dat") +RP.print_channel(1,b"SineData_extract.dat") # extract channel and return it to numpy array # channels = RP.get_channel(1) diff --git a/lib/tdm_ripper.cpp b/lib/tdm_ripper.cpp index 9d5ebf0..d5ec3fc 100644 --- a/lib/tdm_ripper.cpp +++ b/lib/tdm_ripper.cpp @@ -61,6 +61,10 @@ tdm_ripper::tdm_ripper(std::string tdmfile, std::string tdxfile, bool neglect_em // open .tdx and stream all binary data into vector std::ifstream fin(tdxfile_.c_str(),std::ifstream::binary); + assert( fin.good() && "failed to open .tdx-file" ); + if ( !fin.good() ) std::cout<<"failed to open .tdx-file\n\n"; + // assert( errno == 0 ); + // std::cout<<"error code "< tdxbuf((std::istreambuf_iterator(fin)), (std::istreambuf_iterator())); tdxbuf_ = tdxbuf; @@ -123,7 +127,8 @@ void tdm_ripper::parse_structure() } else { - assert ( false && "unexpected attribute name" ); + startstop.first = ""; + startstop.second = ""; } } group_timestamp_.push_back(startstop); @@ -306,14 +311,17 @@ void tdm_ripper::list_channels(std::ostream& gout, int width, int maxshow) void tdm_ripper::list_groups(std::ostream& gout, int width, int maxshow) { + // if present, show timestamps + bool showts = ( group_timestamp_[0].first.compare("") != 0 ); + gout< 0 ); + assert( ts >= 0 ); // use STL to convert timestamp (epoch usually starts from 01.01.1970) std::time_t tstime = ts - 1970*avgdaysofyear*86400; diff --git a/main.cpp b/main.cpp index be4796d..5f389a2 100644 --- a/main.cpp +++ b/main.cpp @@ -28,6 +28,11 @@ int main(int argc, char* argv[]) ripper.list_channels(fout); fout.close(); + // long int nsa = 6.3636349745e10; // expected result: 22.07.2016, 19:49:05 + // long int nsb = 6.3636350456e10; + // std::string ts = std::to_string(nsa); + // std::cout<