APP下载

使用Flash与C#配合开发化工实验仿真软件的研究使用Flash与C#配合开发化工实验仿真软件的研究

2016-11-02孙怀宇刘东斌彭弗楠王祝敏高枫

电脑知识与技术 2016年18期
关键词:仿真软件

孙怀宇 刘东斌 彭弗楠 王祝敏 高枫

摘要:化工实验仿真软件需要准确的模型,严密的逻辑和美观逼真的界面。使用C#.net或Flash单独开发都有各自的优点和缺点。该论文应用Flash开发仿真界面,使用C#.net开发逻辑、算法及数据库访问,结合二者开发了化工原理阻力实验仿真程序。分析了在Flash中制作界面的工作及技术,研究了二者之间参数及事件的传递方法。为提高开发效率,研究了自动生成ActionScript 代码的方法。二者结合开发的软件具有结构良好,界面美观,功能强大等特点。

关键词:化工实验;仿真软件;Flash C#.net

中图分类号:TQ016.1 文献标识码:A 文章编号:1009-3044(2016)18-0086-02

Research of Development of Chemical Experiments Simulation Software Using Flash and C#

SUN Huai-yu, LIU Dong-bin, PENG Fei-nan,WANG Zhou-min,GAO Feng

(Shenyang University of chemical Technology, Shenyang 110142, China)

Abstract: Chemical experiment simulation software needs accurate numerical models, rigorous logic and aesthetics realistic interface. Development by Flash or C#.net has its own advantages and disadvantages. In this paper, Flash is employed to develop the simulation interface while C#.net is employed to development logic, algorithms and database access. The combination is used to developed simulation program for resistance experiment in unit operations of chemical engineering. The work and technology needed in Flash is researched, and transfer of parameters between the two parts is also discussed. A program that can automatically generate Action Script code is also developed in order to improve development efficiency. The simulation software developed by this method has good structure, beautiful interface and powerful functions.

Key words: chemical experiment; simulation software; Flash; C#.net

1 背景

化工实验是化工及相关学生学习中重要的教学环节,是学生实践理论知识的重要过程。化工方面的实验包括化工原理实验、化工专业实验等。在教学实践中,实际的实验存在消耗大、设备复杂、操作步骤多等特点。而且一旦出现误操作,会给操作者带来伤害或对设备带来损坏。所以使用仿真实验对学生进行培训,有安全,方便等的特点,也可以在教学中使用仿真实验作为实际实验的预习。

当前的实验仿真软件向着高仿真,高性能,网络化的方向发展,目的是更好地培养学生的工程能力,为学生掌握知识提供更好的支撑。这些实验的模拟都需要较精确的数学模型,同时要求有美观易用的界面。

在学校的机房环境中,一般还是以C/S结构的软件为主,即在学生机上运行仿真软件,操作记录等通过访问服务器保存在数据库中。开发这样的软件一般使用VB,VB.net和C#.net等语言[1],这些语言对于访问数据库、实现算法及进行分数的评定都很强大,但界面方面稍显不足,虽然可以使用加载图片、自定义控件等技术显示图形及动画[2],但也存在不易放大缩小,图形不够美观,动画占用CPU较高等缺点。

Flash是ADOBE公司的矢量图形软件[3],具有图形编辑功能灵活,动画能力强的特点,而且内部的ActionScript脚本有较强的编程能力。使用Flash开发出的动画文件可以自由进行缩放,并支持动画功能。但在实现较复杂的仿真算法及开发C/S架构的软件访问数据库等方面有一定的不足。

所以,如何结合这两者联合进行开发,扬长避短,开发出界面美观,且功能强大的化工实验仿真软件是值得研究的方法。本论文以化工原理阻力仿真实验为例,讨论在结合C#与Flash开发过程中的技术问题及解决方法。

2 总体结构

软件的网络结构描述如下,数据库服务器上安装SQL Server[4],所有的学生名单,实验成绩及仿真记录都保存在此服务器上。教师机用于教师维护班级和学生名单、监视仿真过程及统计分数,学生在终端上进行实验仿真,整个系统使用局域网连接。

实验仿真软件的客户端主体使用C#.net开发,主要包括数据通信,数学模型实现及仿真成绩评分等功能。仿真软件的界面使用Flash CS3制作,用于显示界面,接受用户的操作及显示仿真过程的数据及动画等。客户端需要安装Flash Player,Flash导出的SWF文件使用AxShockwaveFlash控件放置于C#程序中。

3 联合开发的主要技术实现

为了开发出可用的仿真软件,Flash与C#之间的通信及交流是必不可少的,本部分以化工原理流体阻力仿真实验为例,着重说明Flash界面的制作要点及Flash与C#中的通信技术。

3.1 Flash制作实验界面

