Advertisement
kidpixo

TDMS example

Jan 19th, 2012
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.24 KB | None | 0 0
  1. ;------------------------------------------------------------------
  2. ; TDMS data structure http://zone.ni.com/devzone/cda/tut/p/id/5696
  3. ; Section Incremental Meta Information Example explained
  4. ;------------------------------------------------------------------
  5. ;SEGMENT 1
  6. ;--LEAD IN - SEGMENT 1 / Define the two channel, metadata, rawdata
  7. 54 44 53 6D < "TDSm" tag
  8. 0E 00 00 00 < ToC Mask 0b0000 1111, kTocMetaData, kTocNewObjList, and kTocRawData
  9. 68 12 00 00 < Version number (4713)
  10. 8F 00 00 00 < Next segment offset (value: 143)
  11. 00 00 00 00 |-
  12. 77 00 00 00 < Raw data offset (value: 119) > Raw Data Length = 143-119=24
  13. 00 00 00 00 |-
  14. ;--META DATA SEGMENT 1
  15. 02 00 00 00 < Number of objects = 2 / referrs to Number of objects META DATA section, not actual Raw Data!!!
  16. ;--OBJECT 1 META - SEGMENT 1
  17. 13 00 00 00 < Length of the first object path = 0x13 > 19
  18. 2F 27 67 72 < string = /'group'/'channel1'
  19. 6F 75 70 27 |
  20. 2F 27 63 68 |
  21. 61 6E 6E 65 |
  22. 6C 31 27 |-
  23. 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
  24. 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
  25. 01 00 00 00 < Array dimension = 1
  26. 03 00 00 00 < Number of values = 3
  27. 00 00 00 00 < |-
  28. 01 00 00 00 < Number properties = 1
  29. 04 00 00 00 < Length of property = 4
  30. 70 72 6F 70 < string = prop
  31. 20 00 00 00 < Data type of the property value (tdsTypeString=0x20)
  32. 05 00 00 00 < Length of the property value (only for strings) = 5
  33. 76 61 6C 69 < string = valid
  34. 64 |-
  35. ;--OBJECT 2 META - SEGMENT 1
  36. 13 00 00 00 < Length of the first object path = 0x13 > 19
  37. 2F 27 67 72 < string = /'group'/'channel2'
  38. 6F 75 70 27 |
  39. 2F 27 63 68 |
  40. 61 6E 6E 65 |
  41. 6C 32 27 |-
  42. 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
  43. 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
  44. 01 00 00 00 < Array dimension = 1
  45. 03 00 00 00 < Number of values = 3
  46. 00 00 00 00 |-
  47. 00 00 00 00 < Number properties = 0
  48. ;Raw data channel1 - SEGMENT 1 / property1:prop=valid
  49. 01 00 00 00 < Raw data = 1
  50. 02 00 00 00 < Raw data = 2
  51. 03 00 00 00 < Raw data = 3
  52. ;Raw data channel2 - SEGMENT 1 / no property
  53. 04 00 00 00 < Raw data = 4
  54. 05 00 00 00 < Raw data = 5
  55. 06 00 00 00 < Raw data = 6
  56. ;SEGMENT 2
  57. ;--LEAD IN - SEGMENT 2 / Just more Rawdata,no properties are changed, no metadata
  58. 54 44 53 6D < "TDSm" tag
  59. 08 00 00 00 < ToC Mask 0b1000 = 2^3 = kTocRawData / kTocMetaData=kTocNewObjList=0
  60. 68 12 00 00 < Version number (4713)
  61. 18 00 00 00 < Next segment offset (value: 24)
  62. 00 00 00 00 |-
  63. 00 00 00 00 < Raw data offset (value: 0) > Raw Data Length = 24-0=24
  64. 00 00 00 00 |-
  65. ;- kTocMetaData=kTocNewObjList=0 > property of previuous segment remains unchanged
  66. ;Raw data channel1 - SEGMENT 2 / property1:prop=valid
  67. 01 00 00 00 < Raw data = 1
  68. 02 00 00 00 < Raw data = 2
  69. 03 00 00 00 < Raw data = 3
  70. ;Raw data channel2 - SEGMENT 2 / no property
  71. 04 00 00 00 < Raw data = 4
  72. 05 00 00 00 < Raw data = 5
  73. 06 00 00 00 < Raw data = 6
  74. ;SEGMENT 3
  75. ;--LEAD IN - SEGMENT 3 / 'prop' of channel1 is changed from valid to error, needs to redeclare the entire
  76. ;-- Metadata for che channel. No need for a NewObjList, some raw data.
  77. 54 44 53 6D < "TDSm" tag
  78. 0A 00 00 00 < ToC Mask 0b1010 = kTocMetaData,kTocRawData / kTocNewObjList=0
  79. 68 12 00 00 < Version number (4713)
  80. 60 00 00 00 < Next segment offset (value: 96)
  81. 00 00 00 00 |-
  82. 48 00 00 00 < Raw data offset (value: 72) > Raw Data Length = 96-72=24
  83. 00 00 00 00 |-
  84. ;--META DATA SEGMENT 3
  85. 01 00 00 00 < Number of objects = 1
  86. ;--OBJECT 1 META - SEGMENT 3
  87. 13 00 00 00 < Length of the first object path = 0x13 > 19
  88. 2F 27 67 72 < string = /'group'/'channel1'
  89. 6F 75 70 27 |
  90. 2F 27 63 68 |
  91. 61 6E 6E 65 |
  92. 6C 31 27 |-
  93. 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
  94. 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
  95. 01 00 00 00 < Array dimension = 1
  96. 03 00 00 00 < Number of values = 3
  97. 00 00 00 00 < |-
  98. 01 00 00 00 < Number properties = 1
  99. 04 00 00 00 < Length of property = 4
  100. 70 72 6F 70 < string = prop
  101. 20 00 00 00 < Data type of the property value (tdsTypeString=0x20)
  102. 05 00 00 00 < Length of the property value (only for strings) = 5
  103. 65 72 72 6F < string = error
  104. 72 |-
  105. ;Raw data channel1 - SEGMENT 3 / property1:prop=error
  106. 01 00 00 00 < Raw data = 1
  107. 02 00 00 00 < Raw data = 2
  108. 03 00 00 00 < Raw data = 3
  109. ;Raw data channel2 - SEGMENT 3 / no property
  110. 04 00 00 00 < Raw data = 4
  111. 05 00 00 00 < Raw data = 5
  112. 06 00 00 00 < Raw data = 6
  113. ;SEGMENT 4
  114. ;--LEAD IN - SEGMENT 4 / Add a channel named 'voltage', with its description in Metadata section, No need
  115. ;-- for a NewObjList, RawData.
  116. 54 44 53 6D < "TDSm" tag
  117. 0A 00 00 00 < ToC Mask 0b1010 = kTocMetaData,kTocRawData / kTocNewObjList=0
  118. 68 12 00 00 < Version number (4713)
  119. 5E 00 00 00 < Next segment offset (value: 94)
  120. 00 00 00 00 |-
  121. 32 00 00 00 < Raw data offset (value: 50) > Raw Data Length = 96-50=44
  122. 00 00 00 00 |-
  123. ;--META DATA SEGMENT 4
  124. 01 00 00 00 < Number of objects = 1
  125. ;--OBJECT 3 META - SEGMENT 4
  126. 12 00 00 00 < Length of the first object path = 0x12 > 18
  127. 2F 27 67 72 < string = /'group'/'voltage'
  128. 6F 75 70 27 |
  129. 2F 27 76 6F |
  130. 6C 74 61 67 |
  131. 65 27 |-
  132. 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
  133. 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
  134. 01 00 00 00 < Array dimension = 1
  135. 05 00 00 00 < Number of values = 3
  136. 00 00 00 00 < |-
  137. 00 00 00 00 < Number properties = 0
  138. ;Raw data channel1 - SEGMENT 4 / property1:prop=error
  139. 01 00 00 00 < Raw data = 1
  140. 02 00 00 00 < Raw data = 2
  141. 03 00 00 00 < Raw data = 3
  142. ;Raw data channel2 - SEGMENT 4 / no property
  143. 04 00 00 00 < Raw data = 4
  144. 05 00 00 00 < Raw data = 5
  145. 06 00 00 00 < Raw data = 6
  146. ;Raw data voltage - SEGMENT 4 / no property
  147. 07 00 00 00 < Raw data = 7
  148. 08 00 00 00 < Raw data = 8
  149. 09 00 00 00 < Raw data = 9
  150. 0A 00 00 00 < Raw data = 10
  151. 0B 00 00 00 < Raw data = 11
  152. ;SEGMENT 5
  153. ;--LEAD IN - SEGMENT 5 / Channel2 changed number of Number of values (3 to 27), al the other unchanged:
  154. ;-- No need for a NewObjList, MetaData are present, RawData as well.
  155. 54 44 53 6D < "TDSm" tag
  156. 0A 00 00 00 < ToC Mask 0b1010 = kTocMetaData,kTocRawData / kTocNewObjList=0
  157. 68 12 00 00 < Version number (4713)
  158. BF 00 00 00 < Next segment offset (value: 191)
  159. 00 00 00 00 |-
  160. 33 00 00 00 < Raw data offset (value: 51) > Raw Data Length = 191-51=140
  161. 00 00 00 00 |-
  162. ;--META DATA SEGMENT 5
  163. 01 00 00 00 < Number of objects = 1
  164. ;--OBJECT 2 META - SEGMENT 2
  165. 13 00 00 00 < Length of the first object path = 0x13 > 19
  166. 2F 27 67 72 < string = /'group'/'channel2'
  167. 6F 75 70 27 |
  168. 2F 27 63 68 |
  169. 61 6E 6E 65 |
  170. 6C 32 27 |-
  171. 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
  172. 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
  173. 01 00 00 00 < Array dimension = 1
  174. 1B 00 00 00 < Number of values = 27
  175. 00 00 00 00 < |-
  176. 00 00 00 00 < Number properties = 0
  177. ;Raw data channel1 - SEGMENT 5 / property1:prop=error
  178. 01 00 00 00 < Raw data = 1
  179. 02 00 00 00 < Raw data = 2
  180. 03 00 00 00 < Raw data = 3
  181. ;Raw data channel2 - SEGMENT 5 / no property
  182. 01 00 00 00 < Raw data = 1
  183. 02 00 00 00 < Raw data = 2
  184. 03 00 00 00 < Raw data = 3
  185. 04 00 00 00 < Raw data = 4
  186. 05 00 00 00 < Raw data = 5
  187. 06 00 00 00 < Raw data = 6
  188. 07 00 00 00 < Raw data = 7
  189. 08 00 00 00 < Raw data = 8
  190. 09 00 00 00 < Raw data = 9
  191. 0A 00 00 00 < Raw data = 10
  192. 0B 00 00 00 < Raw data = 11
  193. 0C 00 00 00 < Raw data = 12
  194. 0D 00 00 00 < Raw data = 13
  195. 0E 00 00 00 < Raw data = 14
  196. 0F 00 00 00 < Raw data = 15
  197. 10 00 00 00 < Raw data = 16
  198. 11 00 00 00 < Raw data = 17
  199. 12 00 00 00 < Raw data = 18
  200. 13 00 00 00 < Raw data = 19
  201. 14 00 00 00 < Raw data = 20
  202. 15 00 00 00 < Raw data = 21
  203. 16 00 00 00 < Raw data = 22
  204. 17 00 00 00 < Raw data = 23
  205. 18 00 00 00 < Raw data = 24
  206. 19 00 00 00 < Raw data = 25
  207. 1A 00 00 00 < Raw data = 26
  208. 1B 00 00 00 < Raw data = 27
  209. ;Raw data voltage - SEGMENT 5 / no property
  210. 07 00 00 00 < Raw data = 7
  211. 08 00 00 00 < Raw data = 8
  212. 09 00 00 00 < Raw data = 9
  213. 0A 00 00 00 < Raw data = 10
  214. 0B 00 00 00 < Raw data = 11
  215. ;SEGMENT 6
  216. ;--LEAD IN - SEGMENT 6 / Stop writing channel2/ go on with channel1 and voltage= change in the channel
  217. ;-- order! Need for a NewObjList!!
  218. ; The meta data section of the new segment must contain a complete list of all object paths, but no
  219. ;properties and no raw data indexes, unless they also change.
  220. 54 44 53 6D < "TDSm" tag
  221. 0E 00 00 00 < ToC Mask 0b0000 1111, kTocMetaData, kTocNewObjList, and kTocRawData
  222. 68 12 00 00 < Version number (4713)
  223. 81 00 00 00 < Next segment offset (value: 129)
  224. 00 00 00 00 |-
  225. 61 00 00 00 < Raw data offset (value: 97) > Raw Data Length = 129-97=32
  226. 00 00 00 00 |-
  227. ;--META DATA SEGMENT 5
  228. 02 00 00 00 < Number of objects = 2
  229. ;--OBJECT 1 META - SEGMENT 6 > channel 'channel1'
  230. 13 00 00 00 < Length of the first object path = 0x13 > 19
  231. 2F 27 67 72 < string = /'group'/'channel1'
  232. 6F 75 70 27 |
  233. 2F 27 63 68 |
  234. 61 6E 6E 65 |
  235. 6C 31 27 |-
  236. 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
  237. 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
  238. 01 00 00 00 < Array dimension = 1
  239. 03 00 00 00 < Number of values = 3
  240. 00 00 00 00 < |-
  241. 00 00 00 00 < Number properties = 0
  242. ;--OBJECT 3 META - SEGMENT 6 > channel 'voltage'
  243. 12 00 00 00 < Length of the first object path = 0x12 > 18
  244. 2F 27 67 72 < string = /'group'/'voltage'
  245. 6F 75 70 27 |
  246. 2F 27 76 6F |
  247. 6C 74 61 67 |
  248. 65 27 |-
  249. 14 00 00 00 < Raw data index (nor 0 nor 2^32-1) then is Length_index = 0x14 > 20
  250. 03 00 00 00 < Data type = 03 = tdsTypeI32(Length_index doesn't exist ?????)
  251. 01 00 00 00 < Array dimension = 1
  252. 05 00 00 00 < Number of values = 5
  253. 00 00 00 00 < |-
  254. 00 00 00 00 < Number properties = 0
  255. ;Raw data channel 1 - SEGMENT 6 / property1:prop=error
  256. 01 00 00 00 < Raw data = 1
  257. 02 00 00 00 < Raw data = 2
  258. 03 00 00 00 < Raw data = 3
  259. ;Raw data voltage - SEGMENT 5 / no property
  260. 07 00 00 00 < Raw data = 7
  261. 08 00 00 00 < Raw data = 8
  262. 09 00 00 00 < Raw data = 9
  263. 0A 00 00 00 < Raw data = 10
  264. 0B 00 00 00 < Raw data = 11
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement