LabVIEW는 블록다이어그램의 각 와이어와 터미널을 데이터 타입과 연관시킵니다. LabVIEW는 타입 설명자라고 불리는 메모리의 구조를 사용하여 이 타입을 추적합니다. 타입 설명자는 LabVIEW에서 모든 데이터 타입을 나타낼 수 있는 32비트 정수 시퀀스입니다. 따로 언급되지 않은 이상, 숫자값은 16진법 포맷으로 표기됩니다.

타입은 집합을 이룰 수 있습니다. 이 집합은 여러가지 다른 타입으로 구성될 수 있습니다. 예를 들어 불리언 배열에서, 배열이 하나의 타입이고 배열의 불리언 원소는 또 다른 타입입니다. LabVIEW에서 이러한 복합 타입의 모든 타입 설명자는 리스트에 저장됩니다.

읽을 수 있는 포맷

[패턴화된 문자열로] 함수 또는 [배리언트를 패턴화된 문자열로] 함수를 사용하여 타입 설명자를 여러 다른 포맷으로 읽을 수 있습니다.

노트 LabVIEW가 타입 설명자를 저장하는 포맷이 LabVIEW 8.0에서 변경되었습니다. LabVIEW 7.x와 그 이전 버전은 16비트의 패턴 형태로 타입 설명자를 저장합니다. LabVIEW 8.0.과 그 이후 버전은 32비트의 패턴 형태로 타입 설명자를 저장합니다. [패턴화된 문자열로] 함수의 7.x 데이터 변환 모드를 사용하는 경우, LabVIEW 7.x 및 이전 버전의 정보가 적용됩니다. 다음 정보는 LabVIEW 8.0 또는 이후 버전에 적용됩니다. NI는 배리언트 데이터 타입을 사용하여 이러한 포맷 변경이 야기할 수 있는 충돌을 방지할 것을 권장합니다.

[패턴화된 문자열로] 함수를 사용하여 배리언트 데이터를 패턴화하는 경우, LabVIEW는 배리언트와 그 속성을 비롯하여 모든 내용을 패턴화합니다. 이 함수를 사용할 때 타입 설명자 저장 버퍼의 포맷은 다음과 같습니다.

32비트 nTDs TDs
var size nTypesUsed
var size TypesUsed
어디서 nTDs 는 버퍼에 포함된 원소 타입 설명자의 개수입니다.
TDs nTDs 타입 설명자의 리스트입니다.
var size 는 변수의 크기로 나타내는 값에 따라 16 또는 32비트의 변수로 저장됩니다. 값이 32768보다 작은 경우 두 바이트로 저장됩니다. 값이 32768이거나 그 이상인 경우 네 바이트로 저장되며 높은 비트는 1로 설정됩니다.
nTypesUsed 는 버퍼를 참조하는 객체가 사용한 타입 설명자의 실제 개수입니다.
TypesUsed 는 사용되는 모든 TDs 타입의 인덱스 리스트입니다.

[배리언트를 패턴화된 문자열로] 함수를 사용하는 경우, LabVIEW는 배리언트만 패턴화하고 모든 속성을 삭제합니다. 이 함수를 사용할 때 타입 설명자의 포맷은 다음과 같습니다.

[크기][타입 코드][타입 특정 정보][이름 (해당되는 경우)]

