인스트루먼트와 통신하는 것은 인스트루먼트에 데이터를 전송하고 인스트루먼트로부터 데이터를 불러오는 것입니다. 인스트루먼트 드라이버를 사용하면 인스트루먼트에 보내거나 인스트루먼트에서 불러온 데이터를 포맷할 필요가 없는 경우가 많습니다. 이는 인스트루먼트 드라이버가 대신 포맷을 처리해주기 때문입니다. 그러나 인스트루먼트와 통신할 VI를 작성할 때는 데이터를 포맷해야 할 수도 있습니다.

메시지 기반 인스트루먼트와 통신할 때, 인스트루먼트의 올바른 명령어 문자열을 포맷하고 만들어야만 적절한 작업을 수행하거나 응답을 반환할 수 있습니다.

레지스터 기반 인스트루먼트 통신에는 표준이 없습니다. 각 디바이스가 다르게 작동하며, 해당 디바이스의 프로그램 방법을 배우려면 인스트루먼트 문서를 참조하는 것이 가장 좋습니다.

일반적으로 명령 문자열이나 쿼리는 텍스트와 숫자값의 조합입니다. 일부 인스트루먼트는 텍스트만으로 이루어진 명령 문자열을 요구하므로 사용자는 숫자값을 텍스트로 변환하여 명령 문자열에 추가해야 합니다. 마찬가지로 LabVIEW에서 인스트루먼트가 반환한 데이터를 사용하려면 데이터를 VI, 함수, 또는 인디케이터가 받을 수 있는 포맷으로 변환해야 합니다.

(Windows) 인스트루먼트 I/O 어시스턴트를 사용하여 인스트루먼트에 쿼리를 보내고 인스트루먼트가 반환하는 데이터를 포맷할 수 있습니다. 인스트루먼트 I/O 어시스턴트 익스프레스 VI를 블록다이어그램에 놓아 인스트루먼트 I/O 어시스턴트에 접근합니다.

문자열로 포맷 함수를 사용하여 명령 문자열을 만들어 인스트루먼트에 보내거나 다른 문자열 또는 숫자 데이터 타입을 초기 문자열에 추가합니다.

인스트루먼트로부터 불러온 데이터 포맷하기

인스트루먼트에 보낸 명령 문자열에 헤더와 트레일러가 포함되어 있는 것과 같이, 대부분의 인스트루먼트는 헤더와 트레일러가 있는 데이터를 반환합니다. 헤더는 일반적으로 반환된 데이터 포인트의 개수 또는 인스트루먼트 셋팅과 같은 정보를 포함합니다. 트레일러 정보는 데이터 문자열 끝에 단위나 기타 인스트루먼트 셋팅을 포함하는 경우가 많습니다. 인스트루먼트 문서는 각 데이터 전송에서 어떤 헤더와 트레일러 정보가 포함되어 있는지 설명해야 합니다. LabVIEW에서 반환된 데이터를 디스플레이하거나 분석하기 전에 우선 헤더와 트레일러 정보를 제거해야 합니다.

문자열 잘라내기 함수를 사용하여 문자열에서 헤더와 트레일러 정보를 분석하고 문자열 인디케이터에 디스플레이합니다. 문자열로부터 스캔 함수를 사용하여 문자열로부터의 데이터를 분석할 수 있습니다.

웨이브폼 전송

인스트루먼트는 또한 ASCII, 1 바이트 2진, 2 바이트 2진 포맷과 같은 다른 포맷으로도 데이터를 반환할 수 있습니다. 인스트루먼트 문서는 사용 가능한 포맷과 각 포맷을 유효한 데이터로 변환하는 방법을 설명합니다.

ASCII 웨이브폼

인스트루먼트가 ASCII 포맷으로 데이터를 반환하는 경우, 데이터를 문자 문자열로 볼 수 있습니다. 그러나 데이터를 숫자형 포맷에서 조작해야 하는 경우, 또는 데이터를 그래프에 표시해야 하는 경우에는 문자열 데이터를 숫자형 데이터로 변환해야 합니다. 예를 들어, 1,024개의 포인트로 구성되고 각 포인트의 값이 0과 255 사이인 웨이브폼을 가정합니다. ASCII 인코딩을 사용하는 경우, 각 데이터 값을 나타내는 데 최대 4 바이트가 필요합니다(값의 경우 최대 3바이트, 쉼표와 같은 분리자의 경우 최대 1바이트). 웨이브폼을 ASCII 문자열로 나타내려면 최대 4,096 바이트(4 바이트 1,024)와 함께 헤더와 트레일러를 위한 바이트가 필요합니다. 소수점/지수 문자열을 숫자로 함수를 사용하여 ASCII 문자열을 숫자 배열로 변환할 수 있습니다.

