タイプデスクリプタ



LabVIEW 2018ヘルプ


発行年月: 2018年3月
製品番号: 371361R-0112
製品情報を参照

ダウンロード (Windowsのみ)


LabVIEW 2016ヘルプ
LabVIEW 2017ヘルプ
LabVIEW 2018ヘルプ
LabVIEW 2019ヘルプ
LabVIEW 2020ヘルプ

LabVIEWはブロックダイアグラムの各ワイヤと端子をデータタイプに関連付けます。LabVIEWは、このタイプを「タイプデスクリプタ」と呼ばれるメモリ内の構造体でトラッキングします。タイプデスクリプタは、LabVIEWで任意のデータタイプを記述できる32ビット整数のシーケンスです。他に記述がない限り、数値は16進数形式で書き込まれます。

タイプは、異なるタイプから成る集合体であることもあります。たとえば、ブール配列では、配列はタイプであり、そのブール要素は別のタイプです。LabVIEWでは、複雑なタイプなど、すべてのタイプデスクリプタはリストに保存されます。

表示可能な形式

タイプデスクリプタは、「文字列に平坦化」関数または「バリアントから平坦化文字列に変換」関数を使用して、さまざまな形式で表示できます。

メモ  タイプデスクリプタを保存する形式は、LabVIEW 8.0で変更されました。バージョン7.x以前のLabVIEWは、16ビットの平坦化表記でタイプデスクリプタを保存します。LabVIEW 8.0以降では、32ビットの平坦化表記でタイプデスクリプタを保存します。LabVIEW 7.x以前に関する情報は、「文字列に平坦化」関数の7.x データの変換モードを使用している場合に適用されます。以下の情報は、LabVIEW 8.0以降に適用されます。NIでは、これらの形式変更により生じる可能性のある競合を回避するため、バリアントデータタイプを使用することを推奨します。

「文字列に平坦化」関数を使用してバリアントデータを平坦化する場合、LabVIEWは、バリアントと属性を含むそのすべての内容を平坦化します。この関数を使用した場合、タイプデスクリプタの保存バッファは次の形式になります。

32ビット nTDs
TDs
varサイズ nTypesUsed
varサイズ TypesUsed
ここで、 nTDs は、バッファに含まれている要素タイプデスクリプタの数
TDs は、nTDsタイプデスクリプタのリスト
varサイズ は、変数のサイズであり、表記されている値により変数値 (16ビットまたは32ビット) で保存されます。値が32768より小さい場合、2バイトで保存されます。値が32768以上の場合、1に設定された高位ビットを持つ4バイトで保存されます。
nTypesUsed は、バッファを参照する構成要素により使用されているタイプデスクリプタのタイプの実際の数
TypesUsed は、使用されているTDsのすべてのタイプの指標リスト

「バリアントから平坦化文字列に変換」関数を使用した場合、LabVIEWは、バリアントのみを平坦化し、すべての属性を破棄します。この関数を使用した場合、タイプデスクリプタは次の形式になります。

[サイズ][タイプコード][タイプ固有情報]

ここで、 [サイズ] は、サイズワードを含む最初のワードです。[サイズ]の最小値は4です。任意のタイプデスクリプタに名前 (パスカル文字列) を追加すると、[サイズ]の値が、名前の長さを2の倍数に切り上げた分増加します。サイズは16ビットまたは32ビットです。
[タイプコード] は、2番目のワードです。LabVIEWでは、タイプコードの上位バイトは内部使用目的に予約されています。2つのタイプデスクリプタが等価かどうか比較する場合、このバイトは無視してください。タイプコードの上位バイトが等しくない場合でも、2つのタイプデスクリプタは等しくなります。タイプコードは16ビットです。
[タイプ固有情報] は、名前などのタイプデスクリプタについての追加情報です。他のタイプに対するリファレンスが含まれるので、配列とクラスタは構造体または集合体データタイプになります。たとえば、クラスタタイプには各要素のタイプに関する追加情報が含まれます。

タイプコードは、以下の表のように、単精度浮動小数や拡張精度浮動小数などの実際のタイプ情報をコード化します。これらのタイプコードの値は今後のLabVIEWバージョンで変更されることがあります。

データタイプ

以下の表は、数値、数値以外のデータタイプ、タイプコード、およびタイプデスクリプタを示します。[サイズ]の最小値はタイプコードの前に表示されます。[タイプ固有情報]の値についての情報は、一部のデータタイプのタイプコードの後に表示されます。

