基于数据采集卡的敏感元件动态测试系统毕业论文(编辑修改稿)内容摘要:
ocAddress(hDLL,FuncInDLL)。 //找到 dll中的函数 Func()。 //调用 dll里的函数 在 Windows 操作系统中使用 DLL有很多优点,最主要的一 点是多个应用程序、甚至是不同语言编写的应用程序可以共享一个 DLL 文件,真正实现了资源“共享”,大大缩小了应用程序的执行代码,更加有效的利用了内存;使用 DLL 的另一个优点是 DLL 文件作为一个单独的程序模块,封装性、独立性好,在软件需要升级的时候,开发人员只需要修改相应的 DLL 文件就可以了,而且,当 DLL 中的函数改变后,只要不是参数的改变 ,程序代码并不需要重新编译。 这在编程时十分有用,大大提高了软件开发和维护的效率。 对动态链接库,我们还需建立如下概念 [14]: ( 1) DLL 的编制与具体的编程语言及编译器无关 只要遵循约定的 DLL 接口规范和调用方式,用各种语言编写的 DLL 都可以相互调用。 譬如 Windows 提供的系统 DLL(其中包括了 Windows 的 API),在任何开发环境中都能被调用,不在乎其是 Visual Basic、 Visual C++还是 Delphi。 基于数据采集卡的敏感元件动态测试系统 9 ( 2)动态链接库随处可见 我们在 Windows 目录下的 system32 文件夹中会看到 、 和 , windows 的大多数 API 都包含在这些 DLL 中。 中的函数主要处理内存管 理和进程调度; 中的函数主要控制用户界面; 中的函数则负责图形方面的操作。 一般的程序员都用过类似 MessageBox 的函数,其实它就包含在 这个动态链接库中。 由此可见 DLL 对我们来说其实并不陌生。 ( 3) VC 动态链接库的分类 Visual C++支持三种 DLL,它们分别是 NonMFC DLL(非 MFC 动态库)、 MFC Regular DLL( MFC 规则 DLL)、 MFC Extension DLL( MFC 扩展 DLL)。 非 MFC 动态库不采用 MFC 类库 结构,其导出函数为标准的 C 接口,能被非MFC 或 MFC 编写的应用程序所调用; MFC 规则 DLL 包含一个继承自 CWinApp的类,但其无消息循环; MFC 扩展 DLL 采用 MFC 的动态链接版本创建,它只能被用 MFC 类库所编写的应用程序所调用。 MPS010602 采集卡提供的 DLL 文件中包含的函数 MPS010602 提供的驱动 DLL 文件名为 ,内部共有四个驱动函数,分别为: ( 1) extern C int SetPara(int SampleRate, int ADChannalNumber, int *ADPGAofChannals, int DIOModal, unsigned short PWM1, unsigned short PWM2, int ComparatorEnable, int ExtTrigger,int DeviceNumber) int SetPara:函数执行配置采集卡参数的功能。 若函数执行成功,返回 1;执行失败返回 0。 int SampleRate:采样率、刷新率等工作时钟频率。 此参数为内部时钟频率设定。 参数取值范围为 500080000,小于 5000 将被设置为 5000,大于 80000 将被设置为 80000。 若 ExtTrigger = 0, EX1 和 EX5 对外输出该频率的时钟脉冲;若ExtTrigger = 1,只有 EX1 输出时钟脉冲。 对于 AD 而言, SampleRate 的值为总采样率值,实际分配到每个通道上的采样率为 SampleRate / (ADChannalNumber / 2)。 对于 DA 和 DIO 而言, SampleRate 就是每个通道的工作频率值。 int ADChannalNumber:模拟输入通道数。 ADChannalNumber = 2, AD1 与 AD9分别被配置为两路模拟信号输入,并且为同步采集,其余 ADx 口无效;ADChannalNumber = 4, AD AD AD AD10 被配置为四路模拟信号输入,AD1 与 AD9 同步, AD2 与 AD10 同步,相邻通道为切换扫描模式,其余 ADx口无效; ADChannalNumber = 8, AD AD AD AD AD AD AD1AD12 被配置为八路模拟信号输入, AD1 与 AD9 同步, AD2 与 AD10 同步, AD3与 AD11 同步, AD4 与 AD12 同步,相邻通道为切换 扫描模式,其余 ADx 口无效;基于数据采集卡的敏感元件动态测试系统 10 ADChannalNumber = 16,所有通道被配置为十六路模拟信号输入, AD1 与 AD9 同步, AD2 与 AD10 同步, AD3 与 AD11 同步, AD4 与 AD12 同步, AD5 与 AD13同步, AD6 与 AD14 同步, AD7 与 AD15 同步, AD8 与 AD16 同步,相邻通道为切换扫描模式。 若给出的 ADChannalNumber 参数值小于 4,则自动配置为 2;若给出的 ADChannalNumber 大于 4 而小于 8,则自动配置为 4;若给出的ADChannalNumber 大于 8 而小于 16,则自动配置为 8;若给出的 ADChannalNumber大于 16,则自动配置为 16。 int * ADPGAofChannals:模拟输入增益设置。 ADPGAofChannals 为一维 16 元素数组,数组元素依次代表模拟输入 116 通道的增益系数。 每个元素的取值为:ADPGAofChannals[i] = 1, 无增益; ADPGAofChannals[i] = 2,2 倍增益;ADPGAofChannals[i] = 4,4 倍增益; ADPGAofChannals[i] = 8,8 倍增益;ADPGAofChannals[i] = 16,16 倍增益。 若 ADPGAofChannals[i]为其他值,则自动设置 ADPGAofChannals[i] = 1。 int DIOModal:数字输入 /输出端口模式设置。 DIOModal = 0, D1D8 全部为输入模式; DIOModal = 1, D1D8 全部为输出模式; DIOModal = 2, D1D4 为输出模式, D5D8 为输入模式; DIOModal = 3, D1D4 为输入模式, D5D8 为输出模式。 若 DIOModal 为其他值自动配置 DIOModal = 0。 unsigned short PWM1: PWM1 输出占空比设置。 PWM1 取值范围为 065535,其值越大占空比越高。 注:若 SampleRate大于等于 50000, PWM1时基为 24M,PWM1输出为 16bit 循环模式;若 SampleRate 小于 50000, PWM1 时基为 2M, PWM1 输出为 8bit 循环模式( PWM1 的高 8 位有效)。 一般情况下建议使用 16 位循环模式。 unsigned short PWM2: PWM2 输出占空比设置。 PWM2 取值范围为 065535,其值越大占空比越高。 注:若 SampleRate大于等于 50000, PWM2时基为 24M,PWM2输出为 16bit 循环模式;若 SampleRate 小于 50000, PWM2 时基为 2M, PWM2 输出为 8bit 循环模式( PWM2 的高 8 位有效)。 一般情况下建议使用 16 位循环模式。 int ComparatorEnable:比较器使能。 ComparatorEnable = 0,比较器结果输出端被禁止,比较器无效; ComparatorEnable = 1,比较器输出端被使能, EX4 输出比较器 1 的比较结果, EX8 输出比较器 2 的比较结果。 int ExtTrigger:外部时钟触发使 能。 ExtTrigger = 0,使用内部时钟触发采集和输出; ExtTrigger 为其他值时使用外部时钟触发。 一般情况下建议使用内部时钟。 若使用内部时钟,则内部时钟将从 EX1 与 EX5 输出;若使用外部时钟,则外部时钟从 EX5 输入,同时内部时钟从 EX1 输出。 可通过该功能同步多块采集卡进行同步采集来扩展通道数。 int DeviceNumber:操作所针对的设备号。 当有多块采集卡同时连接到计算机时,将按照设备连接到计算机的先后顺序依次分配序号 0、 „„ 9,该序号将用于对卡进行标识。 只有一块卡连接时,默认设 备号为 0。 最多支持同时连接基于数据采集卡的敏感元件动态测试系统 11 10 个设备。 ( 2) extern C int DataIn(float *VoltageIn1,float *VoltageIn2,unsigned char *DI,int SampleNumber ,int DeviceNumber) int DataIn:函数执行模拟信号和数字信号的采集功能。 若函数执行成功,返回 1;执行失败返回 0。 float * VoltageIn1:第一组模拟信号输入( AD1AD8)的数据。 VoltageIn1 为一个一维数组,其每个元素 代表一个采样点的电压值。 如 VoltageIn1[i] = ,则表示第 i 个样点对应的电压为。 若采集卡工作在 2 通道模拟输入模式下,则 VoltageIn1 中的元素全部代表 AD1 采集到的数据;若采集卡工作在 4 通道模拟输入模式下,则 VoltageIn1 的第一个元素代表 AD1 采集到的数据,第二个元素代表 AD2 采集到的数据,第三个元素代表 AD1 采集到的数据,第四个元素代表 AD2采集到的数据„„以此类推;若采集卡工作在 8 通道模拟输入模式下,则 VoltageIn1的第一个元素代表 AD1 采集到的数据,第二 个元素代表 AD2 采集到的数据,第三个元素代表 AD3 采集到的数据,第四个元素代表 AD4 采集到的数据,第五个元素代表 AD1 采集到的数据,„„以此类推;若采集卡工作在 16 通道模拟输入模式下,则 VoltageIn1 的第一个元素代表 AD1 采集到的数据,第二个元素代表 AD2 采集到的数据,第三个元素代表 AD3 采集到的数据,„„第八个元素代表 AD8 采集到的数据,第九个元素代表 AD1 采集到的数据,„„以此类推。 若函数执行成功,该数组内数据被自动更新为最新采集到的数据(更新的元素个数由 SampleNumber决定);若函数执行 失败,该数组内数据无效。 VoltageIn1 所指向的数组大小应大于 SampleNumber 的大小。 float * VoltageIn2:第二组模拟信号输入( AD9AD16)的数据。 VoltageIn2 为一个一维数组,其每个元素代表一个采样点的电压值。 如 VoltageIn2[i] = ,则表示第 i 个样点对应的电压为。 若采集卡工作在 2 通道模拟输入模式下,则 VoltageIn1 中的元素全部代表 AD9 采集到的数据;若采集卡工作在 4 通道模拟输入模式下,则 VoltageIn2 的第一个元素代表 AD9 采集到的数据,第二个元素代表 AD10 采集到的数据,第三个元素代表 AD9 采集到的数据,第四个元素代表AD10 采集到的数据„„以此类推;若采集卡工作在 8 通道模拟输入模式下,则VoltageIn2 的第一个元素代表 AD9 采集到的数据,第二个元素代表 AD10 采集到的数据,第三个元素代表 AD11 采集到的数据,第四个元素代表 AD12 采集到的数据,第五个元素代表 AD9 采集到的数据,„„以此类推;若采集卡工作在 16 通道模拟输入模式下,则 VoltageIn2 的第一个元素代表 AD9 采集到的数据,第二个元素代表 AD10 采集到 的数据,第三个元素代表 AD11 采集到的数据,„„第八个元素代表 AD16 采集到的数据,第九个元素代表 AD9 采集到的数据,„„以此类推。 若函数执行成功,该数组内数据被自动更新为最新采集到的数据(更新的元素个数由 SampleNumber 决定);若函数执行失败,该数组内数据无效。 VoltageIn2基于数据采集卡的敏感元件动态测试系统 12 所指向的数组大小应大于 SampleNumber 的大小。 unsigned char * DI:数字信号采集得到的数据。 DI 为一个一维数组,其每个元素为 8 位 unsigned char 型数据, 8 个数据位分别代表同一时刻采 样得到的 8 路数字端口电平状态。 如: DI[i] = 17,即 DI = 0b00010001,表示 D1 和 D5 为高电平,其余 6 个端口为低电平。 无论数字输入 /输出端口工作在输入模式还是输出模式,都可以获得当前 Dx端口的电平状态。 若函数执行成功,该数组内数据被自动更新为最新采集到的数据(更新的元素个数由 SampleNumber 决定);若函数执行失败,该数组内数据无效。 DI 指向的数组大小应大于 SampleNumber 的大小。 int SampleNumber:一次采。基于数据采集卡的敏感元件动态测试系统毕业论文(编辑修改稿)
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。