tdms
tdms
is a LabVIEW TDMS file parser library written in Rust. This is meant to be a general purpose library for reading and performing any calculation work on data contained in those files.
Note: This library is a work in progress. While I do not expect the current function signatures and library structure to change, you could experience difficulties due to early adoption. Functionality is currently limited. Raw data channel iterators will be added slowly and a list will be kept indicating which are available and which are under construction
Current Features
- Read both standard and big endian encoded files
- Read files with DAQmx data and data indices
- Read all segments in file, along with their groups and channels (per segment only)
- Read all raw data contained in all segments in file (as a
Vec<u8>
only at the present time) - Logging using the
log
api - users of the library must choose and initialize the implementation, such asenv-logger
Here is a list of all supported iterators for TDMS data types. If completely unlisted, then that type is not supported yet. Check back frequently as this list will grow quickly.
Data Type | Standard | Interleaved | DAQmx |
---|---|---|---|
Double Float | ✓ | ✓ - untested | ✗ |
Single Float | ✓ - untested | ✓ - untested | ✗ |
Single Float with unit | ✓ - untested | ✓ - untested | ✗ |
Double Float with unit | ✓ - untested | ✓ - untested | ✗ |
Complex Single Float | ✓ - untested | ✓ - untested | ✗ |
Complex Double Float | ✓ - untested | ✓ - untested | ✗ |
I8 | ✓ - untested | ✓ - untested | ✗ |
I32 | ✓ - untested | ✓ - untested | ✗ |
I64 | ✓ - untested | ✓ - untested | ✗ |
U8 | ✓ - untested | ✓ - untested | ✗ |
U16 | ✓ - untested | ✓ - untested | ✗ |
U32 | ✓ - untested | ✓ - untested | ✗ |
U64 | ✓ - untested | ✓ - untested | ✗ |
Boolean | ✓ - untested | ✓ - untested | ✗ |
Timestamp (returns tuple) | ✓ - untested | ✓ - untested | ✗ |
Single Float | ✓ - untested | ✓ - untested | ✗ |
Single Float | ✓ - untested | ✓ - untested | ✗ |
Single Float | ✓ - untested | ✓ - untested | ✗ |
String | ✓ - untested | ✗ | ✗ |
Planned Features
- Iterators for each channel type, return native Rust values from encoded data channels
- DAQmx data channel iterator support
- Searching on string channels
Usage
extern crate tdms;
use Path;
use TdmsDataType;
use TDMSFile;
Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.