안녕하세요. 구스입니다. 오늘은 LabVIEW와 NI XNET을 이용한 린통신에 대해서 알아볼까 합ㄴ디ㅏ. LIN통신은 다른 통신과는 달리 NI XNET 함수를 사용할 때 Data를 무조건 넣어야 합니다. Data가 비어 있는 상태로 데이터를 전송하게 되면 LabVIEW 코드 상에서 에러를 발생시키며 데이터 전송이 되지 않습니다. LIN통신은 CAN통신과 달리 스케줄링을 사용합니다. LIN 통신에서 Header만을 보내기 위해서는 이 스케줄링을 사용하면 됩니다. 먼저 LIN통신에서 사용하는 Database를 한번 살펴봅시다. LIN 데이터베이스에는 Schedules 부분이 있습니다. Schedules 부분의 의미는 LIN_CONTROL, LIN_STATE라는 메시지가 10ms 마다 메시지를 주고 받는다는..
안녕하세요. 구스입니다. 랩뷰는 VAS(Vision Assistant Software) 혹은 VDM(Vision Development Module)을 통해서 영상 수집 및 영상 처리가 가능하도록 도와줍니다. 특히 VAS는 Vision Assistant를 지원하여 사용자가 조금더 쉽게 비전 관련 프로그래밍이 가능하도록 Express 함수 기반으로 제공하고 있습니다. 이 글에서는 LabVIEW에서 수집된 영상의 일부분을 잘라내고, 잘라낸 이미지를 저장하는 방법에 대해서 알아보도록 하겠습니다. 1. 랩뷰에서 이미지 잘라내기 랩뷰에서 이미지를 잘라낼 때 사용하는 함수는 IMAQ Extract 함수입니다. 이 함수를 통해서 사용자는 카메라 혹은 파일에서 불러온 이미지의 소스 중 일부분을 잘라낼 수 있습니다. 이미..
안녕하세요. 구스입니다. 랩뷰는 다른 장비와의 통신을 사용할 때 사용하는 통신 프로토콜을 대부분 지원하고 있습니다. 대표적인 통신프로토콜에는 TCP/IP, UDP와 같이 이더넷 기반의 통신과 RS232, RS485와 같은 시리얼통신으로 구분할 수 있습니다. LabVIEW는 이러한 통신에 데이터를 송수신할 때 문자열로 보내고 받습니다. 하지만 C, C#, 파이썬등에서는 Byte 배열 기반으로 데이터를 송수신하게 되죠. 따라서 랩뷰와 다른 언어와의 통신에서는 데이터를 맞춰줘야 하는 작업이 필요합니다. 바이트 배열이라함은 아스키코드 기반으로 데이터를 전달하는 것을 의미합니다. 아래의 아스키코드의 Dec의 값이 실질적으로 바이트 배열의 값입니다. 랩뷰에서 1이라는 문자열을 보내면 다른 언어에서는 Char 값이 ..
안녕하세요. 구스입니다. 이전 자료에서 TCP, UDP 통신을 위한 2차배열을 문자열로 변환하는 내용(LabVIEW 2D Array To String)에 대해서 알아보았습니다. 이 글에서는 위의 함수를 이용해서 실질적으로 TCP/IP 통신 기반을 구현해 볼려고 하는데요. LabVIEW에서 2차배열을 문자열로 변환하는 과정을 이해하실려면 아래의 링크를 참조하세요. 2016/02/18 - [National Instruments/LabVIEW] - [랩뷰] TCP, UDP 통신을 위한 이차배열을 문자열로 변환 (2D Array To String) TCP/IP 통신은 서버-클라이언트 기반의 통신입니다. TCP/IP에 대해서 좀더 알아보고자 하면 아래와 같습니다. 컴퓨터 간의 주고받는 메시지를 전송할 때 에러가 ..
안녕하세요. 구스입니다. 이 글에서는 LabVIEW에서 TCP, UDP 통신하는 방법에 대해서 이야기해볼까 합니다. LabVIEW는 TCP, UDP 통신을 지원하는 함수를 제공하고 있습니다. 이 함수를 사용하면 다른 언어와는 달리 편리하게 통신 환경을 구성할 수 있는데요. C, Python, C#의 경우에는 Socket 함수등을 이용하여 byte배열로 데이터를 전송하는 반면 LabVIEW는 다른 언어들과 달리 String 타입의 ASC2 문자를 이용하여 데이터 송수신을 합니다. 따라서 이차배열을 데이터로 송수신하기 위해서는 문자열로 변환하는 과정(LabVIEW 2D Array To String)이 필요합니다. 일반적으로 일차배열이나 단일 값을 출력하는데는 타입 캐스트 함수를 사용하게 됩니다. 타입 캐스트..