碧波液压网 欢迎你,游客。 登录 注册

实时数据采集和管理系统中的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

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论