编程的总体思路
软件工作原理
采集过程
初始化是设置IO地址,中断号,内存分配等,打通应用程序和驱动程序的通道,使驱动程序能够对最底层的硬件进行初始化。
启动采集:设置采集频率,采集通道,数据传输方式(单缓冲区方式或是多缓冲区方式)并启动实时采集,启动后,下层驱动程序就独立地控制硬件进行数据采集,并将结果存放在驱动程序的缓冲区中。
读取结果:是将驱动程序缓冲区中的数据读取到应用软件的数据缓冲区中去,以便对数据进行处理。
数据传输原理
数据传输原理:数据采集卡在驱动程序的控制下将采集到的外部信号先存放在采集卡上的缓冲区中,驱动程序再将采集卡缓冲区中数据放到驱动程序的缓冲区中;驱动程序存放数据有两种方式,单缓冲区方式和多缓冲区方式;再经过动态连接库这个接口函数,将数据传输到上层应用软件的数据内存中。
单缓冲区的方式
是驱动程序部分只开辟一个缓冲区,数据不停的采集,当缓冲区满后,后来的数据不断的覆盖掉当前缓冲区中最早被采集的数据。该缓冲区可以放的点数可以在[系统参数|配置A/D采集板]处设置。还有一点必须声明,这里所说的点数是指时间点,不是数据点,如果有5个通道,一个时间点对应5个数据点。
每隔一段时间驱动成底层软件和上层软件进行一次通信,从该缓冲区中读数据到上层软件的临时缓冲区中(数组),应用软件中有一个定时器控件。
我们假设每150毫秒钟读一次,总是从当前最新的位置(samptr指针)开始读在它之前若干个最新的点,当然也可以是全部,假设是200个点,用篮色表示表示第一次读取的一段数据到上层应用软件的临时数组中。用绿色表示第二次采集的数据。
多缓冲区方式(主要是对录波器方式)
这种方式是开辟多块缓冲,开辟的中断缓冲区的个数在[系统参数|采集板参数配置]中的中断缓冲区块数处来设置,采集的数据依次放到每块缓冲区中
,放满一块后,再放另一块,每当有一块缓冲区放满之后,便读取一次对界面的图像进行一次重绘,旧的数据被读取到上层软件的数组后,新的数据再放进去,如果采集频率大,重绘的频率大,得到的是连续的动态波形,如果采集的频率小,重绘的频率小,得到的波形变化较缓,这样不管采集的频率是多少,
读取到的点是没有重复的,下面我们用图来说明它的工作过程。用粉色的矩形表示缓冲区块,用红色的矩形表示填满了数据的块。
共采集到的点数=缓冲区块数 * 每块所装的时间点数=频率 * 采集时间,如果只要采集10分钟,那就要先设好采集频率f [系统参数|配置A/D采集板],然后计算一下共采集多少个点:10分钟*60秒*f=共采集的点数。然后在[系统参数|配置A/D采集板]处设置每个缓冲区的大小,假设为300个点,假设开n个缓冲区,300个点 * n个缓冲区 = 共采集的点数,在这个式子中,计算出n,在[系统参数|配置A/D采集板]中断缓冲区的个数为n,这样就设好了。 |