I have a Python app using nidaqmx 0.5.7 library running on OpenSUSE 15.1 and collecting data from cDAQ9189 with multiple analogue modules.
Application is using call to configure_logging() method to configure logging to TDMS file, which is a wrapper around C API DAQmxConfigureLogging.
Version of NI software is 19.5 (ni-software-2019-220.127.116.11152-0+f0.lp150.noarch.rpm plus updates from ni-daqmx-19.5.0-18.104.22.168152-0+f0.lp150.noarch.rpm along with LabVIEW2020RTE_Linux).
We were successfully running this code on Windows for a while without issues, but when this code was migrated to Linux I noticed that resulting TDMS files are missing important waveform properties needed to compute time series timestamp (among others less important missing fields). The full list of missing channel properties is:
I looked into the TDMS docs and couldn't find any reference to Linux limitations. Properties Autogenerated by the TDMS Library doc was the closest one I could find on this topic, however it mentions Measurement Studio product and not TDMS C API which I guess what nidaqmx is using.
I will be happy to provide more technical details on the setup, but firstly wanted to ask the community with this high level info hoping that I am just missing some obvious config.
Answering myself - looks like I was pulling TDMS file a bit early (~0.3s) - after log file was redirected to a new log file (which finishes writing current log) but before NI driver could fully write the last chunk of data and metadata. I found out (in hex editor) that my TDMS file has next structure:
- channels scaling metadata (e.g. NI_Scaling_Status, etc)
- waveform metadata which I was missing
I am not sure whether there is any callback I can use to see whether log file is fully written, I am planning just to add a check that file is not growing anymore during some sane period of time (1s).