您的位置:首页 > 编程语言 > Qt开发

Qt脚本访问实时库

2016-02-03 16:36 281 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。

一、 概述

Qt脚本是基于ECMAScript的脚本语言,其语法与JavaScript类似。Qt脚本可以使应用程序方便的扩展功能,增加程序的灵活性。Qt脚本有如下几个重要的特征:

在脚本中可以访问C++代码中的QObject类型及其子类的实例,也可以创建QObject类型及其子类的实例。

对Qt的核心信号槽机制有很好的支持,可以在C++程序或Qt脚本中连接应用程序的信号和脚本中的函数。

Qt脚本不能独立运行,必须和C++代码配合才能实现完整的功能。

本程序(程序名:qs)利用Qt脚本引擎实现了脚本解析功能,并通过包装实时库接口,提供了脚本访问实时库的能力。

二、 qs的功能

封装了本地实时库访问接口CTableOp类,暴露给脚本的全局对象名为qTableOp,并提供3个接口:TableGet,SqlGet,TableGetByKey。脚本可利用这3个接口从本地实时库取数。

示例:



封装了文件读写接口类QSFile。可在脚本中定义该类的对象,实现文件的读写功能。示例:



封装了定时器QSTimer。可在脚本中定义该类的对象,通过连接该类对象的超时信号以及脚本函数,可实现脚本函数的定时执行。

示例:



当然,如有需要,qs可以不断扩充,封装更多的接口给脚本使用。

(以上示例具体可参考脚本example.js)

三、 使用方法

本程序的命令为qs,提供了两种运行方式:

1﹜ 脚本文件解析:

a) qs –f 脚本名称,可解析并执行脚本文件,脚本执行后退出程序,适用于脚本文件只需执行一次的情况。例如:



b) qs –fl 脚本名称,可解析并执行脚本文件,脚本执行后不退出,适用于脚本文件中定义了连接定时器信号的函数,函数定时执行的情况。例如:



2﹜ 命令行交互:

qs不带任何参数,即可进入命令行交互模式,qs可以接受终端输入的指令,解析并执行,例如:



四、 总结:

Qt从4.3版本开始引入了脚本机制,大大增强了应用程序的扩展能力及灵活性,市面上有不少组态软件都由Qt编写,并充分利用了Qt的脚本机制,提供专业用户二次开发的能力。本工具是对Qt脚本的初探,试图通过它在**系统应用Qt脚本,并发掘更多Qt脚本的功能。本工具目前仅限于利用脚本访问实时库获取实时数据,并将数据写入文件,当然结合cron以及shell脚本,也可以有更大的使用空间。后续如有需要,可以向qs加入更多的接口供脚本调用,增强脚本的能力。

总之,Qt脚本提供了一种能力,即用c++实现复杂高效的接口,并用脚本调用它们(当然Python对此笑而不语)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  qt 脚本