脚本语言范文

时间:2023-10-03 06:09:15

脚本语言

脚本语言篇1

远程教育已经在我国众多的发达城市当中开展起来,这使得我国的教育更加具有终身性与普遍性,不仅能够极大提高国民综合素质,还能够突破传统教育的局限。然而,远程教育需要强大的交互功能以及多媒体的辅助作用,教师所传授的内容也更加广泛与具体,通过人机的交互不仅能够提高学习者的学习热情,还能够更好地训练逻辑思维与创新思维,因此,远程教育的课件一定要达到动态交互的效果。与此同时,脚本语言不仅能够将动态课件的效果最大限度地展现出来,还能够将其与市场中其他的课件进行比对,从而找出最佳的教学方案,将先进的教学思想尽可能的传授给学生。

2脚本语言在远程教育动态网页设计中的应用

2.1JavaScript语言的应用JavaScript语言作为一种新型的动态性编程语言具有多种应用功能,首先在网址的编写当中可以运用简洁、精准的编码将语言编译出来,使得动态网页呈现出特有的表现形式,这样能够让初学者很快明白课程教授的内容和目的,然而,JavaScript语言的不足就是一旦有一处编码出现错误,将会影响后续的程序运行,使得远程教授出现问题。另一方面,JavaScript语言具有先进的鼠标动画跟踪功能,这是课堂教学中不可缺少的重要组成部分,是教师与学生互动的体现,教师可以通过移动鼠标准确、快速地将自己想要表达的内容展现给学生看,同时在有限的课堂时间内顾及各个水平学生的学习需求。最后,就是JavaScript语言对于文字图像的动态显示功能,很多文字内容通过动态的图像来展现能够使人更容易理解和记忆,这正是现阶段我国远程教育所欠缺的内容,远程教育的动态网页设计如果能够将教学内容自动化的传授,就能突破传统的教学模式,也就是说,通过动态的文字将学生存在的问题一一解答,同时实现学生之间的交流和互动,这样就能够将每个人的创新思想与他人分享。

2.2JSP语言的应用脚本语言可以与多种编程语言配合使用,这样不仅能够完善脚本语言的运用效果,更能够凸显其兼容性,使得远程教育的动态效果达到最佳。而JSP语言在脚本语言中可谓是后起之秀,其以更快的速度和准确度占据着动态网页设计的重要位置,很多远程教育的编程语言都是选用JSP语言,其能够实现知识点的连接功能,能够让学生在学习的同时更加便捷地查阅自己不懂的内容,通过动态图片或语言的连接,只要通过点击就能够进入到另一个界面,获取更加详细、准确的信息,让远程教育不存在知识点的堆积,提高学习效率与教学成果。另一方面,JSP语言还能够根据实际的课堂需求设计出动画卡通人物,其目的是为了提高低年级学生或初学者的学习热情,从而使其更加专心的学习,可以帮助学生建立抽象思维。最后,JSP语言能够实现网络测试,这样就能够解决远程教育存在的测试问题,通过网上学习能力的测试,让学生即便在没有教师与家长的看护下也能够认真的完成作业,同时检验自己的学习成果,更为重要的是JSP语言所展现的动态教学具有限时和提醒的功能,可帮助学生更加认真、高效的完成作业。

2.3其他脚本语言的应用实际上,脚本语言的种类有很多,应该根据实际的教学情况和需求选择最恰当的脚本语言,只有这样才能使远程教育的动态网页设计更加实用,当然也是为了获得最大的经济效益。每种脚本语言都有自身的优势和不足,一些技巧性与动态性的网页设计就可以选用上文阐述的两种脚本语言,其他的脚本语言可以先让部分用户做体验,看其是否符合用户的需求,从而达到远程教育的最终目的。

3结语

本研究首先对脚本语言进行详细的介绍,之后对其在远程教育动态网页设计中的应用进行阐述,要想提高教学质量就应该更加注重远程教育的课件制作与技术实现,尤其是多媒体软件的开发不仅要更好的呈现教学内容,还要提高学生的创新思维,确保教学质量,只有这样远程教育才能够更好的为我国的教育事业做出贡献。

脚本语言篇2

[关键词]项目教学法;ActionScript脚本;交互式动画;教学方法;函数功能

在当前的高职教育中,如何有效提高学生的实践动手能力,成为高职教育的首要任务。由于大部分学生,在学习ActionScript脚本语言时有一定的困难和畏难情绪,效果不好,笔者经过多年的教学实践,在教学方法上进行了一些探索,本文谈谈在高职计算机专业《Flash平面动画设计与制作案例教程》运用ActionScript脚本制作交互动画的一些体会,帮助学生顺利人门并建它起正确的程序设计理念,以取得较好的教学效果。

在具体项目教学中,课程前期教师会侧重于Flash中各种工具的使用方法以及动画相关原理的讲解。学生在课程前期制作出的动画也仅仅是在Flash中鼠绘出一些简单的画面、制作出一些简单的元件,或是利用遮罩、补间、引导的动画原理制作出一些简单的平面动画,然而,要想在Flash中制作出生动而具有表现力的交互动画作品,或是在动画播放前设计出具备交互功能的按钮,我们必须使用ActionScript代码。

一、ActionScript代码学习目标及实施规划

在有关ActionScript代码的讲解中,目的在于向学生系统地、详细地介绍FLASH动作脚本ActionScript的基本语法、编程技术、设计技巧及其在动画制作中的应用等,并力求学生通过理论知识的学习和上机操作后,可以熟练掌握ActionScript脚本的编程的方法和技巧,设计出应用于多个领域的交互动画项目。

在课程的具体学习过程中,学生除了掌握ActionScript脚本设计的理论知识

外,还要完成相应的上机操作,编制出具备一定水平的脚本程序,培养出一定的实际设计能力。

在整个课程体系结束之后,学生不仅要完成教师要求的设计任务,最后还要

通过理论考试和设计大作业考核。

二、ActionScript教学内容选取

ActionScript教学内容选取原则是从ActionScript脚本编程的基本语法出发,系统、完整、详细地介绍ActionScript的编程方法和技巧,着重强调ActionScript脚本在交互式动画项目中的应用等,力求选取的教学内容与学生的实际工作紧密结合。

三、ActionScript具体项目实施过程

函数是ActionScript脚本语言的核心部分,大部分的flas特效和交互功能的实现都需要使用到它。一般的教材在介绍函数时往往将其集中起来,列出格式,然后说明其功能、参数。给没有编程基础、英语水平较弱的学生带来很多学习上的困难。

在具体项目实施的过程中,可以从按钮上添加的脚本开始讲解,第一个项目可通过一个“添加视频按钮”案例讲解如何在Flash中导入视频,如何通过ActionScript脚本控制“暂停”、“播放”、“停止”、“快进”和“后退”按钮在视频动画中的行为。

案例结束以后,可以在教学中选取一些利用ActionScript代码制作特效的案

例,如放大、缩小特效按钮的制作方法等。一方面可以提高学生使用ActionScript代码进行学习、编程的兴趣、能力,另一方面也使得我们的交互动画中有一些更真实、生动的特效场景。

四、探索出一条学习ActionScript脚本途径

通过前面两个案例的讲解,学生对于ActionScript脚本编程、实际运用均有

了一个初步了解与认识。

五、加强学生自我学习、模仿和练习交互动画的制作

五、综合案例实习强化学生程序设计能力

为了让学生制作出更加生动、更富有表现力和渲染力的交互动画,通过有代表性的综合案例分析,给学生讲解动画设计的原理、思路、涉及到的ActionScript脚本等等,不断提高学生分析问题、解决问题的能力,使他们能够顺利完成程序编写并掌握一些简单的算法,明白动画短片的一般制作方法,以及如何通过在动画短片中添加一些ActionScript脚本,使原来简单的动画短片变成功能完善的交互式动画。

参考文献:

[1] 章精设,缪亮等.Flash ActionScript 2.0编程技术教程[M].北京:清华大学出版社

[2]田启明,FlashCS5平面动画设计与制作案例教程 电子工业出版社

[3]李学进,杨微.Flash在教学中的应用[J].电脑学习,2006.2.

[4] 齐锦刚,曹丽云等.Flash MX 2004活学活用300问[M].北京:机械工业出版社,2005.

脚本语言篇3

print "Content-type:text/html\n\n";

print

Hello!

HeadofHTML

print "aaa";

print "";

它中间虽然也有一段似乎是HTML文档,但那是HTML文档嵌入了Perl程序,而不是反过来。

PHP是一种跨平台的服务器端脚本技术。它最初是一个人为了写他的主页而用Perl写

的"包装"程序,后来因为用的人多了,就发展了起来,现在已经是3.0版,用C实现,

在Unix和Windows 95/NT下都可以跑起来。

一、编译安装

PHP3.0有几个平台下的编译好的版本,也有源码版本。

PHP3.0内部带了对几种常用数据库的支持,包括:Sybase,Oracle,mSQL,mySQL,PostgresQL,

ODBC,dBase等。如果编译它的源码时选择对这些数据库中某几个的支持,那么必须事先

有它们的客户库。

在Unix下编译的方法是:先解压,然后运行"./configure [选项]",再运行"make"和"make install".

选项中比较重要的有:"--enable-msql=msql库路径"等数据库选项和"--enable-apache=

apache源程序路径"等。

如果选择了--enable-apache,那么编译出的将是一个库文件,make install将把这个库安装到apache源程序中,然后再编译apache,可以得到支持php的apache服务器。否则,生成的将是一个解释程序。

在Windows下,有一个安装程序,界面不太好,而且有几个文件会报告找不到,跳过就可以了。装上后要把php3目录设成网络可执行的。Readme中说要手工修改Registry,但似乎用不着。

安装上之后,系统应该支持对.php3和.phps文件的HTTP读取了。(在Unix下需要修改服务器的srm.conf文件,具体看README).

如果安装时连进了apache服务器,那么速度应该是最快的。如果作为CGI程序执行,速度也还将就。如果系统支持FastCGI,那么解释程序也可以作为FastCGI程序运行。Windows下支持ISAPI的解释程序还没有出来。

现在我们来看看第一个php3脚本,照例是Hello,world.

First PHP3 Script

从上面的例子应该很容易看出php3文件的写法.用括起来的部分就是php3程序段,解释器对其余部分不作处理,将这些程序段执行后以其输出代替(echo语句输出一个无格式字符串,printf语句类似于C的同名函数.)

同样可以看出,php3程序虽然是文本,但客户端只能看见解释后的结果(除非你提供同名的phps文件),因此对客户端是保密的,这也是绝大部分服务器端脚本的特点.

二、变量和数组

PHP和一般的解释性语言一样,不需要事先定义变量.如果你试着使用一个没有赋过值的变量,那么返回的值是空字符串.对一个变量赋值则也就同时分配了这个变量的内存.

PHP的变量名前面必须有一个$号,这也是很多脚本语言的惯例了.

例如:

$a=1;

$b=1.0;

$c="Hello!";

都是合法的PHP语句.

PHP中的数组是这样定义的:

$a[1]="a";

$a[2]="b";

它会自动扩展,不必预先设定上限.

其实数组下标也可以是一个字符串,例如:

$a["a"]=1;

$a["b"]="Hello!";

这时它实际上是一个哈希表,就象Tcl中的所谓数组一样.

PHP中有一种类似于指针的用法,例如:

$a = "b";

$$a = "c";

则后一句产生了一个$b变量并给它赋值"c".

PHP变量之间的运算符和C的类似,例如也有:

+,-,*,/,%,^,&,|,&&,||,!,+=,-=,++,--等

PHP3.0定义了一个字符串相加运算符".",和Perl的一样.

PHP的变量类型可以自动转换,如果需要强制转换,做法和C的一样.它有Integer,

Double,String三种简单类型.

要遍历一个HASH表,可以这样:

$i["a"] = 0;

$i["c"] = 1;

reset($i);

for ($j=1;$j

$k = key($i);

echo "$k, $i[$k]";

echo "

";

next($i);

}

PHP中的控制流语句与C几乎完全一样,也有if...else, while, for, switch, break, exit.

三、函数的使用

PHP3.0中的函数如下例:

function test($a, $b) {

return $a*2+$b;

}

函数和C差不多,可以递归调用.

PHP3.0的变量作用域规定也类似于C,即缺省认为主程序中的变量是全局变量,而函数中的变量都是局部变量,即使有同名的全局变量也不使用.

如果在函数中要使用全局变量,则必须在函数头上用global语句声明,

例如:

function ...{

global $a, $b;

...

}

如果函数头上用static语句声明了一些变量,那么这些变量是静态的,其含义与C语言中的相同.

PHP中提供include语句,类似于C的#include.

include语句包含的可以是任意文件,它的内容将出现在最后输出的页面上.如果该文件中有括起的部分,则该部分将被PHP解释器解释执行,否则该文件的内容原封不动地送出.

它包含的文件名可以是绝对或相对路径,也可以是一个http或ftp的URL,在后一种情况下,解释器自动取来该URL内容.用这种方法甚至可以触发一个别的机器上的CGI程序.

脚本语言篇4

关键词: 间接言语行为 转喻理论 言语行为脚本理论 理想化认知模式

1.引言

间接言语行为究竟是如何传达说话者的意思的?受话者又是如何理解说话者的施为意图的?不同学派的语言学家对此作出了不同的解释。随着grice合作原则(cooperative principles)的提出,语用学家们普遍认为:要成功完成间接言语行为的交际,听话者对说话者的言语就要做出一定的推测(inferencing)。searl(1975)更是认为听话者需要10个步骤的推理才能完全理解说话者的施为用意。语用学家的推理理论有一定的合理性,但却不能解释为什么听话者能够闪电般地理解说话者的真实用意。认知语言学中的转喻理论对此作出了合理的解释。认知语言学家认为,转喻作为人类的一种重要的思维方式,在诸如请求、建议、承诺等间接言语行为中起着非常重要的作用。人们在以言行事时经常会用言语行为中的某一属性来实现整个言语行为。panther与thornburg的言语行为脚本理论(speech act scenario)的提出进一步证实了运用转喻理论对间接言语行为进行解释的合理性,同时也为推理理论提供了认知理据。

2.间接言语行为的提出

美国著名哲学家searl在austin的言语行为理论基础上,进而提出了间接言语行为理论。在searl看来,间接言语行为是指通过实施一个行事行为而间接地实施另一个行事行为(one illocutionary act is performed indirectly by way of performing another)(searl,1975)。他认为,在间接言语行为中,说话人的话语意义(utterance meaning)和句子意义(sentence meaning)是不一致的。话语意义是首要行事要点(primary illocutionary point),句子意义是次要行事要点(secondary illocutionary point)或字面行事要点(literal illocutionary point)(姜望琪,2003)。因此,间接言语行为可以说是一种主要的施事行为通过另一种次要的施事行为间接地实现的。

根据searl的解释,间接言语行为可以分为规约化间接言语行为和非规约化间接言语行为。前者是指言语具有某些句法特征,含有言外之力显示项,听话人根据语句的字面之力,按照长期使用的规约习惯即可推断出说话人的交际意图。如:can/will you open the window?在大多数语境下并非问对方是否有能力或是否愿意打开窗户,而是通过询问听话者的能力或意愿来间接实施指令行为。当然,规约性间接言语行为有时会受到语境的制约。如同样一句话“can you play basketball?”在不同的地方使用说话者施为意图可能就不同:如果说话者是一个人在篮球馆里打篮球,可能就是想让听话者加入打篮球的队伍中,而如果在火车上聊起,就应该是询问听话者是否会打篮球。非规约化间接言语行为则不具备明显的句法特征,此时听话人必须联系具体语境、根据双方共有的知识和会话原则才能推断出说话人的施为用意。如:说话者在某些语境下可以用:“it’s hot here.”来间接表达请求或命令听话者打开窗户。本文将运用认知语言学中的转喻理论,主要是panther与thornburg的言语行为脚本理论对规约化间接言语行为和非规约化间接言语行为进行分析。

3.转喻的内涵

