유한 버퍼 크기로 연속 수집 및 생성
- 업데이트 날짜:2025-12-03
- 1분 (읽기 시간)
NI-DAQmx API는 다음 그림과 같이 순환 버퍼를 사용합니다. 입력 작업의 경우, 버퍼가 채워지는 동안 데이터의 부분을 버퍼에서 읽습니다. 출력 작업과 마찬가지로, 버퍼가 비워지는 동안 버퍼의 일부를 쓸 수 있습니다. 순환 버퍼를 사용하면 NI-DAQmx가 수집한 데이터를 불러오는 동안 디바이스가 백그라운드에서 연속적으로 데이터를 수집하도록 설정할 수 있습니다.
연속 작업이 버퍼의 끝에 도달하면 처음으로 돌아가서 같은 버퍼를 다시 채웁니다(또는 출력 작업의 경우 버퍼에서 읽음). 사용자 어플리케이션은 데이터가 버퍼 내의 한 위치에서 순환 버퍼로 들어가는 동안 다른 위치에서 블록 단위로 데이터를 불러와야 합니다. 따라서 새 데이터가 읽지 않은 데이터를 덮어쓰지 않습니다.
순환 버퍼는 많은 어플리케이션에서 잘 작동하지만, 이러한 수집 타입에서 두 가지 문제가 발생할 가능성이 있습니다: 사용자 어플리케이션이 들어가는 데이터보다 빨리 버퍼에서 데이터를 불러오려고 하거나, NI-DAQmx가 버퍼에 데이터를 덮어쓰기 전에 사용자 어플리케이션이 버퍼에서 데이터를 불러오지 않습니다. 사용자 어플리케이션이 아직 데이터를 수집하지 않은 버퍼에서 데이터를 읽으려고 하면 NI-DAQmx는 데이터가 수집될 때까지 기다린 후 데이터를 반환합니다. 사용자 어플리케이션이 순환 버퍼에서 너무 느리게 데이터를 읽는 경우, 덮어쓰기 때문에 데이터 일부가 손실되었다는 에러가 발생합니다. 이런 식으로 데이터를 손실해도 큰 문제가 되지 않는 경우에는 덮어쓰기 모드 속성/프로퍼티의 셋팅을 변경하십시오.