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

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:junwen2009
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:化工实验仿真软件需要准确的模型,严密的逻辑和美观逼真的界面。使用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.
其他文献
笔者从事小学语文教学多年,在教学实践中常常思考:如何实现语文课堂高效教学呢?以何种形式促进教师稳定发展呢?由于语文学科具有人文性与工具性的特点,新课改以来,核心素养概念的提出,加之以人为本的教育理念,这些对语文教师进行有效教学提出了更高的要求。在教学中,如何切实做到思想教育、理论知识双向推进,是现阶段语文教师重点思考的问题。由北京师范大学出版社出版,孙素英和赵亚夫主编的《小学语文课堂的有效教学》一
一通老师家所在的小区要召开业主大会,商讨物业费的定价问题。一通老师是业主委员会的主任,也就是所有小区居民的代表。所以,他要拟定一则通知,让大家准时来开会。其实,小区里时常有通知贴出来,但是大家都没有留意看。也不能怪大家,因为这通知写得确实也不够清楚,看了也白看。  不过这一次,一通老师决定,要出一份好通知,让大家看懂,还能照着通知中说的去做。但一通老师有点忙,只能先把这样的事,交给两个徒儿来做。思
星期天,我冒着雨去楼下捉了一只蜗牛,从此以后,我们家就多了一位可爱的新成员,我叫它“贝贝”。  贝贝整天背着它的小房子爬来爬去,它的身子又软又滑,摸上去湿漉漉的。我想把它抓起来,它却总是从我的手指间“哧溜”一声滑下去。它的脑袋小小的,上面长着两对“天线”,一对上一对下,一对长一对短,好像在给它的小房子发送信号呢!贝贝的眼睛比芝麻粒还小,羞涩地藏在长触角的顶端,一碰到我的手就立刻缩回去。书上说,蜗牛
我的家乡在大坪,那里群山环绕,绿树成荫,一条小河从村子的中间流过。  我的家在山脚下,后山有几个大风车 ,大风车就像特大号的风扇,身子有三四层楼高,扇葉有三四米长,风一吹,大风车转动起来,好像就能吹走整个夏天的炎热。大风车还像飞机的螺旋桨,轻轻一转,仿佛就能飞上天。  夏天的午后,我对妈妈说:“妈妈,让山上的大风车吹一吹肯定很凉爽,我想到山上去。”  “傻孩子,那大风车不是用来吹风的,是用来发电的
摘要:微课作为信息化教学的新教育资源,以其独有的特征,在普通和高等教育,得到学生、教师和家长的认可。基于中职学生的特殊性,该文以在word软件中制作员工名片为例,介绍微课在中职学校设计和开发的原则,从教学内容和学习者特征分析,教学目的的制定,教学策略的选择,以及微课制作过程的设计等方面详细的介绍微课的开发和设计,提出了对中职微课开发的新见解,为其他微课的设计与开发提供了借鉴。  关键词: 微课;开
摘要:根据USB3.0协议,链路层控制器主要是对链路的初始化和配置,对主机和设备之间的数据交流建立链接和控制。该文详细介绍链路层状态控制器的基本原理以及利用 Verilog HDL 语言实现了状态控制器的描述, 并通过了Modelsim 仿真。  关键词:USB 3.0;状态控制器;仿真验证  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)02-0411-03  
老家有一棵老桑树,它已经25岁了,怪不得大家都叫它桑树爷爷。桑树爷爷的树干又粗又高,颜色是深咖啡色的;叶子是深绿色的,有点儿小,像我们的手掌。桑树爷爷就像草原上的一位士兵,看着远方。  桑树爷爷的果实可有趣了。如果桑果不是应季的话,它会酸得让你无法忍受,吃一颗你的牙齿就被酸倒了。桑果的颜色分为两种,一种是红色的,一种是黑色的。如果你用手捏住红色的桑果,它就会拿起魔法杖,把你的手变得血红。黑色的桑果
摘要:Prolog是人工智能语言的一个典型代表。本文简要阐述了人工智能语言及其特点,并通过实例介绍了Prolog语言及其基本结构。   关键词:人工智能语言;Prolog;递归  中图分类号:TP312文献标识码:A文章编号:1009-3044(2008)05-10ppp-0c    Prolog的思想最早由R. Kowalski提出,1972年,第一个prolog语言在法国的马赛研制成功,最初设