Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ;------------------------------------------------------------------
- ; TDMS data structure http://zone.ni.com/devzone/cda/tut/p/id/5696
- ; Section Incremental Meta Information Example explained
- ;------------------------------------------------------------------
- ;SEGMENT 1
- ;--LEAD IN - SEGMENT 1 / Define the two channel, metadata, rawdata
- 54 44 53 6D < "TDSm" tag
- 0E 00 00 00 < ToC Mask 0b0000 1111, kTocMetaData, kTocNewObjList, and kTocRawData
- 68 12 00 00 < Version number (4713)
- 8F 00 00 00 < Next segment offset (value: 143)
- 00 00 00 00 |-
- 77 00 00 00 < Raw data offset (value: 119) > Raw Data Length = 143-119=24
- 00 00 00 00 |-
- ;--META DATA SEGMENT 1
- 02 00 00 00 < Number of objects = 2 / referrs to Number of objects META DATA section, not actual Raw Data!!!
- ;--OBJECT 1 META - SEGMENT 1
- 13 00 00 00 < Length of the first object path = 0x13 > 19
- 2F 27 67 72 < string = /'group'/'channel1'
- 6F 75 70 27 |
- 2F 27 63 68 |
- 61 6E 6E 65 |
- 6C 31 27 |-
- 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
- 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
- 01 00 00 00 < Array dimension = 1
- 03 00 00 00 < Number of values = 3
- 00 00 00 00 < |-
- 01 00 00 00 < Number properties = 1
- 04 00 00 00 < Length of property = 4
- 70 72 6F 70 < string = prop
- 20 00 00 00 < Data type of the property value (tdsTypeString=0x20)
- 05 00 00 00 < Length of the property value (only for strings) = 5
- 76 61 6C 69 < string = valid
- 64 |-
- ;--OBJECT 2 META - SEGMENT 1
- 13 00 00 00 < Length of the first object path = 0x13 > 19
- 2F 27 67 72 < string = /'group'/'channel2'
- 6F 75 70 27 |
- 2F 27 63 68 |
- 61 6E 6E 65 |
- 6C 32 27 |-
- 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
- 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
- 01 00 00 00 < Array dimension = 1
- 03 00 00 00 < Number of values = 3
- 00 00 00 00 |-
- 00 00 00 00 < Number properties = 0
- ;Raw data channel1 - SEGMENT 1 / property1:prop=valid
- 01 00 00 00 < Raw data = 1
- 02 00 00 00 < Raw data = 2
- 03 00 00 00 < Raw data = 3
- ;Raw data channel2 - SEGMENT 1 / no property
- 04 00 00 00 < Raw data = 4
- 05 00 00 00 < Raw data = 5
- 06 00 00 00 < Raw data = 6
- ;SEGMENT 2
- ;--LEAD IN - SEGMENT 2 / Just more Rawdata,no properties are changed, no metadata
- 54 44 53 6D < "TDSm" tag
- 08 00 00 00 < ToC Mask 0b1000 = 2^3 = kTocRawData / kTocMetaData=kTocNewObjList=0
- 68 12 00 00 < Version number (4713)
- 18 00 00 00 < Next segment offset (value: 24)
- 00 00 00 00 |-
- 00 00 00 00 < Raw data offset (value: 0) > Raw Data Length = 24-0=24
- 00 00 00 00 |-
- ;- kTocMetaData=kTocNewObjList=0 > property of previuous segment remains unchanged
- ;Raw data channel1 - SEGMENT 2 / property1:prop=valid
- 01 00 00 00 < Raw data = 1
- 02 00 00 00 < Raw data = 2
- 03 00 00 00 < Raw data = 3
- ;Raw data channel2 - SEGMENT 2 / no property
- 04 00 00 00 < Raw data = 4
- 05 00 00 00 < Raw data = 5
- 06 00 00 00 < Raw data = 6
- ;SEGMENT 3
- ;--LEAD IN - SEGMENT 3 / 'prop' of channel1 is changed from valid to error, needs to redeclare the entire
- ;-- Metadata for che channel. No need for a NewObjList, some raw data.
- 54 44 53 6D < "TDSm" tag
- 0A 00 00 00 < ToC Mask 0b1010 = kTocMetaData,kTocRawData / kTocNewObjList=0
- 68 12 00 00 < Version number (4713)
- 60 00 00 00 < Next segment offset (value: 96)
- 00 00 00 00 |-
- 48 00 00 00 < Raw data offset (value: 72) > Raw Data Length = 96-72=24
- 00 00 00 00 |-
- ;--META DATA SEGMENT 3
- 01 00 00 00 < Number of objects = 1
- ;--OBJECT 1 META - SEGMENT 3
- 13 00 00 00 < Length of the first object path = 0x13 > 19
- 2F 27 67 72 < string = /'group'/'channel1'
- 6F 75 70 27 |
- 2F 27 63 68 |
- 61 6E 6E 65 |
- 6C 31 27 |-
- 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
- 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
- 01 00 00 00 < Array dimension = 1
- 03 00 00 00 < Number of values = 3
- 00 00 00 00 < |-
- 01 00 00 00 < Number properties = 1
- 04 00 00 00 < Length of property = 4
- 70 72 6F 70 < string = prop
- 20 00 00 00 < Data type of the property value (tdsTypeString=0x20)
- 05 00 00 00 < Length of the property value (only for strings) = 5
- 65 72 72 6F < string = error
- 72 |-
- ;Raw data channel1 - SEGMENT 3 / property1:prop=error
- 01 00 00 00 < Raw data = 1
- 02 00 00 00 < Raw data = 2
- 03 00 00 00 < Raw data = 3
- ;Raw data channel2 - SEGMENT 3 / no property
- 04 00 00 00 < Raw data = 4
- 05 00 00 00 < Raw data = 5
- 06 00 00 00 < Raw data = 6
- ;SEGMENT 4
- ;--LEAD IN - SEGMENT 4 / Add a channel named 'voltage', with its description in Metadata section, No need
- ;-- for a NewObjList, RawData.
- 54 44 53 6D < "TDSm" tag
- 0A 00 00 00 < ToC Mask 0b1010 = kTocMetaData,kTocRawData / kTocNewObjList=0
- 68 12 00 00 < Version number (4713)
- 5E 00 00 00 < Next segment offset (value: 94)
- 00 00 00 00 |-
- 32 00 00 00 < Raw data offset (value: 50) > Raw Data Length = 96-50=44
- 00 00 00 00 |-
- ;--META DATA SEGMENT 4
- 01 00 00 00 < Number of objects = 1
- ;--OBJECT 3 META - SEGMENT 4
- 12 00 00 00 < Length of the first object path = 0x12 > 18
- 2F 27 67 72 < string = /'group'/'voltage'
- 6F 75 70 27 |
- 2F 27 76 6F |
- 6C 74 61 67 |
- 65 27 |-
- 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
- 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
- 01 00 00 00 < Array dimension = 1
- 05 00 00 00 < Number of values = 3
- 00 00 00 00 < |-
- 00 00 00 00 < Number properties = 0
- ;Raw data channel1 - SEGMENT 4 / property1:prop=error
- 01 00 00 00 < Raw data = 1
- 02 00 00 00 < Raw data = 2
- 03 00 00 00 < Raw data = 3
- ;Raw data channel2 - SEGMENT 4 / no property
- 04 00 00 00 < Raw data = 4
- 05 00 00 00 < Raw data = 5
- 06 00 00 00 < Raw data = 6
- ;Raw data voltage - SEGMENT 4 / no property
- 07 00 00 00 < Raw data = 7
- 08 00 00 00 < Raw data = 8
- 09 00 00 00 < Raw data = 9
- 0A 00 00 00 < Raw data = 10
- 0B 00 00 00 < Raw data = 11
- ;SEGMENT 5
- ;--LEAD IN - SEGMENT 5 / Channel2 changed number of Number of values (3 to 27), al the other unchanged:
- ;-- No need for a NewObjList, MetaData are present, RawData as well.
- 54 44 53 6D < "TDSm" tag
- 0A 00 00 00 < ToC Mask 0b1010 = kTocMetaData,kTocRawData / kTocNewObjList=0
- 68 12 00 00 < Version number (4713)
- BF 00 00 00 < Next segment offset (value: 191)
- 00 00 00 00 |-
- 33 00 00 00 < Raw data offset (value: 51) > Raw Data Length = 191-51=140
- 00 00 00 00 |-
- ;--META DATA SEGMENT 5
- 01 00 00 00 < Number of objects = 1
- ;--OBJECT 2 META - SEGMENT 2
- 13 00 00 00 < Length of the first object path = 0x13 > 19
- 2F 27 67 72 < string = /'group'/'channel2'
- 6F 75 70 27 |
- 2F 27 63 68 |
- 61 6E 6E 65 |
- 6C 32 27 |-
- 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
- 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
- 01 00 00 00 < Array dimension = 1
- 1B 00 00 00 < Number of values = 27
- 00 00 00 00 < |-
- 00 00 00 00 < Number properties = 0
- ;Raw data channel1 - SEGMENT 5 / property1:prop=error
- 01 00 00 00 < Raw data = 1
- 02 00 00 00 < Raw data = 2
- 03 00 00 00 < Raw data = 3
- ;Raw data channel2 - SEGMENT 5 / no property
- 01 00 00 00 < Raw data = 1
- 02 00 00 00 < Raw data = 2
- 03 00 00 00 < Raw data = 3
- 04 00 00 00 < Raw data = 4
- 05 00 00 00 < Raw data = 5
- 06 00 00 00 < Raw data = 6
- 07 00 00 00 < Raw data = 7
- 08 00 00 00 < Raw data = 8
- 09 00 00 00 < Raw data = 9
- 0A 00 00 00 < Raw data = 10
- 0B 00 00 00 < Raw data = 11
- 0C 00 00 00 < Raw data = 12
- 0D 00 00 00 < Raw data = 13
- 0E 00 00 00 < Raw data = 14
- 0F 00 00 00 < Raw data = 15
- 10 00 00 00 < Raw data = 16
- 11 00 00 00 < Raw data = 17
- 12 00 00 00 < Raw data = 18
- 13 00 00 00 < Raw data = 19
- 14 00 00 00 < Raw data = 20
- 15 00 00 00 < Raw data = 21
- 16 00 00 00 < Raw data = 22
- 17 00 00 00 < Raw data = 23
- 18 00 00 00 < Raw data = 24
- 19 00 00 00 < Raw data = 25
- 1A 00 00 00 < Raw data = 26
- 1B 00 00 00 < Raw data = 27
- ;Raw data voltage - SEGMENT 5 / no property
- 07 00 00 00 < Raw data = 7
- 08 00 00 00 < Raw data = 8
- 09 00 00 00 < Raw data = 9
- 0A 00 00 00 < Raw data = 10
- 0B 00 00 00 < Raw data = 11
- ;SEGMENT 6
- ;--LEAD IN - SEGMENT 6 / Stop writing channel2/ go on with channel1 and voltage= change in the channel
- ;-- order! Need for a NewObjList!!
- ; The meta data section of the new segment must contain a complete list of all object paths, but no
- ;properties and no raw data indexes, unless they also change.
- 54 44 53 6D < "TDSm" tag
- 0E 00 00 00 < ToC Mask 0b0000 1111, kTocMetaData, kTocNewObjList, and kTocRawData
- 68 12 00 00 < Version number (4713)
- 81 00 00 00 < Next segment offset (value: 129)
- 00 00 00 00 |-
- 61 00 00 00 < Raw data offset (value: 97) > Raw Data Length = 129-97=32
- 00 00 00 00 |-
- ;--META DATA SEGMENT 5
- 02 00 00 00 < Number of objects = 2
- ;--OBJECT 1 META - SEGMENT 6 > channel 'channel1'
- 13 00 00 00 < Length of the first object path = 0x13 > 19
- 2F 27 67 72 < string = /'group'/'channel1'
- 6F 75 70 27 |
- 2F 27 63 68 |
- 61 6E 6E 65 |
- 6C 31 27 |-
- 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
- 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
- 01 00 00 00 < Array dimension = 1
- 03 00 00 00 < Number of values = 3
- 00 00 00 00 < |-
- 00 00 00 00 < Number properties = 0
- ;--OBJECT 3 META - SEGMENT 6 > channel 'voltage'
- 12 00 00 00 < Length of the first object path = 0x12 > 18
- 2F 27 67 72 < string = /'group'/'voltage'
- 6F 75 70 27 |
- 2F 27 76 6F |
- 6C 74 61 67 |
- 65 27 |-
- 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
- 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
- 01 00 00 00 < Array dimension = 1
- 05 00 00 00 < Number of values = 5
- 00 00 00 00 < |-
- 00 00 00 00 < Number properties = 0
- ;Raw data channel 1 - SEGMENT 6 / property1:prop=error
- 01 00 00 00 < Raw data = 1
- 02 00 00 00 < Raw data = 2
- 03 00 00 00 < Raw data = 3
- ;Raw data voltage - SEGMENT 5 / no property
- 07 00 00 00 < Raw data = 7
- 08 00 00 00 < Raw data = 8
- 09 00 00 00 < Raw data = 9
- 0A 00 00 00 < Raw data = 10
- 0B 00 00 00 < Raw data = 11
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement