티스토리 뷰

안녕하세요.

구스입니다.


Enum에 대해서 다들 아시나요?


흔히 열거형이라고 불리는 이 데이터타입은 관련된 상수들의 값의 모음이라고 이야기를 할 수가 있습니다. 

자주 사용되면서 변경되지 않는 값들을 모아 놓은 것이라고 이해를 할 수가 있는데요.


랩뷰는 물론 C, C#, Java에서도 당연히 사용이 되고 있습니다. 모두다 열거형이라는 이름을 가지고 있습니다. 영어로는 Enum 혹은  Enumeration이라고 부릅니다. 


오늘은 랩뷰에서 Enum 타입 Int형으로 형변환(LabVIEW cast to enum)하는 방법 알아볼까 합니다.


LabVIEW는 Enum을 편리하게 사용하게 하기 위해서 Enum 컨트롤을 제공하고 있습니다. 

아래와 같이 사용을 할 수가 있겠죠? 




열거형에 값을 넣기 위해서는 아래와 같이 마우스 오른쪽 버튼을 눌러 아이템 편집을 이용하면 됩니다.

이를 누르게 되면 열거형 프로터피 창이 뜨면서 아이템 편집이 가능해집니다.



아이템들을 편집합니다.

아이템의 문자열 값과 Enum 내부에 정해진 정수형 값이 매칭이 되어 열거형이 완성이 됩니다.



아래와 같이 구성을 하게 되면 열거형 테스트1은 0이라는 값을 열거형 테스트2는 1이라는 값을 가지게 됩니다. 즉 아이템의 이름에 따라 정수의 값이 구성이 된다는 점이죠. 




한번 정수의 값으로 바꾸어 봅시다.

그리고 이 정수의 값을 다시 타입 캐스트(Type Cast) 함수를 통해서 랩뷰에서 Enum 타입 Int형으로 형변환(LabVIEW cast to enum)을 해보록 합시다.



열거형을 숫자형 인디케이터에 넣고, 이 값을 타입 캐스트 함수를 통해서 다시 열거형으로 바꾸어 보겠습니다. 


먼가 이상합니다. 


입력 값은 "열거형 테스트2" 였는데 변환된 값은 열거형 테스트1입니다.

무엇이 잘못된것 일까요? 




그 이유는 바로 형변환을 할 때 발생하는 반올림등의 연산때문입니다.

따라서 형변환된 결과가 I32를 I8로 바꾸면 나머지 24비트는 사라지게 되겠죠. 이러한 문제로 인해서 값이 제대로 나오지 않는 것입니다.


또한 랩뷰의 Enum형은 U8, U16, U32의 데이터 타입입니다.

따라서 Enum의 형에 맞게 값을 변경하고 타입 캐스팅을 진행해야 합니다. 아래와 같이 말이죠. 





Enum 컨트롤 및 인디케이터의 형은 아래와 같이 확인을 할 수가 있습니다. 




이 글에서는 랩뷰에서 Enum 타입 Int형으로 형변환(LabVIEW cast to enum) 방법에 대해서 알아보았습니다.

그럼 이만 줄이겠습니다.


이 글이 도움이 되셨으면 아래의 하트를 눌러주세요.



댓글