Measurement Studio에서 DAQmx 장비 ai/StartTrigger를 동기화하기 위해서 명시적으로 하위 태스크(Slave Task)를 먼저 시작해야 합니다.



주요한 소프트웨어:
주요한 소프트웨어 버전: 7.4
문제가 해결된 소프트웨어 버전: N/A
부차적인 소프트웨어: Measurement Studio

문제점: 두 개의 DAQmx 장치를 동기화하기 위해, 하나의 장치에 있는 ai/StartTrigger 라인을 이용하여 다른 장치를 위한 시작 트리거로 구성할 때, 하위 장치(slave device)를 시작 펄스를 놓칩니다. 이 동기화 동작이 정상적으로 수행될 수 있도록 하는 방법이 있습니까?

솔루션: 두개의 DAQmx 장비를 동기화하기 위해, 하나의 장치/태스크가 가지고 있는 시작 트리거(ai/StartTrigger)를 이용하여 다른 장치/태스크와 동기화할 수 있습니다. 그러나, 하위 태스크(slave task)가 상위 태스트(master task)로부터 시작 트리거 펄스를 받기위해, 상위 태스크보다 하위 태스크가 먼저 실행되어야만 합니다; 그렇지 않을 경우 시작 트리거를 놓칠 가능성이 존재합니다. 만약 하위 태스크가 먼저 시작하지 않을 경우, 사용자가 태스크를 실행시키거나 MStudio API functions BeginRead*가 비동기화된 읽기 기능을 수행할 때 이것은 불분명한 동작을 야기시킬 것입니다. 심지어 하위 태스크에 의해 BeginRead*function이 호출되었더라도 하위 태스크는 암시적으로 먼저 시작할 것이라고 보장할 수 없습니다. 그러면 BeginRead*function 호출이 비동기 데이터를 검색하기 위해 새로운 스레드를 시작하고, 이 때문에 어느 태스크를 먼저 시작할 것인지 결정하기 위해 상위 태스크와 하위 태스크 간 경쟁상태에 들어가게 됩니다. 결국, 어느 것이 먼저 시작될 것인지 알 수 없기 때문에 스레드를 스케줄링 할 수 없어 운영체제는 임의의 순서로 재배열합니다. 따라서 당신은 하위 태스크를 시작하는 함수를 호출하고 비동기식 읽기 동작을 시작하기 전에 상위 태스크를 호출해야만 합니다.

관련 링크:

첨부:





리포트 날짜: 08/31/2004
마지막 업데이트: 04/19/2015
문서 번호: 3CU9BFUP