*OPC? 쿼리 동기화
이 방식이 가장 쉬우면서 가장 자주 사용되는 동기화 방식입니다.
*OPC? 쿼리를 기기에 전송하면 기기는 보류 중인 모든 작업이 완료될 때까지 응답을 지연합니다. 따라서 프로그램이 기기에서 *OPC? 쿼리에 응답할 때를 기다리는 VISA Read 연산에서 프로그램 유휴 기간이 발생합니다. 여기에서 중요한 것은 응답 자체가 아니라 그에 따라 발생하는 지연입니다.
중요! *OPC?는 쿼리이므로 사용자가 VISA Read() 함수를 사용해 기기에서 보내는 응답을 읽어야 합니다. 그렇지 않을 경우 기기는 다음 쿼리로 'Query Interrupted'(쿼리 중단됨) 에러를 발생합니다. 이는 *OPC? 쿼리뿐만 아니라 모든 쿼리에 중요합니다.
여기에서 한 가지 파라미터, 즉, VISA Timeout을 추가로 설명해야 합니다. VISA Timeout은 VISA Read 연산이 VISA Timeout 에러로 종료되기 전까지 대기할 수 있는 최대 시간을 정의하는 메커니즘을 정의합니다. 이 값은 개별적이고 현재 작업의 지속시간에 따라 달라지기 때문에 VISA Timeout을 적절히 설정해야 합니다. Timeout(시간 초과)이 너무 작을 경우 정상 연산 중 불필요한 에러가 발생할 수 있고 Timeout이 너무 클 경우에는 실제 에러가 발생했을 때 프로그램이 응답하지 않을 수 있습니다.
장점:
- 간단하며 대부분의 경우에 효과적입니다.
- 세션의 제어 채널을 사용하지 않으므로(STB 폴링 방법 참조) RawSocket및 Serial연결에서도 작동합니다.
단점:
- 기기가 응답할 때까지 기기와의 통신을 차단합니다. 이 점은 긴 연산에서 애플리케이션 응답이 없을 때 심각한 문제가 될 수 있습니다.