データタイプ タイプデスクリプタ (16進数の数値)
8ビット整数 0004 xx01
16ビット整数 0004 xx02
32ビット整数 0004 xx03
64ビット整数 0004 xx04
符号なし8ビット整数 0004 xx05
符号なし16ビット整数 0004 xx06
符号なし32ビット整数 0004 xx07
符号なし64ビット整数 0004 xx08
単精度、浮動小数点数 0004 xx09
倍精度、浮動小数点数 0004 xx0A
拡張精度、浮動小数点数 0004 xx0B
複素単精度、浮動小数点数 0004 xx0C
複素倍精度、浮動小数点数 0004 xx0D
複素拡張精度、浮動小数点数 0004 xx0E
列挙体8ビット整数 <nn>xx15 <k><k pstrs>
列挙体16ビット整数 <nn>xx16 <k><k pstrs>
列挙体32ビット整数 <nn>xx17 <k><k pstrs>
単精度物理量 <nn>xx19 <k><k base-exp>
倍精度物理量 <nn>xx1A <k><k base-exp>
拡張精度物理量 <nn>xx1B <k><k base-exp>
複素単精度物理量 <nn>xx1C <k><k base-exp>
複素倍精度物理量 <nn>xx1D <k><k base-exp>
複素拡張精度物理量 <nn>xx1E <k><k base-exp>
ブール 0004 xx21
文字列 0008 xx30 <dim>
パス 0008 xx32 <dim>
ピクチャ 0008 xx33 <dim>
配列 <nn>xx40 <k dims><要素タイプデスクリプタ>
クラスタ <nn>xx50 <k elems><要素タイプデスクリプタ>
波形 <nn>xx54 <波形タイプ><要素タイプデスクリプタ>
Refnum <nn> <refnumタイプコード>
バリアント <nn>xx53
nn = 長さ、xx = LabVIEWにより予約済み、k = 数値、k pstrs = パスカル文字列の数、k base-exp = 底の指数ペアの数、k dims = 次元数、k elems = 要素数、dimは32ビット整数。

前の表のとおり、タイプデスクリプタのサイズフィールドの最小値は4です。ただし、どのタイプデスクリプタも追加で名前(パスカル文字列)を持つことができます。そのため、サイズフィールドは2の倍数に四捨五入された名前の長さ分だけ長くなります。

列挙体8ビット整数

以下のamfm、およびfm stereo項目の列挙体8ビット整数のサンプルでは、各グループの文字は16ビットワードを表します。

0016 0015 0003 0261 6D02 666D 0966 6D20 7374 6572 656F

このタイプデスクリプタには、以下のワードが含まれています。

  • 0016―合計22バイト
  • 0015―列挙された8ビット整数のタイプコード
  • 0003―3つの項目を含む
  • 0261 6D02 666D 0966 6D20 7374 6572 656F―タイプコードの固有情報たとえば、0261 6Dは、文字列のサイズを16進数で示す接頭辞02が付いた、amのASCIIエンコードです。

物理量

以下のm/s単位での倍精度物理量のサンプルでは、各グループは16ビットワードを表します。

000E 001A 0002 0002 FFFF 0003 0001

このタイプデスクリプタには、以下のワードが含まれています。

  • 000E―合計14バイト
  • 001A―倍精度物理量のタイプコード
  • 0002―2つの底の指数ペア
  • 0002―指標/秒
  • FFFF (-1)―秒の指数
  • 0003―指標/メートル
  • 0001―メートルの指数

LabVIEWでは、表示に使用する単位に関係なく、底の単位に基づいてすべての物理量を内部的に保存します。

次の表は、LabVIEWで使用される9つの底と、それらの表現を指標0〜8で示しています。

物理量名 単位 省略形 底の値
平面度 ラジアン rad 0
立体角度 ステラジアン sr 1
時間 s 2
長さ メートル m 3
質量 キログラム kg 4
電流 アンペア A 5
熱力温度 ケルビン K 6
物質量 モル mol 7
光強度 カンデラ cd 8

文字列、パス、ピクチャのデータタイプ

配列次元サイズと同様に、文字列、パス、ピクチャのデータタイプは32ビット長です。ただし、現在、コード化される値は、可変サイズを示すFFFFFFFF (-1)だけです。現在、すべての文字列、パス、ピクチャは可変サイズです。実際の長さはデータとともに保存されます。

配列およびクラスタのデータタイプ

配列およびクラスタのデータタイプには、それぞれ独自のタイプコードがあります。また、配列の要素および次元またはクラスタの要素数のデータタイプに関する追加情報も含まれます。

配列

配列のタイプコードは40です。配列のタイプデスクリプタは、次の形式になります。

<nn> xx40 <k dims> <要素タイプデスクリプタ>

次の例は、倍精度浮動小数点数の1D配列のタイプデスクリプタの例です。