Flash开发实验界面工作,包括界面的制作及部件的制作。我们按照实际的实验装置,开发实验背景,为保证画面的真实感,使用实际设备的照片进行适当修改后作为背景。在界面中有很多需要重复使用的部件,如开关阀,液位计,仪表等。这些都可以制作为Flash中的部件,以便重复使用。这些部件可以分为以下几类:1是图片切换,如阀门,使用两张或多张不同的图片表示阀的开和关,2是液位,使用色柱表示容器中液体的液位,3是动画,例如使用箭头显示流体的流动,4是仪表,用于显示实验中测量的数据。为能对部件的显示及动作进行控制,需要在部件中使用代码。例如图片切换部件的控制代码如下:

stop();

function V(s:String ):Boolean {

var i:int;

switch (s)

{

case "OFF":

i=1; break;

case "ON":

i=2; break;

}

gotoAndStop(i); //显示指定帧

return true;

}

为了在程序中能对部件进行控制,需要在“属性”中为每个部件指定一个唯一的名称,如“VALVE1”。

3.2 Flash控件与C#的通信

通信部分可以分为以下几个功能。

3.2.1 C#向Flash的通信

在C#使用控件的CallFunction方法向Flash传递参数。假设FlashSim为控件名,则调用方法后sRet为Flash返回的字符串。

string s;

funName=”flashFunction”;

s = "" + arg + "";

sRet=FlashSim.CallFunction(s);

在Flash中,为了能够处理此方法,需要先定义回调的函数

ExternalInterface.addCallback ("flashFunction",flashFunction);

function flashFunction (s:String)

{

// 对s字符串的处理;

return "sReturn"; //返回结果字符串

}

3.2.2 Flash向C#通信

Flash通过控件事件的方式向C#传递消息,为了能够产生事件,需要在Flash代码中引入相关的库:

import MyClass;

import flash.external.*;

之后,可以使用如下的代码产生事件,其中sRet为要传递给C#的字符串。

ExternalInterface.call ("test", sRet);

在C#中就可以通过处理控件的FlashCall事件来得到Flash返回的字符串。

private void FlashSim_FlashCall(object sender, AxShockwaveFlashObjects. _IShockwaveFlashEvents_FlashCallEvent e)

{

string s = nodeXml(e.request.ToString()) [0] .ChildNodes[0].InnerText.ToString();

}

3.3 Flash中脚本代码的自动生成

在仿真软件的开发过程中,由于涉及的部件较多,所以重复的ActionScript代码开发工作较多。所以我们还研究了使用EXCEL VBA自动生成Flash脚本的技术[5]。具体方法如下:在EXCEL中列出如下内容:1需要从C#中获得的变量,2所有Flash部件,包括部件的名称,点击时产生的事件等。3变量与部件之间的赋值关系,4变量与总部件之间的逻辑关系。

生成的代码包括如下功能:1)初始化界面及部件,2)初始化控件列表,3)初始化变量列表,4)更新显示,5)赋值计算及逻辑计算等。

这样,在开发过程中通过简单地进行EXCEL表格中数据的维护,就可以生成Flash中的ActionScript脚本,极大地方便了开发过程,提高了开发效率。

4 开发实例

应用此技术开发了化工的相关流程仿真系统,此程序可以对直管阻力及局部阻力进行测量[6]。在界面开发中,阀门、流量动画、液位、显示仪表等都使用了Flash部件。使用此技术开发的界面具有界面美观,编程方便等特点。

5 结束语

应用Flash与C#结合的技术开发了化工原理流体阻力实验仿真程序,其中的界面及手动阀,液位计,流动动画等使用Flash进行开发。C#程序负责数学模型的实现、分数的计算及数据库的通信。实际上是将使用C#开发业务逻辑层,使用Flash开发用户界面层。开发出的软件具有运行速度快,界面美观,功能强大等特点。而且应用Flash部件库的功能,可以极大地提高界面制作的效率。此方法还可以应用于化工专业实验开发及化工过程控制仿真中。

参考文献:

[1] Bill Evjen. C#高级编程[M]. 8版.北京: 清华大学出版社, 2013.

[2] 李海. Visual Basic 编程ActiveX控件[M]. 北京: 北京航空航天大学出版社, 2000.

[3] Reinhardt Robert, Dowd Snow. Flash CS4 Professional Bible[M]. Wiley, 2009.

[4] 周立柱.SQL Server数据库原理-设计与实现[M]. 北京: 清华大学出版社, 2004.

[5] 格林. Excel 2007 VBA参考大全[M]. 北京: 人民邮电出版社, 2013.

[6] 夏清, 陈常贵. 化工原理[M]. 天津: 天津大学出版社, 2007.

猜你喜欢

仿真软件
电子类仿真软件应用的教学之道