LabVIEW GPIB 488 서브팔레트에 포함된 다음 함수는 LabVIEW 시리얼 폴링을 수행하는데 필수적입니다:
GPIB 시리얼 폴 (NI-488, ibrsp)은 시리얼 폴을 수행하고 단일 디바이스에서 상태 바이트 값을 반환합니다. 디바이스가 서비스를 요청했는지 확인하려면 프로그램이 Status Byte 값에서 RQS 비트를 수동으로 확인해야 합니다.
GPIB 기다림 (NI-488)은 특정 GPIB 버스에서 지정된 상태 워드 마스크가 나타내는 상태를 기다립니다. Status Word는 기타 GPIB 정보와 같이 SRQ 라인의 상태(비트 12, SRQI), 디바이스가 서비스(비트 11, RQS)를 요청했는지 여부를 포함하는 글로벌 변수(16비트)입니다. 통과된 벡터가 0이면 지정된 케이스를 기다리지 않고 ibsta 또는 Status Word를 업데이트합니다. 그러나 마스크가 비트 12(SRQI)를 확인하도록 설정된 경우, 함수는 GPIB 기다림에 주소가 지정된 특정 GPIB 보드에 대해 특정 라인이 지정될 때까지 기다립니다.
GPIB RQS 기다림 (NI-488에서 비트 11의 마스크가 포함된 ibwait)은 비트 11의 마스크와 함께 [GPIB 기다림] 함수를 사용하는 것과 비슷하지만 비트 12를 기다릴 때 GPIB 보드의 주소 대신 특정 디바이스 주소의 GPIB 주소를 사용하는 것과 비슷합니다. 이 함수는 특정 디바이스가 서비스 요청을 받을 때까지 기다리고, 보드(여러 디바이스가 연결될 수 있는 디바이스)가 서비스 요청을 받을 때까지 기다리지 않습니다. 이 함수는 RQS 비트가 지정되거나 타임아웃이 초과될 때까지 기다립니다.
다음 예는 LabVIEW GPIB 함수를 사용하여 SRQ 및 디바이스를 시리얼 폴링하는 방법을 보여줍니다.
LabVIEW 예제 1 (그림 3)에서 명령이 NI Instrument Simulator에 작성됩니다. 이 명령에는 작업 완료 이벤트가 이벤트 상태 레지스터(ESR)에 등록된 경우 서비스 요청(SRQ)을 생성하는 인스트루먼트에 대한 설명이 포함되어 있습니다. 처음 두 개의 명령은 서비스 요청 활성화 레지스터와 이벤트 상태 활성화 레지스터(IEEE-488.2 스펙)에 이 명령을 씁니다. 세 번째 명령은 인스트루먼트 시뮬레이터가 사인파를 생성하도록 요청하고, 마지막 명령은 작업 완료 이벤트를 생성합니다. 코드의 다음 섹션은 상태 워드의 비트 12를 확인하여 SRQ가 생성될 때까지 기다립니다. 생성된 경우, 디바이스 시뮬레이터에서 시리얼 폴을 수행하여 상태 바이트를 읽고 SRQ가 생성된 이유를 파악합니다. 비트 5가 설정되어 있고 비트 6이 설정되어 있는 경우(작업 완료 비트가 설정된 이벤트 상태 레지스터로부터), 컨트롤러는 디바이스 시뮬레이터에서 데이터를 읽습니다. ESR 레지스터를 지워야 합니다. 이렇게 하면 인스트루먼트가 원하지 않는 서비스 요청을 생성하지 못합니다.
그림 3. LabVIEW 예제 1
LabVIEW 예제 2(그림 4)는 디바이스가 서비스 요청을 기다리는 또 다른 방법을 보여줍니다. 그러나 이 마지막 예에서, 프로세서는 다른 작업을 수행하지 않고 정지하고 기다립니다. 첫 번째 예에서, 디바이스가 서비스를 요청할 때까지 기다리는 동안 다른 작업이 병렬로 실행되었을 수 있습니다.
그림 4. LabVIEW 예제 2