000E 0040 0001 FFFF FFFF 0004 000A [タイプ固有情報]

このタイプデスクリプタには、以下のワードが含まれています。

  • 000E―タイプデスクリプタの全体の長さ (要素タイプ指標を含む) が合計12バイト
  • 0040―配列のタイプコード
  • 0001―1次元 (配列の次元数)
  • FFFF FFFF (-1) ―次元サイズ (可変サイズ)LabVIEWでは、常に0以上の実際の次元サイズをデータとともに保存します。
  • 0004 000A―要素のタイプデスクリプタ要素のタイプは、配列以外のすべてのタイプが可能です。この例では、要素は倍精度の浮動小数点数であり、次のワードが含まれています。
    • 0004―要素のサイズが4バイト
    • 000A―倍精度浮動小数点数のタイプコード

この例のタイプデスクリプタ保存バッファの形式は以下のとおりです。

タイプデスクリプタの数 0000 0002 固有タイプデスクリプタの数は2です。
タイプデスクリプタ 0 0004 000A 最初のタイプデスクリプタは倍精度浮動小数点数用です。
タイプデスクリプタ 1 000E 0040 0001 FFFF FFFF 2番目のタイプデスクリプタは配列用です。000Eは、タイプデスクリプタ全体の長さ (要素タイプ指標を含む) です。配列は可変サイズであるため、次元はFFFFFFFFです。
使用タイプ数 0002 使用されたタイプの合計数は2です。
使用されたタイプ 0000 0001 使用されたタイプは0と1です。

以下の例は、ブール値の2D配列のタイプデスクリプタの例です。

0012 0040 0002 FFFF FFFF FFFF FFFF 0004 0021 [タイプ固有情報]

このタイプデスクリプタには、以下のワードが含まれています。

  • 0012―タイプデスクリプタの全体の長さ (要素タイプ指標を含む) が合計18バイト
  • 0040―配列のタイプコード
  • 0002―2次元 (配列の次元数)
  • FFFF FFFF (-1) ―第1次元のサイズ (可変サイズ)
  • FFFF FFFF (-1) ―第2次元のサイズ (可変サイズ)
  • 0004 0021―要素のタイプデスクリプタこの例では、要素はブールであり、次のワードが含まれています。
    • 0004―要素のサイズが4バイト
    • 0021―ブールのタイプコード

この例のタイプデスクリプタ保存バッファの形式は以下のとおりです。

タイプデスクリプタの数 0000 0002 固有タイプデスクリプタの数は2です。
タイプデスクリプタ 0 0004 0021 最初のタイプデスクリプタはブール用です。
タイプデスクリプタ 1 0012 0040 0002 FFFF FFFF FFFF FFFF 2番目のタイプデスクリプタは配列用です。0012は、タイプデスクリプタ全体の長さ (要素タイプ指標を含む) です。配列は可変サイズであるため、次元はFFFFFFFFです。
使用タイプ数 0002 使用されたタイプの合計数は2です。
使用されたタイプ 0000 0001 使用されたタイプは0と1です。

クラスタ

クラスタのタイプコードは50です。クラスタのタイプデスクリプタは、次の形式になります。

<nn> xx50 <k elems> <要素タイプデスクリプタ>

以下の例は、符号付き16ビット整数と符号なし32ビット整数という2つの整数が含まれたクラスタのタイプデスクリプタの例です。

000E 0050 0002 0004 0002 0004 0007

このタイプデスクリプタには、以下のワードが含まれています。

  • 000E―合計14バイト
  • 0050―クラスタのタイプコード
  • 0002―2つの要素 (クラスタ内の要素数)
  • 0004 0002―最初の要素である符号付き16ビット整数のタイプデスクリプタ
    • 0004―4バイト
    • 0002―符号付き16ビット整数のタイプコード
  • 0004 0007―2番目の要素である符号なし32ビット整数のタイプデスクリプタ
    • 0004―4バイト
    • 0007―符号なし32ビット整数のタイプコード

タイプデスクリプタ保存バッファの形式は以下のとおりです。

タイプデスクリプタの数 0000 0003 固有タイプデスクリプタの数は3です。
タイプデスクリプタ 0 0004 0002 最初のタイプデスクリプタは符号付き16ビット整数用です。
タイプデスクリプタ 1 0004 0007 2番目のタイプデスクリプタは符号なし32ビット整数用です。
タイプデスクリプタ 2 000E 0050 0002 3番目のタイプデスクリプタはクラスタ用です。000Eは、クラスタのタイプ指標を含む、タイプデスクリプタ全体の長さです。
使用タイプ数 0003 使用されたタイプの合計数は3です。
使用されたタイプ 0000 0001 0002 使用されたタイプは0、1および2です。

