티스토리 뷰

안녕하세요. 구스입니다. 


이 글에서는 LabVIEW에서 TCP, UDP 통신하는 방법에 대해서 이야기해볼까 합니다. 


LabVIEW는 TCP, UDP 통신을 지원하는 함수를 제공하고 있습니다. 이 함수를 사용하면 다른 언어와는 달리 편리하게 통신 환경을 구성할 수 있는데요.


C, Python, C#의 경우에는 Socket 함수등을 이용하여 byte배열로 데이터를 전송하는 반면 LabVIEW는 다른 언어들과 달리 String 타입의 ASC2 문자를 이용하여 데이터 송수신을 합니다. 


따라서 이차배열을 데이터로 송수신하기 위해서는 문자열로 변환하는 과정(LabVIEW 2D Array To String)이 필요합니다. 일반적으로 일차배열이나 단일 값을 출력하는데는 타입 캐스트 함수를 사용하게 됩니다. 



타입 캐스트 함수는 새 데이터 타입에 대한 값을 패턴화 하여 사용자가 원하는 타입으로 변경을 하게 되는데, 타입에 문자열을 넣거나 비워놓으면 기본적으로 문자열로 변환하게 됩니다. 


타입 캐스트 함수를 사용 방법은 아래와 같습니다. 자신의 패턴화 하여 변환하고자는 데이터를 타입 캐스트 함수에 연결하면 되는데요. 중요한건 2차배열의 경우는 타입 캐스트의 입력 파라미터로 지원을 하지 않습니다. 


따라서 2차배열을 TCP 혹은 UDP로 통신을 하였을 때 데이터를 전송하는 방법에 대해서 알아봐야하는데요. 이런 경우 2가지 방법은 이용할 수 있을 것 같습니다.


  • 2차배열과 For 인덱싱 기능을 사용하여 1차배열로 만들어 Row에 해당하는 1차배열을 Type Cast 함수로 변환
  • 2차배열 자체를 패턴화된 문자열로 함수를 이용하여 문자열로 변환

이 글에서는 패턴화된 문자열(Flatten To String)에 대한 내용을 좀더 알아보도록 합시다. 


패턴화된 문자열은 임의의 데이터를 가지고 와서 2진 타입의 패턴화된 데이터로 변환을 하는 함수입니다. 여기에 입력으로 사용하는 임의의 데이터는 단일값, 1차배열, 2차배열 모두 상관이 없습니다. 


따라서 2차배열에 대한 문자열로의 변환이 가능하게 되는거죠. 그리고 패턴화된 문자열로 변환한 문자열을 다시 실제 데이터로 변환하기 위해서는 문자열을 패턴화 해제 함수를 사용할 수 있습니다. 


문자열로부터 패턴화 해제(Unflatten From String) 함수를 사용하게 되면 2진 문자열 부분에 패턴화된 문자열로 함수를 사용하게 되면 위의 함수를 통해서 만든 패턴화 문자열을 기존의 데이터로 변환을 할 수 있습니다.



그럼 이 2개의 함수(패턴화된 문자열로, 문자열로 부터 패턴화 해제)를 이용하여 데이터를 변환해 보겠습니다. 


문자열로 변환 및 원 데이터로 복구시에 참고해야할 사항이 있습니다. 이 2개의 함수의 매개변수를 살펴보면 배열 또는 문자열 크기를 앞에 추가? 라는 파라미터와 바이트 순서 파라미터가 있습니다.

문자열 변환 과정시 2개의 함수 모두 동일한 옵션을 사용해야 합니다.

배열 또는 문자열 크기를 앞에 추가? 매개변수에 False의 값을 넣으면 아래와 같이 2차배열로 변환을 해도 1행에서 기존 2차배열이 다 나오게끔 변환이 됩니다. 이는 2진데이터로 변환된 기존의 배열의 행과 열 정보를 알 수 없기에 1행에 모든 데이터를 다 집어 넣는 것이죠.

아래와 같이 구현하여 코드를 실행해봅시다. 



생성된 배열과 다른 결과값이 나오지만, 1행에 모든 데이터가 포함이 된 것을 확인할 수 있습니다 



이 값을 True로 변경해서 적용을 해 봅시다. 



배열 또는 문자열 크기를 앞에 추가?를 True로 하여서 적용을 하면 기존 데이터와 변환된 데이터가 동일한 것을 확인할 수 있습니다. 




위의 2함수를 이용할 때 주의해야 하는 점은 앞에서도 언급한것과 같이 배열 또는 문자열 크기를 앞에 추가?와 바이트 순서는 2함수 모두 동일하게 적용해야 기존의 데이터를 패턴화된 문자열에서 변환 할 수 있습니다. 


이 글에서는 TCP, UDP 통신에서 2차배열을 송수신하기 위한 랩뷰에서의 방법을 알아보았습니다.

그럼 이만 줄이겠습니다.


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


댓글