实时数据采集和管理系统中的DLL和DDE技术
1引言
在实时数据采集系统中,往往需要将所采集的大量数据进行分类,筛选和存档,以备检索和分析。这就要用到数据库技术,而数据库语言(如VFP)一般不具备与硬件接口的能力,而C语言虽然可以用来编写实时数据采集程序,但对数据库管理的功能却不及数据库语言。因此,比较理想的方案是用C语言程序来负责实时数据采集,而采集来的数据交由VFP程序进行管理,使得两者的优势都得以发挥。而这种方案的关键技术在于WINDOWS环境下的C语言与VFP的接口,以及实时数据采集系统与数据库管理系统之间的数据交换技术。
在本系统中,我们将负责实时数据采集的应用程序称为"前台程序",将负责管理数据库的应用程序称为"后台程序"。前台程序用VFP编写,其中与硬件接口的部分用C语言编写,由VFP调用和控制。同时,前台程序提供人机界面,便于对控制参量进行输入和调节。此外,前台程序还实时的将采集到的数据传递给后台程序。后台程序与普通的数据库管理系统基本相同,具备数据管理的全部功能,同时,后台程序还负责接收来自前台程序的数据,并充实到数据库中去。
2前台程序
C语言程序具有直接驱动硬件的功能。因此,在前台程序中,与硬件有关的接口程序用C语言编制成可供调用的函数,设计专用的DLL(动态链接库),放置于WINDOWS的SYSTEM目录下,将有关的C函数置于DDL之中。DLL中的C函数的编写须注意以下几点:
(1)DLL中的函数不能拥有自己的窗口,所采集的数据的实时显示由C函数通过返回值传递给VFP程序,在VFP的表单中显示。
(2)DLL中的函数不设置消息循环。启动数据采集操作的消息(一般由定时器发出)发给VFP的表单,由VFP来调用相应的C函数,开始实时数据的采集操作。
(3) VFP在调用DLL的C函数之前,须用DE-CLARE-DLL命令对函数进行声明,其参数和返回值的类型如下表所示:
SHORT 16位整数
INTEGER 32位整数
SINGLE 32位浮点数
DOUBLE 64位浮点数
STRING字符串(char类型)
用DECLARE_DLL命令对函数进行声明之后,可象调用普通函数那样直接调用C函数。
(4)由于C函数参数的虚实结合是值传送,因此,如果被调用的C函数须将多个数据返回给VFP的话,只能将数据放在数组或结构中,并返相应的指针,而VFP对指针的处理是很困难的。解决的办法是:每个C函数只采集一个数据,并通过返回值将数据传递给VFP程序,对于多个数据的采集,由VFP多次调用C函数来实现。以下是给硬件端口送控制字的C函数例子:
#include
相关文章
- 2021-12-28明电变频器在纺织行业粗纱机电气控制系统应用分析
- 2021-12-08基于WinCE的ARM视频监控系统解析
- 2022-07-15SY一1型体外冲击波碎石机
- 2023-04-24薄壁圆筒式动态多维切削测力仪的有限元分析
- 2022-12-02网络化分布式虚拟仪器测试研究
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。