传统上,转喻和隐喻都被看作是一种修辞格,被认为只是文学家、修辞学家研究的领域。随着认知语言学的发展,人们逐渐意识到转喻不仅仅是一种修辞手段,还是人类认识事物的一种重要的方式;它不仅存在于语言中,而且存在于我们的一切思维、行动中,是人类所共有的普遍思维方式之一。可以说,我们的行为和思维所依赖的概念系统从根本上来说具有转喻的特性(lakoff & johnson,1980)。lakoff与johnson认为,转喻是隐喻的一种,两者既有区别又有联系。它们都是从始发概念向目的概念的映射,但隐喻是在不用概念域(conceptual domain)或称认知域(cognitive domain)(ungerer与schmid称为认知模型(cognitive model)之间进行的映射(mapping),而转喻是在同一认知域中进行的映射,即同一认知域中一个范畴被用来代替另一个范畴(ungerer&schmid,2008)。

与隐喻不同,转喻是基于邻近性(contiguity/proximity)的一种认知方式。它的主要功能是指称(referential function),用一事物来指代(stand for)另一邻近的事物。如用部分代整体、生产者代产品、被使用的物体代使用者、控制者代被控制物、机构代负责人、地点代机构、地点代事件等(lakoff & johnson,1980)①。

4.间接言语行为中的转喻

4.1转喻的认知理论基础。

4.1.1理想化认知模型(idealized cognitive model,简称icm)。

转喻概念的形成与我们固有的理想化认知模型是密不可分的。理想化认知模型由lakoff首先提出,它是认知语言学中一个十分重要的概念。所谓icm,就是指在特定的文化背景中说话人对某领域中的经验和知识所作出的抽象的、较为完整的、理想化的理解,这是建立在许多认知模型(cm)之上的一种复杂的、整合的完形结构,是一种具有格式塔性质的复杂认知模型(王寅,2005)。按照lakoff的论述,认知模式是在人与外部客观世界相互作用的基础上形成的认知方式,是对我们的知识进行组织和表征的一种特定方式。它不是客观存在的,而是处于一定社会和文化中、具有主观能动性的人对客观世界进行认识、加工、改造的结果,因此是理念中的(idealized)认知模式。这种理念化的认知模式由许多认知模式集合在一起,因此又称集束模式(cluster models),它有时比单独的一个认知模式更为基础(lakoff,1987)。比如对于“骑自行车去学校”这个事件,处于一定社会文化中的人会根据自己的经验和认知在头脑中激活一个相应的icm,至少包括以下几个部分:拥有或可以得到自行车;骑上自行车;向学校行驶;停放自行车;到达目的地。对于询问如何到学校的回答可以根据具体的语境凸显这个icm中任何一个部分来代替icm整体,这就是转喻,此种言语行为就属于间接言语行为。

4.1.2言语行为脚本理论(theory of speech act scenario)。

言语行为脚本理论由panther与thornburg提出,他们同意lakoff,fillmore等人的观点,也认为我们做某件事时是在一个理想化认知模型或框架中进行,他们称之为脚本(scenario)。他们同时还认为言语行为和非言语行为一样,也存在一个脚本,脚本由一系列的部分(parts)组成,各个部分之间、部分与整体之间通过转喻链(metonymic link)连接。脚本的任何一个部分都可激活整个脚本,这就是转喻。这为解释间接言语行为提供了很好的认知理据。

国内程琪龙教授也持同样的观点。他从神经认知的角度出发、通过分析事件的概念框架认为:说、做、想同一件事情,大脑中应该具有相同的事件框架。同一件事情的不同表达只是因为激活的概念成分不同,激活的成分是显性表达的成分,其它没有凸显(profile)的成分则在同一个事件框架中处于半激活状态(程琪龙,2006)。

4.2间接言语行为的脚本分析。

panther与thornburg认为,言语行为的脚本至少包括以下三个阶段:

a.前段(before):指行为的准备阶段,它是行为开始前必须满足的基本条件。

b.核心、结果段(core and its result):表明行为特点与成功完成行为的即时结果。

c.后段(after):指行为所带来的预期后果。

以表示请求的间接言语行为“will you open the window?”为例,其脚本简单表示为②:

不仅规约性间接言语行为可以用言语行为脚本图式来表示,非规约性间接言语行为也同样可以作出类似的表示。例如:it’s hot here.说话者的真实意图是想让听话者打开窗户,但他的言语中不具备类似规约化间接言语行为的句法特征(would you open the window?),因此是非规约化间接言语行为。这个请求有以下的言语背景(background):说话者断言这里很热;“热”不受说话者欢迎;说话者希望听话者做些什么使这里变凉快一些,而听话者也有能力使这里变凉快。因此,说话者要求听话者“open the window”,从而使这里变凉快一些。可用图式表示如下:

panther与thornburg认为,对脚本中的成分来说:离脚本中心(core)越近,认知距离越近,转喻能力越强;话语中被激活的言语行为脚本成分越多,从部分到整体的推导就越容易。从以上图中可以看出,非规约性请求中激活的脚本成分比规约性请求中激活的脚本成分离中心要远,因此,非规约性间接言语行为比规约性间接言语行为的转喻能力要弱,从而显得更加间接。又如顾客在商店里对店主说:“do you have cups?”激活的脚本成分就没有“can you give the cup to me?”多,因此前者没有后者的转喻能力强。从店主的一般回答中我们也可以看出两者转喻能力的差异。对于前者店主一般会回答“yes/no.”而对于后者店主则一般会付诸行动——将杯子拿给顾客,而不仅仅简单地回答:“yes/no.”

5.间接言语行为中转喻的类型

根据panther与thornburg的言语行为脚本理论,间接言语行为中的转喻主要是指利用脚本内某一成分段来指代整个言语行为的过程,主要有以下几种类型。

5.1用前段代整体。

如:he waved down a taxi and went to the railway station.

他叫了一辆出租车去火车站去了。

“搭乘出租车”事件具有复杂的脚本:拥有交通工具登上交通工具乘坐交通工具到达目的地交通工具停止行驶,乘坐者从车中出来到达目的地。此处用前段“叫了一辆出租车”来代指整个乘出租车的过程。

5.2用核心段/结果段代整体。

如:you are not a little child!you must help your mother to do the housework.

你不是个孩子了,应该帮助妈妈做家务。

此处用核心段——听话者有义务做某事来指代做家务整个事件。

5.3用后段代整体。

如:敬爱的周总理永远地闭上了眼睛。

“闭上了眼睛”表示“逝世”的意思,此处用脚本中的后段来指代整个逝世事件。

6.结语

panther与thornburg的言语行为脚本理论从认知的角度对间接言语行为作出了一个很好的阐释,克服了传统的语用学对间接言语行为解释的不足,但言语交际是一个复杂的过程,对话语的推导不仅仅依赖于话语与大脑中概念内容的连接程度,还应该考虑其它语用因素,如交际双方的权势地位关系、礼貌程度等。只有综合考虑这些因素,才能更好地解释间接言语行为的生成和理解。

注释:

①本文中所指的转喻不仅仅限于词句的转喻,还包括概念转喻.

②s:说话者;h:听话者;a:做某事.

参考文献:

[1]ungerer,f.&schmid,h.j.an introduction to cognitive linguistics[m].foreign language teaching and research press,2001.

[2]lakoff.george.women,fire and dangerous things[m].chicago and london:the university of chicago press,1987.

[3]lakoff,g.&johnson,m.metaphors we live by[m].chicago and london:the university of chicago press,1980.

[4]panther,klaus-uwe & thornburg linda.a cognitive approach to inferencing in conversation[j].journal of pragmatics,1998.

[5]panther,k-u & thornburg,l.on the nature of conceptual metonymy[a].in panther,k-u & thornburg,l.(eds.)metonymy and pragmatic inferencing[c].amsterdam/philad-

elphia:john benjamins publishing company,2003.

[6]searl,j.indirect speech acts[a].in cole,p.& morgan,j.(eds.)syntax and semantics,speech acts[c].new york:academic press,1975.

[7]searl,j.expression and meaning:studies in the theory of speech acts[m].beijing:foreign language teaching and research press,2001.

[8]sperber,d. &wilson,d.relevance:communication and cognition[m].beijing:foreign language teaching and research press,2001.

[9]程琪龙.概念框架和认知[m].上海:上海外语教育出版社,2006.

[10]姜望琪.当代语用学[m].北京:北京大学出版社,2003.

[11]李勇忠.间接言语行为中的借代[j].解放军外国语学院学报.2003.

脚本语言篇5

论文摘要:和谐的人际交流与会话离不开礼貌原则。而转喻在认知语言学中是人们认识事物的一种重要方式。本文从言语行为转喻角度,探讨会话交流中礼貌原则是如何实现的,作者认为,正是借助于转喻,才使得会话中说话者与听话者在遵循礼貌原则的情况下。达成相互理解。

一引言和谐的人际会话离不开礼貌.

礼貌原则是会话中的个重要的原则貌通常被人们理解为说话人为了实现某一目的而采用的策略,比如增加或维护双方的和睦关系。出于礼貌。人们在交际中往往违反会话准则以含蓄地表达自己。礼貌是一种语用现象.在交际中通常被用来维护交际双方的面子。leech(1983)指出,礼貌原则由六条准则(maxim)组成,分别为策略准则、慷慨准则、赞扬准则、谦虚准则、赞同准则和同情准则。leech提出的礼貌原则概括地说,就是在所有条件相同的情况下,最大限度地表示出对他人的尊敬和友好。

以往对于礼貌原则的研究,更多是侧重于从语用学的角度。本文从认知语言学的言语行为转喻,对会话中的礼貌原则进行研究,旨在从言语行为转喻角度回答下面的问题:为什么说话者出于礼貌考虑而采用的看似与对方话语不关联的语言可以为听话者所理解?

二、转喻及言语行为转喻

在传统修辞学中,转喻是一种修辞格。但在现代的认知语言学中,转喻是人类重要的思维方式,是人类认识客观世界的重要手段.panther&thornburg(1999)把转喻分为三类:指称转喻、述谓转喻和言语行为转喻。指称转喻是用一概念代指另一概念.如:there are some newf aees in the classroom.(fjface代替people);述谓转喻是指用一种表达式来借代另一种表达式。如:用“1 wasa bleto finish my homework.”代替“i finished my homework.”:言语行为转喻是用一种言语行为来借代另一种言语行为。如:用疑问句“can you passme thesalt?”代替祈使句“pass methesalt.”言语行为转喻是由thom burg和panther(1997)提出的。他们从认知角度研究间接言语行为的转喻思维机制。提出言语行为脚本的概念,并认为言语行为是有结构的行为脚本,一个行为由三部分组成:(1)前段(before):指行为的准备阶段,它是行为的条件和动机;(2)核心及结果段(c0reanditsresult):这是行为的区别性特征,它表明行为的特点及成功完成一项行为的即时结果;(3)后段(after):指行为所带来的后果(李勇忠,2003)。在行为脚本内存在着互为替代的关系,脚本内任何一部分都可根据交际的需要用于替代整个言语行为。因此,在言语交际过程中,转喻不再是词语的替代,而是激活事件整体或者事件整体激活事件部分的认知过程。

三、从言语行为转喻角度分析请求场景中的礼貌原则

在会话中,说话人是怎样采用转喻来实现礼貌原则的?并且说话人的礼貌话语如何被听话人理解。产生会话含义?笔者主要从请求场景分析会话者是如何运用转喻的思维遵循会话中的礼貌原则的。

在向他人发出请求时,可能伴随对他人面子的损害,影响话语的和谐。因此,说话人常常利用转喻的思维,使自己在提出请求时尽量符合礼貌原则。thornburg和panther(1997)描述了“请求”的言语行为脚本:before:h(听话人)有能力做某事,s(说话人)想要h做某事;coreanditsresult:s使得h有义务做某事:h有义务去做某事:after:h会去做某事。(孙亚,2007)在这个脚本中,根据言语转喻的思维.任何一个场境都可以替代这个脚本.也就是说任何一个场境都可以使请求的脚本激活,从而使说话人达到请求的目的。我们下面来看几个例子:

a.i request you to give me a cup of coffee.

b.can you give me a cup of coffee?

c.w ill you give me a cup of coffee?

d.the coffee smells very good.

这四句均可以请求他人为自己拿咖啡。对照请求脚本,a句激活了脚本中的核心场境,说话者使得听话者有义务做某事,直接达到了请求的目的,在表达请求时最不容易误解,但它违背了礼貌原则中的策略原则,直接命令他人。极大损害了别人的面子b句不是直接的命令而是询问。因此b比a更符合礼貌原则中的策略原则,即使听话人受损最小。它从字面上看是询问听话者的能力,属于请求脚本中的前场境,询问听话人有没有能力做某事。它可以激活整个请求行为脚本.达到使听话人去做某事的效果。因此,在遵循礼貌原则中的策略原则,在保全听话人的面子的情况下,通过言语行为转喻.b句激活了请求脚本.一样达到了表达请求的目的。

同样,c句是委婉的问句。它是问听话者将会给说话者拿杯咖啡吗。从字面上看没有命令的意味,使听话者受损较小。这句话可达到请求效果,是因为它是就后场境进行提问,用脚本的后场境,即听话人会去做某事来代替整个请求脚本。这样可以最大限度地使听话者受损最小,遵循对话中的礼貌原则.不至于破坏会话的和谐。句最为礼貌。它从字面上看是叙述事实句,不是施为句.它是这四个句子中最符合礼貌原则中的策略原则的。它根本没有损害听话者。在一些情况下,比如听话者是咖啡制作者的情况下,它还可以看作是对听话者的一种赞美,更符合了礼貌原则中的赞美原则。它不在请求脚本的三个场境之内,而是请求场境外的话语。听话者需更多的语用推理,才能认识到说话者的请求。在具体语境中,它可起到请求的作用,激发间接言语行为。比如说话者对刚煮了咖啡的听话者要求喝咖啡时,用“咖啡真香”表示请求这样.场境外的话语也激发了请求脚本,实现请求行为。这句请求也最为礼貌,对听话者进行了赞美。但是。这句话离核心场境的距离较远.转喻的连接力度比其他几个例子都要弱。因此,最易被误解。若我们换一个场境,其表请求的效果就全无了,如说话者是在评论咖啡的味道时。这句话仅仅是一句赞美。我们可以用图l表示

因此,d句既可以激活赞美脚本.又可以激活请求脚本。该句不是代表一个请求,而是指向一个请求。“代表和指向的区分显示了一个语句所表示场境的那个部分与该场境的转喻连接力度是有强弱差异的”(隋丽,2007)。可见.请求时的礼貌原则是通过言语行为转喻而实现的。通过运用请求脚本中的不同场境激活整个请求脚本.从而礼貌地达到请求的目的。然而,不同的言语场境在言语转喻中的代表作用和转喻连接力度是不同的。脚本核心段的转喻连接力度最大,离核心段越远,转喻连接力度越弱.它在代替整个脚本时。听者需要做出较大的语用推理。离场境核心越远,这种指代作用越容易受到外在语境的影响,转喻关系语境的依赖性越强。而与转喻连接度相反,当一个请求话语离请求脚本的核心段越远时,它越遵守礼貌原则.对于听话者面子造成的损害越小.而当请求话语与离核心段越近,越是违背了礼貌原则。所以,在表请求时,言语行为转喻的连接强弱与礼貌的强弱是反向的,呈此涨彼伏的关系。越是能代表请求脚本的话语,其礼貌性也就越弱,而越是位于请求脚本边缘的话语,其礼貌性越强

四、结语

脚本语言篇6

关键词:嵌入式; Python

1.Python实时嵌入式软件的特点

Python是一种解释型、面向对象、动态语义、语法优美、跨平台的开源脚本语言。理论上Python可以在任何平台(包括各种嵌入式操作系统,如Palm OS,VxWorks等)上编译并运行.。Python可以借助语言提供的API,使用C或C++来进行功能性扩展,既保留了方便灵活的语法和功能,又可以获得与C或C++几乎相同的性能。Python还被当作一种入门程序员最适合掌握的优秀语言,因为它免费、面向对象、扩展性强同时执行严格的编码标准。Python作为实时嵌入式系统,他具有极强的实时性与包含着嵌入系统所拥有的各种特点。

1.1 实时性

所谓实时性,即必须满足时间约束的特性。实时软件的处理速度并不一定非常快,重要的是需要准时和及时,如表1 所示。对于实时软件而言,其正确性不仅由系统的功能和行为特性决定,还依赖于系统的时间特性。与非实时软件相比,时间特性是实时软件的一个重要方面,它是决定实时软件成功与否的关键因素之一。

1.2 嵌入式特性

所谓嵌入,即一个系统A 内置于一个更大的系统B中,则称为A嵌入于B。嵌入式软件系统的一个突出特点在于,通常只为软件提供执行环境(运行环境),而不提供软件的开发环境(宿主环境)。也就说,嵌入式软件的开发环境和运行环境是不一致的。正是这个不同,给嵌入式软件的测试带来了不少的麻烦。因为即使在宿主机环境下测试再充分,也不能说明在目标机环境下该软件运行不出问题。因而,嵌入式软件还面临着目标环境的测试。这不仅增加了测试的代价,而且还带来了嵌入式软件的测试策略问题,即哪些测试分配在宿主环境进行,哪些测试分配到目标环境下进行。嵌入式系统中常见的类型恰恰又是实时系统。

二.实时嵌入式软件的测试环境

  要测试整个Python实时嵌入式软件的主要是根据测试软件的运行环境(目标机环境)和开发环境(宿主机环境)的不一致进行测试,这一特点导致实时嵌入式软件测试要对当前软件运行的环境进行测试。

2.1 Python嵌入式软件测试的系统结构

    Python实时嵌入式软件在软件的开发过程当中,大都属于在主机上进行软件编码,之后将该段代码编译之后加载到目标机上进行运行,并通过测试的方式,对该段代码进行错误、反复等白箱与黑箱的测试。由于目标机的资源相对匮乏,测试所得的信息在目标机上不便分析,通过主机和目标机之间的通信把测试所得信息上传回主机,再由主机中的测试结果分析工具对测试信息进行分析。嵌入式测试系统基本结构如图1所示。

2.2 宿主机及目标机的结构

如图2 所示,在宿主机方,在测试开始前制定测试计划,根据不同的测试目的选择相应的测试用例,生成测试脚本,通过脚本解释器实时解释非实时生成的测试命令,并将测试命令和数据通过目标服务器发送至被测目标系统;同时将从目标机上的测试获得测试结果数据后,可显示测试结果,以提示测试人员,还可以由测试结果分析工具对测试结果进行分析,最后传送回测试结果数据库,并生成测试报告。通常宿主机上进行的测试是单元测试。如果被测单元所使用的是高级语言或与目标机相同的汇编语言,则可以直接在宿主机上进行测试;如果被测单元使用的汇编代码与目标机不同,则需要指令仿真器。

在目标机方,测试接收测试命令后运行被测实时嵌入式应用软件,被测应用软件将测试后生成信息发送到测试中的一个专门任务的消息队列中,此任务负责在适当的时候将这些信息发送到宿主机方。同时目标服务器中也有负责接收测试所得信息的专门任务,它从目标机上的测试获得测试结果数据。无论在宿主机上进行的测试如何完善,在目标机上的测试仍然是不可替代的, 因为有一些问题只能在目标机上测试才可以被确认和发现。

3.脚本测试及脚本解释器

3.1脚本测试

在整个Python语言测试过程当中,对于脚本技术的引入是实现整个软件开发的自动化技术的最有效手段,软件脚本的测试不但可以减少测试人员的工作量,而且能够提高整个软件测试的可维护性、可在用性。实现软件测试过程当中用户与被测软件之间的相互支持。同时由于Python语言的移植性较好,在实现跨平台操作时,代码的重复利用性,可以增强软件代码的重复性使用的概率。

测试脚本的编制是编制具有正规语法的数据和指令的集合。在软件测试过程中,测试脚本通常以文本形式存在,由测试脚本组织用户所施加的一系列软件执行动作,达到驱动被测软件运行的目的,从而完成测试。

3.2脚本解释器

根据实时嵌入式软件测试脚本语言的设计,设计针对该语言的解释器。脚本语言解释器是脚本语言的支撑,解释器设计的成功与否直接关系到能否实现脚本化的实时嵌入式软件测试。针对上述脚本语言设计中所提到的用户施加的测试命令及其特性,则需要处理测试中各命令的时间要求以及命令之间的并发同步等问题,解释器应由两部分组成,即控制部分和解释部分。

控制部分的作用在于对测试脚本进行预处理,提取各种命令的执行脚本,生成按时间排列的命令表,然后根据实时调度时钟信号和条件判断触发解释部分的调用,借助在控制部分中的多命令处理方式可以保证测试中各种命令的并发和同步的处理,从而保证了实时嵌入式软件测试中对实时特性的要求;解释部分的工作原理是在控制部分按时钟信号触发后,加载需要解释的脚本执行代码,脚本源代码首先由词法分析器进行词法分析,分离出标识符、关键字和变量名等,然后由语法分析器根据语法定义,分析源程序的语法正确性并根据语义执行相应的语义动作,最后生成测试命令并通过目标服务器下载到目标机上,以驱动被测软件的运行。

4.小结

随着我国软件业的发展,作为软件质量保证的重要组成的软件测试已越来越受到重视,而软件测试自动化工具由于可以提高软件测试的有效性和效率。因此,软件测试自动化工具的开发已成为软件测试的一个重要研究领域。本文将Python语言作为实时嵌入式软件测试脚本的主要工作,初步浅谈了整个软件测试脚本的作用与实际方法。

参考文献:

[1]武海燕、晏立,嵌入式实时软件的任务构造[J],计算机工程,2010,36(7):39-41

[2]王海晟、楼文晓,嵌入式软件模拟测试平台的设计与实现技术[J],计算机工程,2006,32(15):247-249

脚本语言篇7

关键词:游戏引擎;脚本;集成;Lua

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)19-30167-03

