소프트웨어 이벤트는 DAQ 이벤트 세트에 비동기식 알림 메커니즘을 제공합니다. 하드웨어 이벤트와는 달리, 소프트웨어 이벤트에서는 스레드를 사용하여 데이터를 사용할 수 있을 때까지 기다릴 필요가 없습니다. 이벤트 기반 프로그래밍을 사용하여, 멀티스레드 어플리케이션을 개발하지 않고도 데이터를 기다리는 동안 계속해서 작업을 수행하는 어플리케이션을 쓸 수 있습니다.

NI-DAQmx에는 다음 소프트웨어 이벤트가 포함되어 있습니다:

  • N 샘플 당 수집한 것을 버퍼로 이벤트—사용자가 지정한 샘플 개수가 디바이스에서 PC 버퍼로 쓰였을 때 발생합니다. 이 이벤트는 버퍼된 태스크를 지원하는 디바이스에서만 작동합니다.
    노트 AO 시리즈, E 시리즈, M 시리즈 디바이스와 같은 일부 디바이스에서는, DMA를 데이터 전송 메커니즘으로 사용하는 경우 샘플 간격은 버퍼 크기에 균등하게 나뉘어져야 합니다. 예를 들어 버퍼 크기가 1,000 샘플인데 이 소프트웨어 이벤트에 102를 지정하면 에러가 발생합니다. 그러나 100을 지정하면 에러가 발생하지 않습니다. IRQ를 데이터 전송 방법으로 사용하는 경우, 값은 균등하게 나뉘어질 필요가 없습니다. 그러나 IRQ의 경우 데이터 전송 요청 조건 속성/프로퍼티는 이 소프트웨어 이벤트가 언제 발생하는지 여부에 영향을 미칠 수 있습니다.
  • N 샘플 당 버퍼로부터 전송 이벤트 간격—사용자가 지정한 샘플 개수가 PC 버퍼로부터 디바이스에 쓰였을 때 발생합니다. 이 이벤트는 버퍼된 태스크를 지원하는 디바이스에서만 작동합니다.
    노트 AO 시리즈, E 시리즈, M 시리즈 디바이스와 같은 일부 디바이스에서는, DMA를 데이터 전송 메커니즘으로 사용하는 경우 샘플 간격은 버퍼 크기에 균등하게 나뉘어져야 합니다. 예를 들어 버퍼 크기가 1,000 샘플인데 이 소프트웨어 이벤트에 102를 지정하면 에러가 발생합니다. 그러나 100을 지정하면 에러가 발생하지 않습니다. IRQ를 데이터 전송 방법으로 사용하는 경우, 값은 균등하게 나뉘어질 필요가 없습니다. 그러나 IRQ의 경우 데이터 전송 요청 조건 속성/프로퍼티는 이 소프트웨어 이벤트가 언제 발생하는지 여부에 영향을 미칠 수 있습니다.
  • 완료 이벤트—태스크가 실행을 완료하거나 에러가 발생하여 태스크가 종료되었을 때 발생합니다. 태스크 종료를 유발하지 않고도 복구할 수 있는 에러의 경우에는 이 이벤트가 발생하지 않습니다. 태스크 정지 함수/VI를 호출하여 실행 완료와 비슷한 조치를 취하는 경우에도 이 이벤트는 발생하지 않습니다.
  • 신호 이벤트—지정된 하드웨어 신호가 일어날 때 발생합니다. 지원되는 신호에는 카운터 출력 이벤트, 변경 감지 이벤트, 샘플 완료 이벤트, 샘플 클럭 등이 포함됩니다.