配列およびクラスタのタイプデスクリプタは他のタイプデスクリプタを含むため、深くネストする可能性があります。

重複したタイプはこのタイプリストに含まれていないことに注意してください。以下の例は、倍精度浮動小数点数の1D配列、および1つの倍精度浮動小数点数を持つクラスタのタイプデスクリプタリストです。

タイプデスクリプタの数 0000 0003 固有タイプデスクリプタの数は3です。
タイプデスクリプタ 0 0005 000A 00 最初のタイプデスクリプタは、要素タイプ用で、同じタイプのスカラ用と全く同様に表示されます。
タイプデスクリプタ 1 000C 0040 0001 FFFF FFFF 0000 2番目のタイプデスクリプタは配列用です。000Cは、要素のタイプ指標を含む、タイプデスクリプタ全体の長さです。配列は可変サイズであるため、次元はFFFFFFFFです。
タイプデスクリプタ 2 0008 0050 0001 0002 3番目のタイプデスクリプタはクラスタ用です。0008は、クラスタのタイプ指標を含む、タイプデスクリプタ全体の長さです。クラスタには、指標2にあるタイプによる1つの要素が含まれます。
使用タイプ数 0003 使用されたタイプの合計数は4です。
使用されたタイプ 0000 0001 0000 0002 使用されたタイプは0、1、0および2です。

指標2にあるクラスタで参照されたタイプは、配列で使用されたタイプで検索される必要があることに注意してください。使用されたタイプの2番目の要素は0で、タイプデスクリプタ0に相当します。

波形

波形のタイプコードは54です。波形のタイプを含むワードは、タイプコードのすぐ後に続きます。波形要素クラスタのタイプデスクリプタはこのワードに続きます。波形は5つのカテゴリに分類されます。

  • アナログ
  • デジタル
  • デジタルデータ
  • タイムスタンプ
  • ダイナミック

アナログ波形

以下の表は、アナログ波形のタイプを示します。

タイプ サブタイプコード
8ビット符号付き 14
16ビット符号付き 2
32ビット符号付き 15
64ビット符号付き 19
倍精度浮動小数 3
単精度浮動小数 5
拡張精度浮動小数 10
8ビット符号なし 11
16ビット符号なし 12
32ビット符号なし 13
64ビット符号なし 20
複素単精度浮動小数 16
複素倍精度浮動小数 17
複素拡張精度浮動小数 18

たとえば、倍精度の波形は以下のとおりです。

0006 0054 0003 //波形のサイズ、波形タイプコード、倍精度サブタイプコード3

0080 0050 0005 //クラスタのサイズ、クラスタコード、要素数

<タイムスタンプのタイプデスクリプタ>

<dtのタイプデスクリプタ>

<配列要素タイプのタイプデスクリプタ>

<未使用エラークラスタのタイプデスクリプタ>

<属性のタイプデスクリプタ>

アナログ波形の他のタイプのタイプデスクリプタは倍精度の波形に類似しています。相違点は波形要素のタイプおよびサブタイプが異なることです。

デジタル波形とデジタルデータ

デジタル波形は、唯一サブタイプコード8を持つ波形タイプです。

たとえば、

00B6 0054 0008 //デジタル波形のサイズ、波形タイプコード、サブタイプコード8

<タイムスタンプのタイプデスクリプタ>

<dtのタイプデスクリプタ>

<デジタルデータのタイプデスクリプタ>

<未使用エラークラスタのタイプデスクリプタ>

<属性のタイプデスクリプタ>

デジタルデータ

デジタルデータは、波形タイプコードおよびサブタイプコード7を持つ唯一のデータタイプです。

たとえば、

003E 0054 0007 //デジタルデータのサイズ、波形タイプコード、サブタイプコード7

<遷移のタイプデスクリプタ>

<データのタイプデスクリプタ>

タイムスタンプ

タイムスタンプのサブタイプコードは6です。タイムスタンプは64ビットの基数を持つ128ビット固定小数点数です。タイムスタンプは4つの整数のクラスタとして保存されます。ここで、最初の2つの符号付き整数(64ビット)は、グリニッジ標準時で1904年1月1日金曜日午前12:00から経過した秒数[01-01-1904 00:00:00]を表します。次の2つの符号なし整数(64ビット)は秒の小数部分を表します。タイムスタンプについては、ni.comの以下のサポートドキュメントを参照してください。

001C 0054 0006 //タイムスタンプのサイズ、波形タイプコード、タイプスタンプサブタイプコード6

<アナログ波形のタイプデスクリプタ>



この記事は役に立ちましたか。

役に立たなかった