微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 脚本语言在数据采集系统中的应用研究

脚本语言在数据采集系统中的应用研究

时间:04-15 来源:互联网 点击:

就是可以提高开发效率和满足客户需求程序设计的最好选择。比如在开发中需要对客户自定义表达式计算时,如果自己去写表达式解析,将是一个几乎无法完成的任务。而使用微软的Script控件,把表达式作为脚本函数返回值,让Script控件解释计算,几行代码就完成了,开发效率大大提高。

  在软件系统实践中,用的最多的就是把脚本嵌入应用程序中。快速开发工具Delphi除了可用使用ActiveX控件类型的脚本引擎外,也有许多优秀的原生Delphi脚本引擎控件如Scripter Studio,PaxScr4pter,Inner Fuse Pascal Script,Fast Script等。在开发一款通用的数据采集系统中,就采用了核心架构使用高级语言,用户扩展和通讯协议使用Fast Script描述的设计模式。之所以选择FastScript,因为Fast Script是一个交叉平台的语言的脚本引擎。它对希望增加脚本功能的编程人员非常有用。Fast Script是用100%的Object Pascal编写,具有支持OLE和变量数组,可以使用多语言脚本(Pascal Script、C++ Script、JScript和BasicScript),与标准面向对象语言语法相近,可以使用程序内的任何对象、标准库访问基类、控件、窗体和DB;易可扩展的库结构;内存占用小等特点。

  系统的结构,如图1所示。采用这种模式,就是要充分发挥系统程序语言和脚本语言的各自优势。因为核心架构需要创建采集线程、进行任务调度、处理系统消息和加载脚本引擎等,而这些需要稳定且处理效率高,所以使用系统程序语言开发;而对于千变万化的通讯协议,如果全都被系统核心架构包括,是不可能的。而把各种通讯协议用不同的脚本语言文件描述,供采集系统调用,问题就可以解决了。

  

  如图1所示,通过系统配置,告诉采集核心需要建立的采集通道(对应采集点,每个通道的任务在自己的线程中调度),以及每个通道的采集任务(对应与通讯协议脚本)和调度方案(何时启动采集或者多长时间周期采集一次)。正是应用了脚本语言描述采集任务,使得系统具有高度灵活的可配置性。

  采集任务通过xml文档描述,具体的通讯使用Fast Script描述。xml文档结构如下:

  《?xml version="1.0" encoding="GBK"?》

  《项目名称="采集器对时"开始流程="通信步骤1"》

  《全局变量初始化脚本="…"/》《!--采集任务必要的全局变量加载脚本--》

  《通信流程名称="通信步骤1"下一流程="通信步骤2"》

  《发送数据脚本="…"/》《!--通信步骤发送数据的脚本--》

  《收全判断脚本="…"/》《!--判断通信数据是否收全的脚本,收全后进入下一步骤--》

  《正确回复脚本="…"/》《!--判断通信步骤收到数据是否正确的脚本--》

  《/通信流程》

  ……

  《通信流程名称="通信步骤n"下一流程=""》

  《发送数据脚本="…"/》

  《正确回复脚本="…"/》

  《收全判断脚本="…"/》

  《/通信流程》

  《数据处理脚本="…"/》《!--处理收到数据的脚本,一般用于数据解析并保存数据--》

  《/项目》

  在系统核心中,把系统一些常量、函数声明、读入的脚本一起组成完整的脚本。

  以下是几个典型脚本的例程(函数声明为系统定义,斜体部分为XML文档中读入系统)。

  全局变量初始化脚本如下:

  Procedure (Conn: TADOConnection; varGlobalVar:Variant);

  begin{全局变量分别为采集点地址,开始地址,结束地址}

  

  

  系统核心按照XML定义的流程,通过脚本控件的CallFunction、CallFunctionl、CallFunction2方法调用脚本中的函数,根据执行结果执行相关操作并写入日志。在实践应用中发现,整个脚本的语法检查(Compile方法)占用系统的资源最多、对系统影响较大。所以在系统开始时,就把所有任务脚本读人内存中,并通过脚本控件的语法检查,这样虽然加大了系统内存开销,但是整个脚本语法检查只做一次,任务调度时直接执行脚本。比较与每次任务调度时读人脚本、检查语法、执行,效率提高相当明显,几乎可以达到与系统语言相媲美水平。

  除了描述采集通讯协议,系统还允许用户通过脚本自定义界面,开发了脚本编辑、调试工具,方便脚本编写,这里不作详述。

  从上述应用可以发现,这种脚本的语法与Del-phi十分相似,易于编写,又能描述复杂、变化的任务。即能保持基本框架不变,又能使系统灵活。

  4 结束语

今天,用脚本语言编写的应用程序的数目远多于用系统程序设计语言编写的应用程序的数目。在Unix系统中有比C程序更多的外部脚本。当

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top