사용자 공간의 IIO 드라이버를 사용하여 ADC (AD7924)의 값을 읽습니다. 트리거 된 수집 작업 (트리거 생성, 할당, ADC 채널 활성화, 버퍼 크기 설정 및 활성화)을위한 모든 단계를 수행했습니다. 이 코드는 다음과 같습니다.IIO Linux : 버퍼가 가득 찼을 때 어떻게 알 수 있습니까?
// Create IIO trigger
system("echo 0 > /sys/devices/iio_sysfs_trigger/add_trigger");
// Assign IIO trigger "sysfstrig0" to IIO AD7923 driver
system("echo sysfstrig0 > /sys/bus/iio/devices/iio:device0/trigger/current_trigger");
// Enable scan of the first 3 channels for AD7924
system("echo 1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage0_en");
system("echo 1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage1_en");
system("echo 1 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage2_en");
system("echo 0 > /sys/bus/iio/devices/iio:device0/scan_elements/in_voltage3_en");
// Dim IIO buffer and enable it
sprintf(CommandeADC, "echo %d > /sys/bus/iio/devices/iio:device0/buffer/length", NB_ECH);
system(CommandeADC);
system("echo 1 > /sys/bus/iio/devices/iio:device0/buffer/enable");
//Launch acquisition...
system("echo 1 > /sys/bus/iio/devices/trigger0/trigger_now");
이렇게 구성된 시스템은 수집을 처리하고 전체 버퍼를 채 웁니다. 일단 꽉 차면 획득이 중단됩니다.
제 질문은 : 버퍼가 완전히 채워진 때를 어떻게 알 수 있습니까? 나는 iio : device0에있는 파일에서 poll 또는 select 함수를 사용하여 파일 기술자의 변경 사항을 확인하기 위해 /dev/에 시도했지만 POLLIN 이벤트를 확인하여 수집이 시작된 시점 만 알 수있었습니다.