The Application of Scripting Technology in Game Engine

YU Zao-bo

(College of Software Engineer, Southeast University, Nanjing 210018, China)

Abstract: Scripting Technology applied in game Engine is a new trend in nowadays. In this paper, we described the importance of Scripting Technology in Game Engine, and analysis the principle of communication between script and engine with the Lua Language.

Key words: Game Engine; Script; Integration; Lua

1 引言

游戏引擎的产生从根本上讲是为了代码的可复用,早期的游戏开发效率很低,几乎每款游戏都要从头编写代码,造成了大量的重复劳动; 然而每款类似题材的游戏基本框架是相对稳定的,这种特性使得可以把这部分相对稳定的代码从整个游戏中分离出来, 并且可以在多款游戏中重复使用。 现在的商业游戏99%以上都是这样工作的:首先开发一个游戏引擎,接着在虚拟机的基础上使用脚本语言系统创建一个引擎接口。游戏开发者,甚至游戏设计者,用脚本语言来创建游戏的真正逻辑以及整个游戏的行为。

2 游戏引擎

游戏引擎的发展到现在已经日益成熟,游戏的画面达到了一个瓶颈的高度了,引擎以后的发展方向难以朝着图形图像的改良而进行下去了。然而,引擎的作用绝不仅仅局限在游戏画面中,它会直接影响到游戏的整体风格。所以游戏开发者不得不从其它方面寻求突破,目前业界主要在关注以下两个领域:

1) 在引擎中引入脚本的技术,这种技术可以让游戏以合理的故事来触动游戏整体架构上的变化,使得玩家可以真实的体验到游戏情节的发展;

2) 在人工智能算法上的改进,在游戏中,敌人的行动与以前相类似的游戏来看,他们明显有了更多狡猾的为,而不再只是单纯的冲向玩家所在的位置。

这两方面的特点明显的突破了以往的引擎架构。现在越来越多的游戏开发者开始将游戏中的重点有单纯的视觉效果逐渐的转变成具有更丰富变化性的游戏内容,这也成功的说明了故事内容与人工智能对于游戏的重要性。是否能够支持更好的游戏故事内涵和敌人的反映特性己成为衡量引擎优劣的另一项标准。

3 脚本技术

3.1 概述

脚本是一种通常可以编辑和运行、具有极高抽象级别的编程语言,而脚本技术就是与此相关的技术的总称。由于其强大的自定义功能,脚本技术正在被越来越多的软件供应商使用。

脚本语言作为一类开发语言,主要有以下优点:

1) 快速开发。它们大大缩短了“开发、部署、测试、调试”周期;

2) 部署简便。大多提供即时部署能力,而无需花费大量时间在编译和打包周期上;

3) 与已有技术集成。它们大都构建在已有的组件技术,以便有效重复利用现有代码;

4) 易于学习和使用。技术门槛很低,可以轻松找到大量的使用者;

5) 动态代码。脚本语言能够被即时生成和执行,这在某些应用程序中是非常必要和有用的高级特性。

3.2 脚本在引擎中的作用

实现脚本编程系统能够的最根本原因是要避免硬编码,将游戏内容与游戏引擎相分离。这样,就可以在不需要重新编译整个工程的情况下调整、测试和修改游戏运行的机制和特性。这种模块化的结构促成了游戏开发工作量的划分,游戏编程人员负责引擎等核心技术的开发,而游戏设计者可以专注游戏本身的逻辑与策划。

从系统架构方面讲, 使用脚本可以减少与底层的耦合度。把游戏逻辑相关的部分放进脚本中,这部分模块实际上可以被多个游戏项目复用。因为脚本是基于虚拟机的,只要运行时环境接口一致,脚本部分代码便可以实现真正意义上的跨平台,这一点与java语言很相似。另外,脚本语言相对C++来说要简单的多,经过简单的培训,甚至策划人员也可以参与编写,大大降低了开发门槛。

4 脚本系统与游戏引擎的集成

4.1 原理分析

集成(Integration)是将两个或者更多个分离的、通常情况下不相关的实体连接在一起,使得它们为了一个共同的目标相互通信、协调工作。将两个实体集成最大的挑战就是如何在它们之间建立某种类型的通道,从而使得两者可以进行方便而又可靠的通信。

Lua是基于关联数组和可扩展语法结构设计的语言,具有变量无类型、动态定义类型、面向对象结构、编译产生中间代码和内存自动回收等特点,常被作为一种脚本嵌入于其它主系统中。但是Lua作为一种脚本语言,不是直接编译为机器码,而是在运行时通过运行环境或虚拟机执行源代码或中间代码。相比较编写引擎使用的C/C++语言代码,引擎与脚木的运行环境不同,从而导致了它们之间不能直接通信,所以集成的关键在于要在两者间建立一个抽象层,也就是接口,能够解释和传递它们的输入输出。一般来说,脚本系统的运行是通过使用静态库的方式实现的,这个库包括了两个关键部分:第一部分是运行环境,也称为虚拟机,用来把脚本语言翻译成机器语言;另一部分是与主程序连接的函数接口,提供把脚本嵌入到主程序的接口。它与主程序的关系如图1所示:

图1 lua与c通信

由图1可以看到,引擎与lua脚本之间的调用是双向的,即lua可以调用引擎函数,引擎也可以调用lua函数。Lua中用状态(State)这个概念描述运行时环境相关的某个具体实例的信息,每个状态在任意时刻都可以包含一个脚本,这个脚本已经被装载到内存当中以供使用。同时,由于lua运行时环境是运行在引擎上的,也就是说引擎能够访问lua的运行时环境,因此lua与引擎都能操作运行时环境中的堆栈。把栈作为两者通信的中间层,通过把全局变量、函数引用、参数、返回值等压入堆栈,以达到信息共享的作用。如图2所示:

图2 Lua堆栈

4.2 Lua调用引擎函数

为了使在引擎中定义的函数能够被Lua脚本调用,需要传递一个函数指针至Lua的运行环境,Lua提供了注册函数名的接口:

lua_register (lua_State *pLuaState, const char *pstrFunctionName, lua_CFunction pFunc);

只需要提供一个函数名称字符串,当前函数指针以及当前函数应导出到的具体Lua状态,函数lua_register()就会注册这个函数,这就是游戏脚本可以像访问其它函数一样来调用这个函数的原因。需要注意的是,如果第三个参数pFunc未被导出,会导致运行时错误。 正确的定义格式应该是这样:

int FuncName(lua_State *pLuaState);

由于Lua脚本对函数参数及返回值处理与C语言不同,Lua是把参数和返回值都压入当前State栈中,通过访问栈中的变量达到传递的作用,所以在lua_register()中没有对函数参数、返回值个数的说明。在函数调用时,所有对堆栈的访问都是相对与索引值1开始的,参数个数可以用lua_gettop()函数获得, 并用lua_to*()访问每一种类型的变量。例如一个函数参数表如下:

(int x, float y, string z)

需要采用下面的方式读取这3个参数:

int x = (int) lua_tonumber(pLuaState, 1);

float y = lua_tonumber(pLuaState, 2);

char *z = lua_tostring(pLuaState, 3);

函数返回值采用相反的方式进行返回,需要在C函数返回前将这些数值压入堆栈。假设要返回3个数值2、4、6,则代码应该如下:

lua_pushnumber(pLuaState, 2);

lua_pushnumber(pLuaState, 4);

lua_pushnumber(pLuaState, 6);

return 3;

注意由于lua可以返回多个值,所以最后要加上return 3。

4.3 引擎调用Lua函数

引擎调用Lua函数正好是与上节相反的过程,在lua中所有函数都可以看作是全局范围的,没有作用域的概念。当调用一个函数时,需要完成的第一件事就是将一个对该函数的引用压入堆栈,可以使用lua_getglobal()来完成这个工作:

lua_getglobal(pLuaState, "FuncName");

在这里,FuncName是一个字符串值,在脚本内部对应于函数的名称。紧接着要将函数参数压入堆栈,对于函数原型为:

function FuncName(int Param1, string Param2);

假设按照以下方式调用这个函数:

FuncName(256, "Hello!");

参数应该以下面的方式压入堆栈:

lua_pushnumber(pLuaState, 256);

lua_pushstring(pLuaState, "Hello!");

然后采用如下方式来调用函数:

Lua_call(pLuaState, 2, 1);

其中,2表示参数个数为2个,1表示返回值个数为1个。

最后是获取脚本函数返回值,该返回值同样是保存在堆栈之中。假设脚本函数返回一个整形值,那么应该用以下代码获取这个结果:

int iResult = (int) lua_tonumber(pLuaState, 1);

lua_pop(pLuaState, 1);

即取出栈中索引1的双精度值并强制转换为整形, 然后从栈中删除该值。

5 结束结

本篇文章探讨了脚本技术在游戏引擎中的地位与作用,并从原理层面分析了脚本与引擎集成的可行性,最后结合Lua这种脚本语言详细介绍了如何实现游戏引擎与脚本系统间的通信。脚本技术在游戏引擎中的应用是应游戏产业发展而产生的,它的发展大大提高了游戏开发的灵活性与高效性,也必然会得到越来越多的关注。

参考文献:

[1] Alex Varanese. Game Scripting Mastery[M]. 清华大学出版社.

[2] Diego Garces. 脚本语言总述 游戏编程精粹6[M].

[3] 云风. 游戏之旅――我的编程感悟.电子工业出版社.

[4] Roberto Ierusalimschy. Programming in Lua[EB/OL]. 2005.

[5] 房晓溪. 游戏引擎教程[M].中国水利水电出版社.

脚本语言篇8

关键词:脚本函数;WINCC;C语言;VBS;香料厨房防差错技术;配料系统

中图分类号:TS43 文献标识码:A 文章编号:1009-2374(2012)31-0049-04

香料厨房防差错技术是北京卷烟厂新上马的项目,供料方式由原来的人工推料到现场改为了集中调配、集中发料的方式,实现了烟草加工过程对控制信息化、智能化、自动化的要求。同时也要求了对现场发料的准确性,目前我厂统计的配置的香料品种48个,香精品种14个。由于品种繁多,极易出现发料错误,目前采用的是PLC采集现场编码利用S7程序进行编码比对,考虑到过程控制工业总线PRFINET的局限性,不能完全保证料液编码的比对正确(如工控限制条件的改变、网络通讯的故障都能导致料液编码的比对出现错误,模拟测试时就出现过误发料情况)。因此我们准备利用WINCC VB及C语言的脚本编程,通过调用ORACREL数据库中的烟牌名称与料罐中的料液名称,利用高级编程语言编写脚本进行比对,作为对编码比对的校验程序,确保发料的准确性。

1 脚本函数

1.1 脚本函数的介入

西门子公司在推出了WINCC V6版本之后,引入了脚本函数这一概念。使得整个WINCC系统通过完整和丰富的编程系统实现了双向的开放性。

借助C脚本动作,WINCC几乎可以无限制地访问ORACEL数据库及其平台上的各种应用功能。

而VB脚本也以其易用性和开发快速性赢得了广大用户的青睐。

1.2 C脚本及VB脚本的设计

1.2.1 C脚本。

internal functions(内部函数):内部函数是指C语言的内嵌函数,同被经常用到的函数。

project functions(项目函数):可生成全局访问的函数。

standard functions(标准函数):包含用于WINCC归档、编辑器、报警等功能。

action(动作功能):有用户创建,不由其他C脚本中调用,和其他函数不同,它是由其他判断触发的。

acyclic非周期型,根据时间和日期调用一次。cyclic周期型,分为每秒、每分、每小时等。tag triggered变量标签触发,当绑定的标签触发时触发。

上面这段程序是我们要创建的一个动作程序,如图3所示,每当我们创建好后就会自动产生一段缺省程序(圈中的部分是WINCC自带脚本注释),在我厂的香料厨房中基本应用的都是动作功能。

1.2.2 VBS。由于C语言脚本的开发相对复杂,制作周期较长,所以新版本的WINCC系统引入了新的脚本语言VB,WINCC集成了微软基于VB的运行期脚本语言,能够使用微软的标准工具进行编辑、调试。能够访问ActiveX控件和Windows应用的属性和方法。