어디서 [크기] 는 바이트로 나타낸 첫 번째이며, 크기 워드를 포함합니다. [크기]의 최소값은 4입니다. 모든 타입 설명자에 이름 (파스칼 문자열)을 추가할 수 있습니다. 이렇게하면 [크기]의 값은 이름의 길이를 2의 배수로 반올림한만큼 증가됩니다. 크기는 16비트입니다.
[타입 코드] 는 두 번째 단어입니다. LabVIEW는 내부적으로 사용하도록 타입 코드의 높은 자리 바이트를 예약합니다. 두 개의 타입 설명자가 동등한지 비교할 때는 이 바이트를 무시해야 합니다. 타입 코드의 높은 자리 바이트가 같지 않은 경우에도 두 개의 타입 설명자는 같습니다. 타입 코드는 16비트입니다.
[타입 특정 정보] 는 타입 설명자에 대한 추가적인 정보입니다. 배열과 클러스터는 구조 또는 여러 데이터 타입의 집합인데, 그 이유는 다른 여러 타입의 참조를 포함하기 때문입니다. 예를 들면, 클러스터 타입은 그 원소 각각의 타입에 대한 추가적인 정보를 가지고 있습니다.
[이름] 은 파스칼 문자열입니다. 이름은 있을 수도 있고 없을 수도 있습니다.

타입 코드는 다음의 테이블에 리스트되어 있는 것처럼 단정도 또는 확장형 부동소수와 같은 실제 타입 정보를 인코딩합니다. 이 타입 코드 값은 LabVIEW의 향후 버전에서 변경될 수 있습니다.

데이터 타입

다음 테이블은 숫자 및 비숫자 데이터 타입, 타입 코드, 타입 설명자의 리스트입니다. 타입 코드 앞에 [크기]의 최소값이 나타납니다. 일부 데이터 타입의 경우, [타입 특정 정보]가 가질 수 있는 값이 타입 코드 뒤에 나타나기도 합니다.

노트 모든 타입 설명자가 이름을 추가로 가질 수 있습니다. 이름은 파스칼 문자열입니다.
데이터 타입 타입 설명자(16진법의 숫자)
8비트 정수 0004 xx 01
16비트 정수 0004 xx 02
32비트 정수 0004 xx 03
64비트 정수 0004 xx 04
부호없는 8비트 정수 0004 xx 05
부호없는 16비트 정수 0004 xx 06
부호없는 32비트 정수 0004 xx 07
부호없는 64비트 정수 0004 xx 08
단정도 부동소수 0004 xx 09
배정도 부동소수 0004 xx 0A
확장형 부동소수 0004 xx 0B
복소수 단정도 부동소수 0004 xx 0C
복소수 배정도 부동소수 0004 xx 0D
복소수 확장형 부동소수 0004 xx 0E
열거형 8비트 정수 <nn> xx 15 <k><k pstrs>
열거형 16비트 정수 <nn> xx 16 <k><k pstrs>
열거형 32비트 정수 <nn> xx 17 <k><k pstrs>
단정도 물리량 <nn> xx 19 <k><k base-exp>
배정도 물리량 <nn> xx 1A <k><k base-exp>
확장형 물리량 <nn> xx 1B <k><k base-exp>
복소수 단정도 물리량 <nn> xx 1C <k><k base-exp>
복소수 배정도 물리량 <nn> xx 1D <k><k base-exp>
복소수 확장형 물리량 <nn> xx 1E <k><k base-exp>
불리언 0004 xx 21
문자열 0008 xx 30 <dim>
경로 0008 xx 32 <dim>
그림 0008 xx 33 <dim>
배열 <Nn> xx 40 <k dims><원소 타입 설명자>
클러스터 <Nn> xx 50 <k elems><원소 타입 설명자>
웨이브폼 <Nn> xx 54 <웨이브폼 타입><원소 타입 설명자>
참조 번호 <nn> <참조 번호 타입 코드>
배리언트 <Nn> xx 53
nn = 길이, xx = LabVIEW에 의해 예약됨, k = 숫자, k pstrs = 파스칼 문자열의 개수, k base-exp = 밑 지수 쌍의 개수, k dims = 차원의 개수, k elems = 원소의 개수, dim은 32 비트 정수입니다.

앞의 테이블에서 볼 수 있는 것처럼 타입 설명자의 크기 필드에서 최소값은 4입니다. 그러나, 모든 타입 설명자가 이름(파스칼 문자열)을 추가로 가질 수 있습니다. 이 경우에, 크기 필드는 이름의 길이(파스칼 문자열)를 2의 배수로 반올림한 것만큼 커집니다.

