定時(shí)與觸發(fā)的學(xué)習(xí)
在使用DAQmx API函數(shù)控制數(shù)據(jù)采集卡進(jìn)行數(shù)據(jù)采集時(shí),會(huì)在PC創(chuàng)建一個(gè)數(shù)據(jù)緩沖區(qū),之前設(shè)置的通道采樣數(shù)大小一般是1000,有時(shí)設(shè)置4096,偶爾會(huì)遇到“設(shè)置的采樣數(shù)超出數(shù)據(jù)緩沖區(qū)”之類的錯(cuò)誤,現(xiàn)在來看看DAQmx具體是如何分配數(shù)據(jù)緩沖區(qū)大小的。
(1)有限采樣:DAQmx劃分的緩沖區(qū)大小與每通道采樣數(shù)的數(shù)值相等。
(2)連續(xù)采樣:DAQmx劃分的緩沖區(qū)大小與每通道采樣數(shù)的數(shù)值相等,但是當(dāng)每通道采樣數(shù)的值小于下表所列的值時(shí),DAQmx使用下表中的值:
采樣率緩沖區(qū)大小未指定速率10 kS0-100 S/s1 kS101-10,000 S/s10 kS10,001-1,000,000 S/s100 kS>1,000,000 S/s1 MS從上表中,初略可見當(dāng)設(shè)置采樣率低于10kS/s時(shí),緩沖區(qū)至少可以存放1s內(nèi)采集的數(shù)據(jù)量,當(dāng)采樣率高于10kS/s時(shí),緩沖區(qū)能存放的數(shù)據(jù)量就遠(yuǎn)小于1s內(nèi)采集的數(shù)據(jù)了,這種情況下需1s內(nèi)進(jìn)行緩沖區(qū)數(shù)據(jù)的多次讀,防止緩沖區(qū)數(shù)據(jù)被覆蓋掉。
(3)當(dāng)定時(shí)函數(shù)的采樣模式設(shè)置為硬件定時(shí)單點(diǎn)采集時(shí),NI-DAQmx不會(huì)創(chuàng)建緩沖區(qū)。
NI-DAQmx API是使用循環(huán)緩沖區(qū)的,即讀取掉緩沖區(qū)前面部分的數(shù)據(jù)后,當(dāng)采集的數(shù)據(jù)到達(dá)緩沖區(qū)尾部時(shí),會(huì)將新采集的數(shù)據(jù)放到緩沖區(qū)開始數(shù)據(jù)已被讀取的區(qū)域。DAQmx數(shù)據(jù)傳輸方式多采用DMA方式實(shí)現(xiàn)。