NI-DAQmx API使用循环缓冲区,如下图所示。对于输入操作,当缓冲区中有数据时,部分数据从缓冲区读取。同理,对于输出操作,当缓冲区被清空时,可往缓冲区中写入部分数据。可使用循环缓冲区,设置当NI-DAQmx获取采集到的数据时,设备在后台连续采集数据。



当连续操作到达缓冲区的末端,缓冲区将会清空并被重新写入(如是输出操作,则是读取)。输入应用程序必须按块从缓冲区的一个位置获取数据,当数据进入循环缓冲区的另一个位置时,新的数据不会覆盖未读数据。

循环缓冲区可用于大多数应用,但是这种采集模式可能会产生两个问题:第一,应用程序从缓冲区获取数据的数据可能快于数据存入缓冲区的速度,第二,在NI-DAQmx覆盖写入缓冲区的数据之前,应用程序可能不从缓冲区中获取数据。当应用程序尝试从缓冲区中读取还未采集的数据时,NI-DAQmx会等待数据采集完毕然后返回数据。如应用程序从循环缓冲区读取数据的速度不够快,将会收到一个报告数据被覆盖和丢失的错误。如通过该方式丢失数据不是问题,请修改覆盖模式属性的设置。