랩뷰 데이터 구조 알아보기
- LabVIEW 랩뷰/Labview 랩뷰 강의
- 2021. 1. 8.
이번 시간에는 랩뷰의 데이터 구조에 대해서 알아보도록 하겠습니다. 지난 강의에서는 컨트롤 중 '숫자형 컨트롤'과 '숫자형 인디케이터'를 프론트패널에 추가하였습니다. 여기서 접미사인 숫자형이 랩뷰의 데이터 구조 중 하나입니다.
1. 랩뷰의 데이터 구조들
데이터 구조 | 블록 다이어그램 아이콘 모양 |
데이터 타입 | 대표 값 |
숫자형 데이터 타입 | 숫자 | '1,2,3..' 등의 숫자 | |
문자열 데이터 타입 | 텍스트 | '텍스트' 등의 ASCII 문자열 | |
불리언 데이터 타입 | 참/거짓 | 1/0 또는 참/거짓 | |
배열 데이터 타입 | 동일한 데이터 타입의 묶음 | 숫자형 데이터 타입끼리 묶인 1차원 배열 | |
클러스터 데이터 타입 | 서로 다른 데이터 타입의 묶음 | 숫자형 및 문자열 데이터 타입이 묶인 클러스터 | |
열거형 데이터 타입 | 문자열과 숫자형의 조합 | 문자열 '첫번째' <-> 숫자형 '0' |
2. 숫자형 데이터 타입
숫자형 데이터 타입은 우리가 랩뷰를 사용하면서 가장 많이 다루게 될 데이터 타입입니다. 숫자형은 또 다시 정수형, 실수형과 같이 여러 가지 타입으로 나눌 수 있습니다. 앞으로 다루게 될 For loop과 같은 반복 횟수와 같은 숫자형은 항상 정수형으로 표현됩니다.
랩뷰에서 숫자형 컨트롤이나 상수를 만들었을 때 기본적으로 생성되는 숫자형은 배정도 실수 또는 부호 있는 32비트 정수입니다. 따라서 여러분들이 랩뷰에서 가장 많이 사용하게 될 숫자형은 배정도 실수와 32비트 정수입니다. 아래 표에서는 '부호 있는/없는'을 앞에 표기했지만 일반적으로 '부호 있는'은 생략하고 부호가 없을 경우에만 '부호 없는'을 붙이도록 하겠습니다.
어떤 언어에서도 마찬가지이지만 랩뷰에서 숫자형 데이터의 범위를 알고 사용하는 것은 정말 중요합니다. 예를 들어 32비트 정수형의 경우 표현할 수 있는 숫자의 범위는 -2,147,483,648부터 2,147,483,647까지입니다. 32비트 정수형을 사용하면서 2,147,483,647+1 을 한다면 어떻게 될까요? -2,147,483,648이 됩니다. 따라서 더하기를 반복적으로 하는 프로그램을 사용하거나, 숫자를 계속해서 카운트해야 하는 경우 최소/최대 숫자의 범위를 알고 숫자형 타입을 정해야 합니다.
숫자형 | 아이콘 | 블록 다이어그램 터미널 | 범위 | |
Extended Precision Float | 확장형 정밀도 실수 | –6.48e–4966 ~ 1.19e+4932 | ||
Double Precision Float | 배정도 실수 | –4.94e–324 ~ 1.79e+308 | ||
Single Precision Float | 단정도 실수 | –1.40e–45 ~ 3.40e+38 | ||
Fixed Point Precision Float | 부동 소수점 실수 | 설정에 따라 달라짐 | ||
Signed Quad Integer | 부호 있는 64비트 정수 | –1e19 ~ 1e19 | ||
Signed Long Integer | 부호 있는 32비트 정수 | –2,147,483,648 ~ 2,147,483,647 | ||
Signed Word Integer | 부호 있는 16비트 정수 | –32,768 ~ 32,767 | ||
Signed Byte Integer | 부호 있는 8비트 정수 | –128 ~ 127 | ||
Unsigned Quad Integer | 부호 없는 64비트 정수 | 0 ~ 2e19 | ||
Unsigned Long Integer | 부호 없는 32비트 정수 | 0 ~ 4,294,967,295 | ||
Unsigned Word Integer | 부호 없는 16비트 정수 | 0 ~ 65,535 | ||
Unsigned Byte Intger | 부호 없는 8비트 정수 | 0 ~ 255 | ||
Complex Extended Precision Float | 확장형 정밀도 복소수 | –6.48e–4966 ~ 1.19e+4932 | ||
Complex Double Precision Float | 배정도 복소수 | –4.94e–324 ~ 1.79e+308 | ||
Complex Single Precision Float | 단정도 복소수 | –1.40e–45 ~ 3.40e+38 |
3. 문자열 데이터 타입
문자열 데이터 타입은 ASCII 코드, 즉 텍스트를 값으로 갖는 데이터입니다. 대표적으로 확장자가 .txt인 텍스트 파일을 읽거나 쓸 때 사용하고 알림 메시지 창에 나타낼 값 등에 쓰입니다. 블록 다이어그램에서 아래처럼 보라색으로 표현됩니다.
아래는 ASCII 코드표이고 문자열 데이터 타입은 10진수나 16진수 모양의 숫자형 데이터 타입으로 변환할 수 있습니다.
10진수 | 16진수 | 문자 | 10진수 | 16진수 | 문자 | 10진수 | 16진수 | 문자 | 10진수 | 16진수 | 문자 |
0 | 0x00 | NUL | 32 | 0x20 | SP | 64 | 0x40 | @ | 96 | 0x60 | ` |
1 | 0x01 | SOH | 33 | 0x21 | ! | 65 | 0x41 | A | 97 | 0x61 | a |
2 | 0x02 | STX | 34 | 0x22 | " | 66 | 0x42 | B | 98 | 0x62 | b |
3 | 0x03 | ETX | 35 | 0x23 | # | 67 | 0x43 | C | 99 | 0x63 | c |
4 | 0x04 | EOT | 36 | 0x24 | $ | 68 | 0x44 | D | 100 | 0x64 | d |
5 | 0x05 | ENQ | 37 | 0x25 | % | 69 | 0x45 | E | 101 | 0x65 | e |
6 | 0x06 | ACK | 38 | 0x26 | & | 70 | 0x46 | F | 102 | 0x66 | f |
7 | 0x07 | BEL | 39 | 0x27 | ' | 71 | 0x47 | G | 103 | 0x67 | g |
8 | 0x08 | BS | 40 | 0x28 | ( | 72 | 0x48 | H | 104 | 0x68 | h |
9 | 0x09 | HT | 41 | 0x29 | ) | 73 | 0x49 | I | 105 | 0x69 | i |
10 | 0x0A | LF | 42 | 0x2A | * | 74 | 0x4A | J | 106 | 0x6A | j |
11 | 0x0B | VT | 43 | 0x2B | + | 75 | 0x4B | K | 107 | 0x6B | k |
12 | 0x0C | FF | 44 | 0x2C | , | 76 | 0x4C | L | 108 | 0x6C | l |
13 | 0x0D | CR | 45 | 0x2D | - | 77 | 0x4D | M | 109 | 0x6D | m |
14 | 0x0E | SO | 46 | 0x2E | . | 78 | 0x4E | N | 110 | 0x6E | n |
15 | 0x0F | SI | 47 | 0x2F | / | 79 | 0x4F | O | 111 | 0x6F | o |
16 | 0x10 | DLE | 48 | 0x30 | 0 | 80 | 0x50 | P | 112 | 0x70 | p |
17 | 0x11 | DC1 | 49 | 0x31 | 1 | 81 | 0x51 | Q | 113 | 0x71 | q |
18 | 0x12 | DC2 | 50 | 0x32 | 2 | 82 | 0x52 | R | 114 | 0x72 | r |
19 | 0x13 | DC3 | 51 | 0x33 | 3 | 83 | 0x53 | S | 115 | 0x73 | t |
20 | 0x14 | DC4 | 52 | 0x34 | 4 | 84 | 0x54 | T | 116 | 0x74 | s |
21 | 0x15 | NAK | 53 | 0x35 | 5 | 85 | 0x55 | U | 117 | 0x75 | u |
22 | 0x16 | SYN | 54 | 0x36 | 6 | 86 | 0x56 | V | 118 | 0x76 | v |
23 | 0x17 | ETB | 55 | 0x37 | 7 | 87 | 0x57 | W | 119 | 0x77 | w |
24 | 0x18 | CAN | 56 | 0x38 | 8 | 88 | 0x58 | X | 120 | 0x78 | x |
25 | 0x19 | EM | 57 | 0x39 | 9 | 89 | 0x59 | Y | 121 | 0x79 | v |
26 | 0x1A | SUB | 58 | 0x3A | : | 90 | 0x5A | Z | 122 | 0x7A | y |
27 | 0x1B | ESC | 59 | 0x3B | ; | 91 | 0x5B | [ | 123 | 0x7B | z |
28 | 0x1C | FS | 60 | 0x3C | < | 92 | 0x5C | \ | 124 | 0x7C | { |
29 | 0x1D | GS | 61 | 0x3D | = | 93 | 0x5D | ] | 125 | 0x7D | | |
30 | 0x1E | RS | 62 | 0x3E | > | 94 | 0x5E | ^ | 126 | 0x7E | } |
31 | 0x1F | US | 63 | 0x3F | ? | 95 | 0x5F | _ | 127 | 0x7F | DEL |
4. 불리언 데이터 타입
불리언 데이터 타입은 '참' 또는 '거짓'을 나타내는 데이터 타입입니다. 1 또는 0 이라고 표현하기도 하므로 1비트짜리 데이터입니다. 블록 다이어그램에서 초록색으로 표현됩니다.
5. 배열 데이터 타입
배열은 동일한 데이터를 묶어놓은 데이터 타입입니다. 동일한 데이터란 '숫자형'끼리 묶여있거나 '문자열'끼리 묶여있는 것입니다. 그래서 아무것도 없는 배열(껍데기)에 숫자형이나 문자열 데이터 등을 넣어 배열을 만들 수 있습니다. 대표적으로 숫자형, 문자열, 클러스터, 불리언 등 끼리 묶어 배열을 만들 수 있습니다.
- 인덱스 디스플레이와 값 디스플레이
배열을 생성하면 아래와 같이 인덱스 디스플레이와 값 디스플레이를 볼 수 있습니다. 인덱스 디스플레이는 값 디스플레이에서 첫 번째에 보이는 배열의 인덱스(번호)를 설정할 수 있습니다. 랩뷰의 인덱스는 0부터 시작한다는 것을 잊지 마세요.
아래와 같이 배열의 원소가 {5, 4, 3, 8}인 1차원 배열이 있을 때 원소 5의 인덱스는 0입니다. 원소 8의 인덱스는 3이겠죠. 여기서 인덱스 디스플레이의 값을 1로 변경하면 값 디스플레이에서 보이는 첫 번째 원소의 인덱스가 1로 변경되어 원소 4부터 보이게 됩니다.
- 배열의 차원
인덱스 디스플레이를 통해 배열의 차원을 확인하거나 변경할 수 있습니다. 인덱스 디스플레이가 한 칸일 경우 1차원 배열을 뜻하고, 두 칸일 경우 2차원 배열(행과 열)을 뜻합니다.
배열의 차원을 변경하는 방법은 인덱스 디스플레이에 마우스 포인터를 가져다 놓고 아래로 드래그하면 배열의 차원이 증가하고, 위로 드래그하면 배열의 차원이 감소합니다. 블록 다이어그램의 상수 배열, 프론트 패널의 컨트롤 배열 모두 같은 방법으로 배열의 차원을 증감할 수 있습니다.
- 배열 초기화
배열은 묶여 있는 데이터 타입과 차원 수를 정의한 채로 초기화하지 않으면 아래와 같이 값 디스플레이의 원소들이 회색 배경으로 보입니다. '초기화되지 않은 배열'은 배열이 선언되었지만 원소가 정의되지 않은 것을 뜻합니다. 아래와 같이 초기화되지 않은 배열에서 (2,2)인덱스의 원소에 3을 입력하면 나머지 원소들은 기본값인 0으로 초기화(정의)되어 입력됩니다.
6. 클러스터 데이터 타입
클러스터는 종류가 다른 데이터 타입을 하나로 묶은 객체입니다. 배열은 종류가 같은 데이터를 묶은 것이고, 클러스터는 종류가 다른 데이터를 묶은 것이죠. C언어의 구조체(struct)와 비슷합니다. 클러스터도 배열과 마찬가지로 빈 클러스터(껍데기)에 넣고 싶은 컨트롤 또는 인디케이터를 하나씩 드래그하여 집어넣으면 됩니다. 클러스터를 묶거나 풀 때, 처음에 넣었던 순서대로 일종의 인덱스가 할당됩니다(나중에 바꿀 수도 있습니다).
- 비어 있는 클러스터 상수 만들기 : 블록 다이어그램에서 오른쪽 클릭하여 Cluster, Class & Variant 함수 팔레트에서 Cluster Constant를 클릭하여 블록 다이어그램에 배치합니다.
- 비어 있는 클러스터 컨트롤 만들기 : 프론트 패널에서 오른쪽 클릭하여 컨트롤 팔레트에서 Data Containers - Cluster를 클릭하여 프론트 패널에 배치합니다.
- 클러스터에 원소 집어 넣기 : 아래 그림처럼 클러스터 상수를 만들고, 묶을 데이터를 하나씩 드래그하여 클러스터에 넣어 주면 됩니다.
7. 열거형 데이터 타입
열거형 데이터 타입은 문자열과 숫자가 한 쌍을 이루는 조합입니다. <January : 0>, <February : 1> ... <December : 11>와 같이 January는 0과 대응되는 쌍을 만들 수 있습니다.
열거형 데이터를 만드는 방법은 프론트 패널에서 Ring & Enum - Enum을 클릭하여 생성합니다.
처음 열거형 데이터 타입을 만들면 아무것도 정의되어 있지 않기 때문에 비어 있습니다. 열거형을 오른쪽 클릭하여 Edit Items를 클릭하거나, Properties를 클릭하여 Edit Items 탭으로 들어갑니다. 이 설정 탭에서 Insert를 클릭하여 아이템을 입력하면 됩니다.
열거형은 프론트 패널에서는 January라고 나타나지만, 블록 다이어그램에서 코드를 실행할 때에는 숫자로 인식하기 때문에 0으로 코드가 실행됩니다. 열거형 타입은 인덱스가 0부터 지정되는 것을 변경할 수는 없고 아이템을 입력하는 순서대로 숫자 0,1,2.. 와 대응합니다. 쌍을 이루는 숫자를 임의로 변경하고 싶은 경우에는 Ring을 사용하여 동일하게 아이템을 설정할 수 있습니다.
'LabVIEW 랩뷰 > Labview 랩뷰 강의' 카테고리의 다른 글
랩뷰의 루프(Loop) 사용하기 (4) | 2021.01.10 |
---|---|
경합조건 : 랩뷰의 코드 실행 순서 (0) | 2021.01.08 |
컨트롤, 인디케이터란 무엇인가? (0) | 2021.01.07 |
랩뷰 추천 설정 적용하기 (0) | 2021.01.07 |
랩뷰 인터페이스 알아보기 (0) | 2021.01.06 |