태스크 시작 함수/VI 사용하기
- 업데이트 날짜:2025-12-03
- 2분 (읽기 시간)
태스크를 명시적으로 시작하려면, 태스크 시작 함수/VI를 호출하십시오. 태스크를 암시적으로 시작하는 다른 작업을 수행하면 태스크가 자동으로 시작됩니다. 예를 들어 읽기 함수/VI 또는 쓰기 함수/VI를 호출했을 때 이미 시작된 태스크가 없다면 태스크가 암시적으로 시작될 수도 있습니다. 이 동작을 지정하는 방법은 사용자 태스크가 수행하는 작업에 따라 달라집니다. 기본으로, 단일 샘플에 대한 읽기 함수/VI와 쓰기 함수/VI는 자동으로 태스크를 시작합니다.
유한 측정 태스크 시작하기
유한 측정을 수행할 태스크를 지정한 경우, 태스크 시작 함수/VI를 호출하거나 DAQmx 읽기 함수/VI의 기본 동작을 변경할 필요가 없습니다. 읽기 함수/VI를 호출하면 태스크가 시작되고, 유한 측정을 수행하고, 마지막 샘플을 읽은 후 태스크가 정지됩니다. 태스크는 사용자가 읽기 작업을 호출하기 전 상태로 돌아갑니다. 그러나 태스크가 정지된 후 추가적인 읽기 작업을 수행해야 하는 경우(즉 버퍼의 이전 위치에서 읽기 작업을 하려는 경우), 다음 두 가지 이유때문에 기본 동작으로는 충분하지 않습니다:
- 태스크는 확인됨 상태로 돌아가고 샘플에는 더 이상 접근할 수 없습니다.
- 향후에 읽기 함수/VI를 호출하면 완료된 작업에서 읽는 것이 아니라 새로운 읽기 작업이 시작됩니다.
이러한 경우에는 동작 파라미터가 지정으로 설정된 태스크 컨트롤 함수/VI를 호출하여 태스크를 명시적으로 지정합니다. 그 다음 초기 읽기 작업을 수행한 후와 이후의 읽기 작업을 수행하기 전에 읽기 자동 시작 속성/프로퍼티를 거짓으로 설정합니다.
연속 측정 태스크 시작하기
연속 측정의 경우 태스크 시작 함수/VI를 명시적으로 호출하고, 원하는 읽기 작업을 수행하고, 태스크 정지 함수/VI를 호출하여 연속 측정을 정지합니다. 루프에서 읽기 작업을 수행할 때(읽기가 단일 샘플을 요청하거나, 요청할 때 읽거나, 여러 샘플을 하드웨어 타이밍에 의해 읽기 작업을 수행하거나에 관계 없음) 루프에 들어가기 전에 태스크 시작 함수/VI를 호출하고 루프에서 나간 후에 태스크 정지 함수/VI를 호출합니다.
아날로그 출력 태스크 시작하기
쓰기 함수/VI의 동작은 더욱 복잡합니다. 쓰기 함수/VI를 호출하면 언제나 태스크가 적어도 지정됨 상태 이상으로 변환됩니다. 태스크가 실행 상태까지 변환되는지 여부는 자동 시작 파라미터의 값에 따라 달라집니다.
단일 샘플 쓰기 작업의 경우 쓰기 함수/VI의 단일 샘플 버전을 호출하십시오. 이 호출은 태스크를 암시적으로 시작하고, 단일 샘플을 쓰고, 태스크를 정지합니다. 여러 샘플을 요청할 때 쓰기 작업의 경우 쓰기 함수/VI를 호출하지만 기본이 거짓으로 설정되어 있는 자동 시작 파라미터를 참으로 바꿔줘야 합니다. 이 호출은 태스크를 암시적으로 시작하고, 여러 샘플을 쓰고, 태스크를 정지합니다.
여러 샘플을 하드웨어 타이밍에 의해 쓰기 작업의 경우, 우선 쓰기 함수/VI를 호출하여 생성하는 샘플을 쓰고, 명시적으로 태스크 시작 함수/VI를 호출하고, 완료될 때까지 기다림 함수/VI를 호출하여 샘플이 생성되기를 기다린 다음, 명시적으로 태스크 정지 함수/VI를 호출합니다.
쓰기 함수/VI의 자동 시작 파라미터가 참으로 설정된 상태(명시적으로 참으로 설정했거나 단일 샘플 쓰기 함수/VI를 사용하기 때문에)에서 하드웨어 타이밍에 의한 생성을 수행하려고 시도하면, 작업이 실패할 수도 있습니다. 사용자가 쓰는 샘플이 웨이브폼 생성에 맞춰 디바이스에 전송되지 않기 때문입니다. 따라서 하드웨어 타이밍에 의한 생성을 수행할 때에는 태스크를 시작하기 전에 적어도 생성하는 웨이브폼의 일부분을 쓰도록 하십시오.
태스크 시작 함수/VI로 성능 개선하기
꼭 필요하지 않더라도 명시적으로 DAQmx 태스크 시작 함수/VI와 DAQmx 태스크 정지 함수/VI를 호출해야 하는 경우가 있습니다. 루프 내에서 읽기 함수/VI나 쓰기 함수/VI를 호출할 때 루프에 들어가기 전에 태스크 시작 함수/VI를 명시적으로 호출하고 루프에서 나간 후에 태스크 정지 함수/VI를 호출하면 성능을 크게 향상시킬 수 있습니다. 루프에 들어가기 전에 명시적으로 태스크 시작 함수/VI를 호출하지 않으면, 태스크는 읽기나 쓰기 작업을 수행하기 전에 암시적으로 현재 상태가 실행 상태로 변환됩니다. 읽기나 쓰기 작업이 완료된 후, 태스크는 명시적으로 실행 상태에서 다시 이전 상태로 변환됩니다. 이러한 암시적 상태 변환이 루프가 반복될 때마다 발생하므로 비효율적입니다.