VBS的应用:WINCC中实现动态化(图形编辑器中)、WINCC中的动态化、集成ActiveX控件;通过Microsoft outlook发送电子邮件;集成Microsoft internet Explorer;集成Acrobat reader;集成在线帮助功能、联接Office应用(Excel、word、access)、读写变量,启动报表;链接数据库。

2 香料厨房的C脚本及VB的应用

2.1 C脚本在配料系统中的应用

首先我们我们看到的是香厨系统在配料时弹出配料界面的C动作。

接下来我们来分析下这段C语言动作(我们以301号罐为例):

#include "apdefap.h" 插入一个文本

HWND hwnd=NULL 定义一个句柄目的是为了下文的弹出对话框找到出处

int iRet 定义一个名称为iRet的整型变量

hwnd=FindWindow(NULL,"WinCC-运行系

统-");调用的弹出对话框在WINCC中显示

if(GetTagBit("TL_B_PT_Start")&(GetTagWord("TL_I_PT_InSelect")!=1))

说明:一个嵌套功能语句"TL_B_PT_Start"在PLC中为配料启动按钮,"TL_I_PT_InSelect"为配糖画面中的料罐选择,这条语句的意思是当配料启动为1时且配料选择按钮不等于1时执行下一句。

if(GetTagWord("TL_I_PT_InSelect")==2) 当配料选则等于2时

iRet=MessageBox(hwnd,"配料画面不能打开,301罐配料正在进行中"

"操作提示" 说明:MessageBox函数弹出对

话框

",MB_OK|MB_ICONQUESTION|MB_ICONEXCLAMATION|MB_SETFOREGROUND|MB_APPLMODAL);当这条语句执行是弹出OK确认键

else {

SetVisible("配料1.PDL","画面窗口5",1); //Return-Type:BOOL

SetVisible("配料1.PDL","画面窗口4",0); //Return-Type:BOOL

SetTagWord("N_I_PT_InSelect",2); //Return-Type:BOOL

}

说明:从ELSE这条语句开始表示如果配料选择为2时执行else后的语句,SetVisible是弹出配料界面并将料罐号设置为1。

以上程序就是配料的过程中进行料罐选择的C脚本。

2.2 VBS脚本在配料系统中的应用

图7中的上述界面是由调制罐到将香料送到储存罐的动作过程。

Sub OnClick(ByVal Item) 声明子程序

If HMIRuntime.Tags("TL_I_JT_OutNO303").Read = 1 And (HMIRuntime.Tags("TL_TX_QG_Name413").Read >< "" And HMIRuntime.Tags("TL_TX_QG_Name413").Read >< HMIRuntime.Tags("TL_TX_QG_Name303").Read) Then

MsgBox "与413罐料液名称不符,不能出料",vbExclamation,"不能完成操作"

说明:上面一条语句是当"TL_I_JT_OutNO303"即303出料启动为1时,比较"TL_TX_QG_Name413"和"TL_TX_QG_Name303"这两个料液名称如果不同,弹出对话框"与413罐料液名称不符,不能出料",并且VB执行动作不能操作。

Else

If HMIRuntime.Tags("TL_I_JT_OutNO303").Read = 1 And ((HMIRuntime.Tags("TL_B_QG_OutAll303").Read = 1 And HMIRuntime.Tags("TL_R_QG_Weight303").Read + HMIRuntime.Tags("TL_R_QG_Weight413").Read >= 300) Or (HMIRuntime.Tags("TL_B_QG_OutAll303").Read = 0 And HMIRuntime.Tags("TL_R_QG_SWeight303").Read + HMIRuntime.Tags("TL_R_QG_Weight413").Read >= 300)) Then

MsgBox "超出413罐容量上限,不能出料",vbExclamation,"不能完成操作"

说明:此段程序中是比较"TL_R_QG_Weight303"与"TL_R_QG_Weight413",表示出料量超出413存储容量时不能出料。

Else

HMIRuntime.Tags("TL_B_JT_Start303").Write 1

说明:以上条件都不满足是将"TL_B_JT_Start303"变量置1即出料启动。

3 防差错程序的编写

首先我们先定义变量Dim s1 Dim s2 Dim Cn Dim RS

s1 = HMIRuntime.Tags("TL_TX_FT_Name302").Read 将S1的变量联接到"TL_TX_FT_Name302",此变量是来自现场加料点的料液名称

Set Cn = CreateObject("ADODB.Connection")

Set RS = CreateObject("ADODB.Recordset") 声明链接数据库的变量

Cn.Open "Provider=MSDAORA.1;Password=wang1001;User ID=zswang;Data Source=xlcf;Persist Security Info=TRUE"

说明:上一步已经声明过变量,这步是链接数

据库。

Set RS = Cn.Execute("SELECT mn_materialname FROM materialname WHERE mn_materialcode LIKE '" & s1 & "'")

说明:根据S1这个变量在数据库中找到相应的的料液编码。

If HMIRuntime.Tags("TL_I_FT_InNO302").Read = 1 Then

HMIRuntime.Tags("TL_TX_FT_ReceiveNN302").Write HMIRuntime.Tags("TL_TX_QG_Name407").Read

说明:上面这条语句是赋值语句是将现场加料点的料液名称赋给料罐的料液名称。

s2 = RTrim(RS(0))

If HMIRuntime.Tags("TL_I_FT_InNO302").Read = 1 Then

If RTrim(HMIRuntime.Tags("TL_TX_QG_Name407").Read) = s2 Then

HMIRuntime.Tags("TL_TX_FT_ReceiveNN302").Write HMIRuntime.Tags("TL_TX_QG_Name407").Read

HMIRuntime.Tags("TL_TX_FT_ReceiveName302").Write s1

HMIRuntime.Tags("TL_B_FT_CSend302").Write 1

Else MsgBox "所选料罐料名不同"

End If

说明:以上这段是我们根据后来的生产情况添加的香料厨房对比块,保证香料厨房出料的正确性,在我们之前声明过变量之后,首先将s2= RTrim(RS(0))即将数据库中调出的料液名称。当"TL_I_FT_InNO302"为1时,即料罐被选中时,比较"TL_TX_QG_Name407"与S2的变量是否相同,即确认现场发来的牌号与料罐存储的牌号是否相符,如果不相符即弹出对话框"所选料罐料名不同"。Rtrim是一个消除空格的指令,防止在数据库中输入时产生全角、半角等问题而导致误判断。

4 结语

我们添加的防差错程序基本是由VBS动作脚本编写而成,但是其中很多的料罐参数变量分别由配料的C脚本程序和调配罐到存储罐发料的VBS脚本提供。最开始设计的程序由于存在全角和半角的差异,经常误报所选料罐料名不同,因此我们在后面添加了Rtrim命令消除差异。在经过一段时间的观察后发现,检验正确率100%,没有发现误检测情况,杜绝了发料错误,提高了生产的可靠性、安

全性。

参考文献

[1] 周良志.C++实践之路[M].北京:人民邮电出版社.

[2] 西门子自动化与驱动集团.WINCC全局脚本手册[M].

[3] 龚沛曾,陆慰民.VB程序设计简明教材[M].北京:高等教育出版社.

上一篇:监控软件范文 下一篇:编程软件范文