1 바이트 2진 웨이브폼

일부 인스트루먼트에는 데이터를 ASCII 포맷으로 전송하거나 모든 웨이브폼 데이터를 2진 포맷으로 보내는 옵션이 없습니다. 2진 포맷에 대한 표준이 없기 때문에 인스트루먼트 문서를 참조하여 정확히 어떻게 인스트루먼트가 데이터 값을 저장하는지 확인합니다. 일반적인 2진 포맷 중 하나는 1 바이트 2진입니다. 이 데이터 인코딩 타입을 사용하면, 인스트루먼트는 데이터를 전송하기 전에 각 데이터 조각을 8 비트 2진 값으로 변환합니다.

버스에서 1 바이트 2진 데이터를 읽으면 인스트루먼트는 문자 문자열로 데이터를 반환합니다. 그러나 문자는 예상되는 데이터에 대응되게 나타나지 않습니다. LabVIEW는 2진 숫자를 ASCII 문자값으로 해석하여 대응하는 문자를 디스플레이합니다. 예를 들어, 65의 값을 하나의 데이터 값으로 보내는 경우, 버스에서 문자 A를 읽습니다. 값이 13인 경우, 13은 보이지 않는 캐리지 리턴 문자에 대응하기 때문에 인쇄가능한 ASCII 문자가 없습니다.

인디케이터에서 마우스 오른쪽 버튼을 클릭한 후 바로 가기 메뉴에서 '\'코드 디스플레이를 선택하여 문자열의 보이지 않는 문자를 디스플레이할 수 있습니다. 캐리지 리턴 문자는 문자열 인디케이터의 \r입니다.

[분석] VI로 ASCII 문자열에서 숫자 데이터를 사용하거나 그래프 또는 차트에서 숫자 데이터를 디스플레이하려면, 반드시 2진 문자열을 숫자 배열로 변환해야 합니다. 인스트루먼트가 1,024 1 바이트 2진 인코드 값을 포함하는 2진 문자열을 보내는 경우, 웨이브폼은 1,024 바이트 + 헤더 정보만을 요구합니다. 2진 인코딩을 사용하면 각 값이 부호없는 8비트 정수라고 가정하여 각 데이터 값을 나타내는 1 바이트만 필요합니다. 문자열 잘라내기 함수와 문자열을 바이트 배열로 함수를 사용하여 2진 문자열을 정수의 배열로 변환할 수 있습니다.

노트 2진 데이터를 수집할 때, 트레일러 정보의 첫번째 문자를 검색하기보다는 데이터 크기를 사용하여 데이터를 추출하는 것이 좋습니다. 문자는 2진값의 일부일 수도 있기 때문입니다.

2바이트 2진 웨이브폼

데이터가 2 바이트 2진 포맷일 때, 2진으로 인코드되며 1 바이트 2진 포맷과 유사한 ASCII 문자로 전송됩니다. 그러나 데이터의 16 비트 또는 두 개의 ASCII 문자는 각 데이터값을 나타냅니다. 이 포맷은 1 바이트 2진 포맷보다 두 배나 많은 공간을 차지하지만, ASCII-포맷 데이터보다 더 효율적으로 패킹되어 있습니다.

예를 들어 웨이브폼 데이터를 2진 표시법으로 전송하는 오실로스코프를 가정합니다. 이 예제에서 웨이브폼이 1,024 데이터 포인트로 구성되어 있으며 각 값이 2 바이트 부호있는 정수라고 가정합니다. 따라서 전체 웨이브폼은 2,048 바이트 + 5 바이트 헤더와 2 바이트 트레일러가 필요합니다. 5바이트 헤더를 삭제한 후 문자열로부터 패턴화 해제 함수를 사용하여 웨이브폼 문자열을 16비트 정수의 배열로 변환할 수 있습니다.

데이터가 2 바이트 2진 포맷으로 전달될 때는 사용자가 받는 바이트의 순서를 아는 것이 중요합니다. 2 바이트 조합 qH의 대응하는 정수값은 29,000이나 바이트 순서가 반대인 Hq의 대응하는 정수값은 18,545입니다.

노트 일부 인스트루먼트에서는 바이트 순서를 설정할 수 있으며, 일부 인스트루먼트에서는 바이트 순서가 고정되어 있습니다. 특정한 인스트루먼트 바이트 정보는 인스트루먼트 문서를 참조하십시오.

높은 바이트를 먼저 받는 경우, 정수값으로 변환하기 전에 바이트의 순서를 바꿔야 합니다. 문자열로부터 패턴화 해제를 사용하여 바이트 순서를 바꿉니다.