해결책
데이터 읽기에는 두 가지 측면이 있습니다. 실제 신호가 디지털화되는 속도("얼마나 빠르게?")와 하드웨어 FIFO에서 소프트웨어가 한 번에 얼마나 많은 데이터를 가져오는지("얼마나 많이?")입니다. 이러한 하드웨어-소프트웨어 구성은 서로 의존적입니다.
하드웨어 측면에서 DAQmx 타이밍 함수는 데이터 수집 보드의 디바이스/센서에서 하드웨어 FIFO로의 데이터 흐름 속도를 결정합니다. 소프트웨어 측면에서는 DAQmx 읽기 함수는 PC 버퍼에서 소프트웨어로 데이터 전송되는 속도 결정합니다. 아래 그림을 참조하십시오:

파트 1: 디바이스/센서에서 DAQ 보드의 하드웨어 FIFO로
개요
DAQmx 타이밍 함수는 디바이스에서 샘플을 수집하는 수와 속도를 제어합니다. 이 기능은 다음 세 가지 샘플 모드에서 작동합니다:
- 유한 (Finite),
- 연속 (Continuous),
- 하드웨어 타이밍 단일 지점 (Hardware timed single point).
선택한 모드는 수집된 샘플 수에 영향을 줍니다.
DAQmx 타이밍 함수는 다형성입니다. 여기서 설명하는 인스턴스는 샘플 클럭입니다. DAQmx 타이밍의 다른 인스턴스에 대한 자세한 정보는 DAQmx 도움말을 참조하십시오.
얼마나 많이?
유한 수집의 경우 DAQmx 타이밍 함수의 채널당 샘플 입력은 각 채널에서 읽는 샘플 수를 결정합니다. 즉, 채널당 샘플은 수집할 데이터 청크(chunk)의 크기를 설정합니다.
연속 수집의 경우 채널당 샘플은 각 채널에 할당된 PC 버퍼의 크기를 결정합니다.
얼마나 빠르게?
DAQmx 타이밍 함수의 Rate 입력은 샘플을 수집하고 하드웨어 FIFO에 저장하는 속도를 결정합니다. 속도를 지정하는 값은 DAQmx 타이밍 함수의 소스 입력에 지정된 타임베이스에 따라 달라집니다. 지정된 속도는 소스의 분수여야 합니다. 예를 들어, X 시리즈 카드의 기본 소스는 온보드 클럭 (100MHz)입니다. 달성 가능한 수집 속도에 대한 자세한 내용은 다음을 참조하십시오.
2 부: 하드웨어 FIFO에서 PC 버퍼 및 프로그래밍 환경까지
얼마나 많이?
DAQmx를 읽기 함수의 채널 당 샘플 수 입력은 PC 버퍼에서 프로그래밍 환경으로 가져올 샘플 수를 결정합니다. 선택한 데이터 전송 메커니즘 (아래 글 머리 기호)에 따라 하드웨어 FIFO에서 PC 버퍼로 샘플을 실제로 가져오는 방법이 결정됩니다. 더 자세한 정보는 데이터 전송 메커니즘 - NI-DAQmx 사용자 매뉴얼을 참조하십시오.
- DMA
- 인터럽트 요청 (Interrupt Requests)
- 프로그래밍된 I/O (Programmed I/O)
- USB 벌크 전송 (USB Bulk)
프로그래밍된 I/O 방법을 사용할 경우, DAQmx 읽기 함수는 하드웨어 FIFO 자체에서 직접 샘플을 가져옵니다. 하드웨어 타이밍이 지정된 다른 모든 전송 메커니즘을 사용할 경우, 샘플 수는 DAQmx 타이밍 함수에서 지정된 속도의 1/10이되는 것이 좋습니다. 예를 들어, DAQmx 타이밍 함수의 속도 입력이 1000 (Hz)인 경우 DAQmx 읽기 함수의 채널당 샘플 수는 100개를 넘지 않아야 합니다. 이는 PC 버퍼 덮어쓰기 또는 언더플로우 에러를 방지할 수 있습니다.
얼마나 빨르게?
프로그래밍된 I/O를 사용할 경우, DAQ 보드의 하드웨어 FIFO에서 프로그래밍 환경으로 샘플을 읽는 속도는 DAQmx 읽기 함수가 호출되는 빈도에 따라 다릅니다. DAQmx 읽기 함수는 종종 while 루프 내에 있기 때문에 루프의 반복 속도가 함수 실행 속도를 결정합니다. 소프트웨어의 속도는 프로세서의 속도와 동시에 실행 중인 프로세스 수에 따라 달라집니다.
다른 데이터 전송 메커니즘을 사용할 경우, 하드웨어 FIFO에서 PC 버퍼로 샘플을 가져오는 속도는 프로그램의 실행 속도와 무관합니다. 이러한 이유로, 프로그래밍된 I/O가 아닌 방식을 사용하는 것이 일반적으로 더 바람직하며, 이는 PC 버퍼를 활용하여 여러 샘플을 시간에 맞춰 저장하고 DAQmx Read 함수가 이를 읽을 수 있도록 합니다.