열거형 8비트 정수

am, fm, fm stereo 아이템에 대한 이름이 없는 열거형 8비트 정수의 다음 예제에서, 문자의 각 그룹은 16진수 표기로 표현된 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 인코딩입니다.

동일한 열거형 8비트 정수가 radio라는 이름으로 지정된 경우, 해당 타입 설명자는 다음과 같이 해석될 수 있습니다.

001C 4015 0003 0261 6D02 666D 0966 6D20 7374 6572 656F 0572 6164 696F

다음은 두 설명자를 비교한 내용입니다.

길이가 다름

타입 코드가 동일함

열거형 값의 형이 동일함

이름, 파스칼 문자열 radio

물리량

m/s의 단위를 가진 배정도 물리량의 다음 예제에서, 문자의 각 그룹은 16진수 표기로 표현된 16비트 워드를 나타냅니다.

000E 001A 0002 0002 FFFF 0003 0001

타입 설명자는 다음과 같은 워드를 가집니다.

  • 000E—전체 14 바이트를 나타냅니다
  • 001A—배정도 물리량의 타입 코드를 나타냅니다.
  • 0002—2개의 밑-지수 쌍을 나타냅니다.
  • 0002—2번째 밑 인덱스를 나타냅니다.
  • 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비트 길이를 가지고 있습니다. 그러나 현재 인코드되어 있는 유일한 값은16진수 FFFFFFFF이며, 이는 크기가 변할 수 있다는 것을 나타냅니다. 현재 모든 문자열, 경로, 그림은 크기가 다양합니다. 실제 길이는 데이터와 함께 저장됩니다.

배열과 클러스터 데이터 타입

배열과 클러스터 데이터 타입 각각이 그 자신의 타입 코드를 가지고 있습니다. 또한 배열과 클러스터 데이터 타입은 그 원소의 데이터 타입과 배열의 차원이나 클러스터의 원소의 수에 대한 추가적인 정보를 가지고 있습니다.

배열

배열을 위한 타입 코드는 40입니다. 배열의 타입 설명자는 다음과 같은 포맷을 가집니다.

<Nn> xx 40 <k dims><원소 타입 설명자>

배정도 1D, 부동 소수에 대한 타입 설명자의 다음 예제를 고려합니다. 여기서 문자의 각 그룹은 16진수 표기로 표현된 16비트 워드를 나타냅니다.

000E 0040 0001 FFFF FFFF 0004 000A [타입 특정 정보]

타입 설명자는 다음과 같은 워드를 가집니다.

  • 000E—원소 타입 인덱스를 포함하여 전체 타입 설명자의 길이이며, 총 12바이트입니다.
  • 0040—배열의 타입 코드를 나타냅니다.
  • 0001—배열의 차원 수인 1차원을 나타냅니다.
  • FFFF FFFF—차원의 크기를 나타내며, 이 크기는 변경이 가능합니다. LabVIEW는 실제 차원 크기를 저장하는데, 이것은 데이터와 함께 항상 제로보다 크거나 제로와 같습니다.
  • 0004 000A—원소의 타입 설명자를 나타냅니다. 원소 타입은 배열을 제외한 모든 타입이 될 수 있습니다. 이 예에서 원소는 배정도 부동소수이며 다음과 같은 워드를 가집니다.
    • 0004—원소의 크기인 4바이트를 나타냅니다.
    • 000A—배정도 부동소수의 타입 코드를 나타냅니다.

이 예에 대한 타입 설명자 저장 버퍼의 포맷은 다음과 같습니다.

