取多缓冲区方式下一个采集块ADResult VC/C++Builder下使用示例: VB下定义方式: VB下使用示例: Delphi下定义方式 Delphi下使用示例 功能及参数说明: ADResult()函数用于在多缓冲区方式下把最先(旧)的一个有采集结果的缓冲区内容拷贝到用户数组ADBuf中。并释放当前缓冲区。这是把驱动程序缓冲区当成以块为单位的FIFO时,以块为单位取采集结果的标准方式。若执行ADResult()及时(如在RegisterNotify()注册的消息响应函数中),各ADResult()函数返回的缓冲区将在时间上是连续的。 参数ADBuf为用户程序通过的存放采集结果的缓冲区地址。此时数组ADBuf的尺寸要求大于SampPerChn*NumChn+1个短整数,但结果正好为NumChn通道、NumSamp个采样点,NumChn和NumSamp在StartIntr()函数中定义。 返回结果的格式是:ADBuf(0)为此次结果的序列号:在多缓冲区方式下,每个缓冲区的序列号按采集时间先后顺序增一,若缓冲区满而丢失数据时此值会增加以表示丢失了多少缓冲区;在单缓冲区方式下,表示此次快照是系统内部缓冲区被覆盖(填满)多少此时的结果。此值是按无符号短整数递增的,在65535(=0xffff)后会反转为0的。 ADBuf(1至NumChn*SampPerChn)顺序存放各通道、各时刻的采样值。第n通道(n=0至NumChn-1)、第m时刻(m=1至SampPerChn)就存放在数组单元ADBuf((m-1)*NumChn+n+1)中,即ADBuf(1)存放第0通道第1时刻的值,ADBuf(2)存放第1通道第1时刻值,......,ADBuf(NumChn)存放第NumChn-1通道第1时刻的值,ADBuf(NumChn+1)存放第0通道第2时刻的值,......。对12位AD板,采样结果为偏移二进制编码,即:0表示最低电压值(如-5V),2048(=0x800)表示0电压,4095(=0xfff)表示最高电压(如+5V)。具体电压值可由属性VZero和VMax转换出。 若AD板既支持模拟量,又支持开关量,则在等价的NumChn个总通道中,通道0至BegChn-1为常规的模拟量,通道BegChn至NumChn-1为组合的开关量通道,每16个开关量通道占1个模拟量通道的缓冲区(即每模拟通道占1位,且通道0占短整数的bit 0,通道15占短整数的bit15,而每模拟通道占16位(无符号短整数)) 对AD采集结果ADBuf(?)的模拟量,它实际采用偏移二进制编码,它对应的实际电压为(单位:V): (ADBuf(?)-VZero)/(VMax-VZero)*5 其中,VMax与VZero由ConfigInfo()函数返回。由于VB不支持无符号整数(只能按有符号整数对待),对16位AD芯片(VZero=32768., VMax=65535.),要得到电压值,需用如下公式:
|