LabVIEW에서 NI-VISA를 사용하여 2진수 또는 16진수 데이터 주고받기

업데이트 됨 Jan 9, 2019

해당 제품

Software

  • LabVIEW Base
  • LabVIEW Full
  • LabVIEW Professional

Driver

  • NI-VISA

문의사항

제 어플리케이션에서는 ASCII 문자가 아닌 2진 또는 16진수 값을 주고받고싶습니다. 하지만 LabVIEW의 VISA 읽기와 VISA 쓰기 함수는 문자열을 유효한 데이터 유형으로 만 받아들입니다. LabVIEW VISA 함수로 2진수 또는 16진수 데이터를 어떻게 받아올 수 있습니까?

해결책

2진수 데이터 나 16진수 데이터를 보내려면 먼저 데이터를 문자열 형식으로 변환해야 VISA 쓰기 함수로 전달할 수 있습니다. 마찬가지로 VISA 읽기에서 출력하는 문자열 값을 원하는 형식으로 변환 있습니다. LabVIEW VISA 함수는 데이터 입력 출력을 위해 문자열 값을 요구하지만 그 값이 표준 ASCII 문자로 제한되지 않습니다 문자는 부호없는 8비트 정수 (U8)이며 가능한 값의 범위는 0부터 255까지입니다
 
원본 데이터의 형식에 따라 2진 값을 전송하는 데 사용할 수있는 몇 가지 방법이 있습니다.
 
  • 16진수 값을 전송, 수신 된 데이터를 HEX 포맷 표시.
16진수(hex) 상수값을 전송하는 가장 간단한 방법은 16진수 표시로 구성된 문자열 상수(상수를 마우스 오른쪽 버튼으로 클릭하고 표시 형식…  선택하여 구성할   있습니다)를 사용하는 것입니다. 이렇게 하면 문자열 컨트롤이나 상수에 ASCII 문자 16진수 값을 으며, 값은 VISA 쓰기 함수에 직접 전달 있습니다. VISA 읽기로 데이터를 읽을 에도, 16진수 표시 모드의 문자열 인디케이터에 직접 연결하여 16진수 값을 프런트 패널에 표시 있습니다
 
16진수 상수값 송신 및 수신 : 

 
  • U8 정수 전송 (단일 값 또는 배열).
단일 바이트의 데이터 (U8 정수)를 전송하려면 배열 만들기 함수를 사용하여 단일 요소들로 배열을 형성해야합니다. 바이트 배열을 문자열로 연산자를 사용하여 VISA 쓰기 호환되는 문자열을 생성 있습니다배열 만들기 필요하지 않은 경우를 제외하면, 동일한 방법으로 바이트 배열을 전송할 있습니다.
 
단일 U8 정수 전송 및 수신 :


U8 정수의 배열 전송 및 수신 :
  • U8 이외 값 또는 배열값 전송.
전송할 2진 데이터가 1바이트보다 큰 경우, 값 또는 배열을 U8 Array로 포맷 변환 한 다음 VISA 쓰기에 허용되는 문자열로 변환해야합니다. VISA 읽기에서 얻은 문자열을 2 데이터 포맷으로 변환하기 위해 동일한 작업이 역순으로 수행니다단일 데이터 또는 배열과 함께 사용할 있습니다
 
멀티 바이트 값 전송 및 수신 : 


참고 : 1바이트 (I16, U32, DBL 등)보다 큰 바이너리 데이터 유형을 사용하는 경우 원격 장치의 Endianness (바이트 순서)이 문제 될 수 있습니다. LabVIEW는 기본적으로 Big Endian이므로 Little Endian 장치와 통신하려면 데이터의 바이트 순서를 변경해야합니다.
 

이 글이 도움이 되셨습니까?

도움 안됨