타입 설명자의 개수 0000 0002 고유한 타입 설명자의 개수는 2입니다.
타입 설명자 0 0004 000A 첫 번째 타입 설명자는 배정도 부동소수를 위한 것입니다.
타입 설명자 1 000E 0040 0001 FFFF FFFF 두 번째 타입 설명자는 배열을 위한 것입니다. 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)—첫 번째 차원의 크기를 나타내며, 이 크기는 변경이 가능합니다.
  • FFFF FFFF (-1)—두 번째 차원의 크기를 나타내며, 이 크기는 변경이 가능합니다.
  • 0004 0021—원소의 타입 설명자를 나타냅니다. 이 예에서 원소는 불리언이며 다음과 같은 워드를 가집니다.
    • 0004—원소의 크기인 4바이트를 나타냅니다.
    • 0021—불리언의 타입 코드를 나타냅니다.

이 예에 대한 타입 설명자 저장 버퍼의 포맷은 다음과 같습니다.

타입 설명자의 개수 0000 0002 고유한 타입 설명자의 개수는 2입니다.
타입 설명자 0 0004 0021 첫 번째 타입 설명자는 불리언을 위한 것입니다.
타입 설명자 1 0012 0040 0002 FFFF FFFF FFFF FFFF 두 번째 타입 설명자는 배열을 위한 것입니다. 0012는 원소 타입 인덱스를 포함하여 전체 타입 설명자의 길이입니다. 배열의 크기는 변할 수 있으므로 차원은 FFFFFFFF입니다.
사용된 타입의 개수 0002 사용된 타입의 전체 개수는 2입니다.
사용된 타입 0000 0001 사용된 타입은 0과 1입니다.

클러스터

클러스터를 위한 타입 코드는 50입니다. 클러스터의 타입 설명자는 다음과 같은 포맷을 가집니다.

<Nn> xx 50 <k elems><원소 타입 설명자>

두 정수, 하나의 부호있는 16비트 정수 및 하나의 부호없는 32비트 정수를 포함하는 클러스터에 대한 타입 설명자의 다음 예제를 고려합니다. 여기서 문자의 각 그룹은 16진수 표기로 표현된 16비트 워드를 나타냅니다.

000E 0050 0002 0004 0002 0004 0007

타입 설명자는 다음과 같은 워드를 가집니다.

  • 000E—전체 14 바이트를 나타냅니다
  • 0050—클러스터의 타입 코드를 나타냅니다.
  • 0002—클러스터의 원소 개수인 2개의 원소를 나타냅니다.
  • 0004 0002—첫 번째 원소의 타입 설명자인 부호있는 16비트 정수를 나타냅니다.
    • 0004—4 바이트를 나타냅니다.
    • 0002—부호있는 16비트 정수의 타입 코드를 나타냅니다.
  • 0004 0007—두 번째 원소의 타입 설명자인 부호없는 32비트 정수를 나타냅니다.
    • 0004—4 바이트를 나타냅니다.
    • 0007—부호없는 32비트 정수의 타입 코드를 나타냅니다.

타입 설명자 저장 버퍼 포맷의 포맷은 다음과 같습니다.

타입 설명자의 개수 0000 0003 고유한 타입 설명자의 개수는 3입니다.
타입 설명자 0 0004 0002 첫 번째 타입 설명자는 부호있는 16비트 정수를 위한 것입니다.
타입 설명자 1 0004 0007 두 번째 타입 설명자는 부호없는 32비트 정수를 위한 것입니다.
타입 설명자 2 000E 0050 0002 세 번째 타입 설명자는 클러스터를 위한 것입니다. 000E는 클러스터 타입 인덱스를 포함하는 전체 타입 설명자의 길이입니다.
사용된 타입의 개수 0003 사용된 타입의 전체 개수는 3입니다.
사용된 타입 0000 0001 0002 사용된 타입은 0, 1, 2입니다.

배열과 클러스터 타입 설명자가 다른 타입 설명자를 가지고 있기 때문에, 그 설명자는 깊이 포개어질 수 있습니다.

중복 타입은 타입 리스트에 포함되어있지 않습니다. 다음 예는 배정도 부동소수의 1D 배열과 하나의 배정도 부동소수를 가진 클러스터의 타입 설명자 리스트입니다.

