SCADA
动画制作步骤
一、任务目标
在示意图模块中加载各类图片,进行设置. 在显示模块中,实现动态效果.
二、
使用工具
Cygwin, QT, VC6.0.
三、实施步骤
I.用户输入部分(涉及到示意图模块)
1. 使用QT 制作一个对话框, 用于用户输入.
相关文件: C:/xcsystem/scada/src/procs/config/nsched3d/src/cspeed.h
C:/xcsystem/scada/src/procs/config/nsched3d/src/ cspeed.cc
经编译后放到指定目录
2. 要将该类编译进模块,需要在C:/xcsystem/scada/src/procs/config/nsched3d/src/makefile文件中加入:
MOCSRCS += ../incl/cspeed.h (Line83)
SRCS += cspeed.cc (Line100)
3. 将该cspeed模块加到示意图模块的弹出菜单中.
(1) 在示意图模块app_window_impl.h中加入相关变量(Line315)和自定义的myslot() 函数(Line254).
(2) 在app_window_impl.cc中,初始化相关变量(Line70,Line80).
(3) 在show_context_menu函数中,添加菜单.(Line922).
(4) 实现myslot()函数(Line2966).
II. 数据传递部分(涉及到示意图模块和显示模块)
数据的传递是通过.bsf文件来进行的.主要功能函数为:
pack/unpack,encode/decode
有2种方式:
第一种: 将传递的数据打包进文件头.(pack/unpack)
第二种: 将传递的数据打包进各自的控件.( pack/unpack,encode/decode )
这里采取第一种方法.
1. 示意图模块:
(1) app_window_impl.h中定义一个静态变量用来保存从cspeed类传过来的用户数据.
(2)app_global_def.h文件中,为结构体file_header和new_file_header定义变量.(Line78,Line121).
(3)在app_window_impl::create_header(header*) 函数以及它的重载版本中分别把用户输入的变量赋给文件头(file_header结构).(Line2304,Line2354)
(4) 在app_window_impl::save_page()函数中,实现对文件头的打包.
在pack2()函数(Line1770,Line1828)中,加入所需变量.
2. 显示模块
(1) 在app_window_impl::load_bsf_page() 函数中调用unpack()函数(Line70)进行解包.取出文件头结构.
(2) 在glview.h中声明存储用户数据的变量 (Line290).
(3) 在app_window_impl类中加入createGLWindow()的重载版本.实现把文件头结构中的用户变量传递给视图.(app_window_impl中 Line439)
III. 显示部分
(1) 在glview.h中声明一个定时器和一个偏移量.(Line290).
(2) GLView::paintGL()中实现绘制工作(Line261)
获取控件是通过QPtrListIterator<GLGadget>类实现的.控件的辨别可以通过控件本身的getId()实现..