热度 15
2012-1-19 09:49
1629 次阅读|
0 个评论
为了使用3M赫兹的 模拟 输入来实现数字读取,执行下列步骤: 1. 设置一个有一个条目的信道增益队列; 2. 选择信道0; 3. 将增益码属性设置为CHAN_SEDIFF_DIG(8192) 4. 把接收到的数据按16位 板卡 上的16位数字值或12位板卡上的12位数字值做处理,而不是按照电压处理。 实现这一过程的代码被列在下面: ' For boards having unique, product-specific attributes Const CHAN_OEM_SHIFT As Integer = (-2) ^ 15 Const CHAN_OEM_MASK As Integer = (1 * CHAN_OEM_SHIFT) ' use std attribs Const CHAN_OEM_DEFAULT As Integer = (0 * CHAN_OEM_SHIFT) ' use OEM attribs Const CHAN_OEM_FLAG As Integer = (1 * CHAN_OEM_SHIFT) ' For boards supporting programmable single-ended vs. differential inputs Const CHAN_SEDIFF_SHIFT As Integer = 2 ^ 13 Const CHAN_SEDIFF_MASK As Integer = (3 * CHAN_SEDIFF_SHIFT) ' use static config Const CHAN_SEDIFF_DEFAULT As Integer = (0 * CHAN_SEDIFF_SHIFT) ' digital input chan Const CHAN_SEDIFF_DIG As Integer = (1 * CHAN_SEDIFF_SHIFT) . . . DriverLINXSR1.Sel_chan_N = 1 DriverLINXSR1.Sel_chan_format = DL_tNATIVE DriverLINXSR1.Sel_chan_list(0) = 0 DriverLINXSR1.Sel_chan_gainCodeList(0) = CHAN_SEDIFF_DIG 这些代码设置服务请求的单个属性。 第一个属性告诉DriverLINX,在信道增益队列(上面的步骤1)中,只需要一个信道。 第二个属性(Sel_chan_list)告诉 DriverLINX 如何将数据存在缓冲区里。DL_tNATIVE表示按照硬件给出的格式存储。 第三个属性为信道增益队列中的第一项内容选择信道。在这种情况下,这个值必须是0(步骤2); 第四个属性设置数字读取(步骤3). 在代码的其它地方,这个数字值被逐位处理。 可能引起混乱的是,CHAN_OEM_FLAG被设置为(-2)^15,而不是2^15,这好像有更多的含义。答案在VisualBasic中。VisualBasic的整数总是有符号的,因此位15是符号位,用户取或的值必须是-32768,不是32768(它将会引起溢出错误)。 记住,对一个真正的应用程序来说,用户可能除了数字数据外还想获得模拟数据。这个应用被设计来展示实现 模拟输入 /数字输入功能的最简单方式,因此它不执行 模拟转换 。这个例子可以很容易被修改以向列表中增加更多的信道和增益。 了解更多信息 要想了解有关吉时利KPCI-3100系列板卡或者关于数据采集的更多信息,请点击 http://www.keithley.com.cn/products/data/analog 或登录吉时利官方微博 ( http://weibo.com/keithley ) 与专家进行互动 。 模拟 :http://www.keithley.com.cn/llm/a/27.html 板卡 :http://www.keithley.com.cn/news/prod061128 模拟转换 :http://www.keithley.com.cn/news/prod080721