타입 설명자의 개수 0000 0003 고유한 타입 설명자의 개수는 3입니다.
타입 설명자 0 0005 000A 00 첫 번째 타입 설명자는 원소 타입을 나타내며 같은 타입의 스칼라와 똑같이 나타납니다.
타입 설명자 1 000C 0040 0001 FFFF FFFF 0000 두 번째 타입 설명자는 배열을 위한 것입니다. 000C는 원소 타입 인덱스를 포함한 전체 타입 설명자의 길이입니다. 배열의 크기는 변할 수 있으므로 차원은 FFFFFFFF입니다.
타입 설명자 2 0008 0050 0001 0002 세 번째 타입 설명자는 클러스터를 위한 것입니다. 0008는 클러스터 타입 인덱스를 포함한 전체 타입 설명자의 길이입니다. 클러스터는 인덱스 2에서 타입으로 된 원소 하나를 포함하고 있습니다.
사용된 타입의 개수 0003 사용된 타입의 전체 개수는 4입니다.
사용된 타입 0000 0001 0000 0002 사용된 타입은 0, 1, 0, 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

예를 들어, 배정도 웨이브폼을 고려합니다. 여기서 문자의 각 그룹은 16진수 표기로 표현된 16비트 워드를 나타냅니다.

0006 0054 0003 //웨이브폼 크기, 웨이브폼 타입 코드, 배정도 서브타입 코드 3

0080 0050 0005.//클러스터의 크기, 클러스터 코드, 원소의 개수

<타임스탬프의 타입 설명자>

<dt의 타입 설명자>

<원소 타입 배열의 타입 설명자>

<사용되지 않은 에러 클러스터의 타입 설명자>

<속성의 타입 설명자>

다른 타입의 아날로그 웨이브폼의 타입 설명자는 배정도 웨이브폼과 비슷합니다. 차이점은 배열 원소에 대해 다른 타입이고 다른 서브타입을 갖는다는 것입니다.

디지털 웨이브폼과 디지털 데이터

디지털 웨이브폼은 서브타입 코드 8을 가지는 유일한 웨이브폼 타입입니다.

예를 들어, 다음을 고려합니다. 여기서 문자의 각 그룹은 16진수 표기로 표현된 16비트 워드를 나타냅니다.

003E 0054 0008 //디지털 웨이브폼 크기, 웨이브폼 타입 코드, 서브타입 코드 8

<타임스탬프의 타입 설명자>

<dt의 타입 설명자>

<디지털 데이터의 타입 설명자>

<사용되지 않은 에러 클러스터의 타입 설명자>

<속성의 타입 설명자>

디지털 데이터

디지털 데이터는 웨이브폼 타입 코드와 7의 서브타입 코드를 가진 유일한 데이터 타입입니다.

예를 들어, 다음을 고려합니다. 여기서 문자의 각 그룹은 16진수 표기로 표현된 16비트 워드를 나타냅니다.

003E 0054 0007 //디지털 데이터 크기, 웨이브폼 타입 코드, 서브타입 코드 7

<변이의 타입 설명자>

<데이터의 타입 설명자>

타임스탬프

타임스탬프는 6의 서브타입 코드를 가집니다. 타임스탬프는 64비트 기수를 가진128비트 고정 소수점 수입니다. LabVIEW는 4개의 정수 클러스터로 타임스탬프를 저장하며, 이때 처음 두 개의 부호 있는 정수는 세계시 기준 [01-01-1904 00:00:00], 1904년 1월 1일 금요일 오전 12시 이후 경과된 초의 개수를 나타냅니다. 다음 2개의 부호없는 정수(64비트)는 초의 소수 단위를 나타냅니다.

003E 0054 0006 //타임스탬프 크기, 웨이브폼 타입 코드, 타임스탬프 서브타입 코드 6

<아날로그 웨이브폼의 타입 설명자>