图形编程范文

2024-09-06

图形编程范文(精选8篇)

图形编程 第1篇

夏令营开场伊始, 主讲老师第一句话就是“谁愿意和我一起做傻瓜”, 这个开场白引得学生哄堂大笑。老师似乎并不介意, 继续通过投影, 运用编程语言, 一句一句地列出了一个长长的程序, 并激活程序, 让连接在线路板上的几组LED灯或同时亮、或分组亮、或按照要求延时点亮……当老师停下手来的时候, 询问学生两个问题“好不好玩”、“想不想自己试试”, 回应很简单, 肯定前者、否定后者。

老师转而点名活动中为数不多的高中学生:“请你运用课堂里学过的算法与程序设计知识, 画出流程方框图来”, 而高中生却摆手表示这个知识点正是自己高中学业会考的失分点。老师并没有介意, 继续熟练地在屏幕上将刚才的编程显示转换成另一个图形编程界面。当犹如搭积木般的再次还原出刚才的调试结果时, 就连小学生营员都惊呼太神奇, 自告奋勇“我看懂了, 好容易”。大同学们则幽幽地旁白:“要是我们当时考试用这套软件, 我怎么会失分?”即使如此, 还是遭到了小弟弟小妹妹们的集体“嘲笑”, 有些好面子的大营员抛出了一句经典的评语:“现在你们知道傻瓜也是需要技术含量的了吧!”哄堂大笑之下, 学生们若有所思。

这个场景的设计, 意在为老师接下来讲解图形编程、迈过编程语言这道坎做了充分的铺垫和巧妙的过渡。其实, 在备课过程中, 老师们就选择Arduino还是Ardu Block作为教学平台, 着实动了番脑筋。有竞赛辅导经验的老师, 从培育竞赛选手的习惯思维, 赞成直接使用Arduino, 毕竟Ardu Block还有不少BUG, 不如前者开源充分, 且配件的选择也受到一定的制约, 系统不容易做大。但更多的俱乐部志愿老师更趋向从Ardu Block向Arduino过渡, 大家认为这不仅关系到能不能兼顾夏令营中众多零起点小营员的接受能力, 更重要的是要首先破除对编程的神秘感和恐惧感心理。于是, 集思广益之下, 有了开头的一幕。

●夏令营进程之关键词:合作

为了让孩子们真正成为实验游戏的主人。老师在接下来的辅导中, 不再停留在让学生模仿的阶段, 而是直接调用了一组非常繁复的图形“程序”, 要求学生在识读理解的基础上, 尝试优化这一程序。这个要求激起了同学们的热情, 但一段时间过后, 大家都发现仅凭个人的力量, 纵有新意, 也总是不尽完善。于是开始主动要求老师修改规则, 同意大家集思广益。这时老师又说了一句话, 让孩子们都不好意思了, 老师说:“谁规定了不可以交头接耳, 不可以团队合作?是你们自己的内心从一开始就自我划定了游戏规则!”

在这个场景的设计中, 不仅强化了对图形程序的理解, 也训练了营员的逻辑思维和解决问题的能力。为变图形为抽象, 接纳Arduino做了铺垫。而关于游戏规则的一段, 则是老师的临场发挥, 倒也切中了学生思维定势的死穴。

●夏令营深化之关键词:挑战

夏令营注重批判思维基础上的创新欲望培养, 无论是上午的PC界面编程虚拟演绎, 还是下午的实物组件配套实操, 老师们都坚持让学生、特别是小同学上台尝试, 再启发大同学给予指导。老师的教学角色始终半隐在幕后, 只是在一些关键节点上, 对走不出思维怪圈的孩子们给出了简明扼要的方向提示。比如, 有学生此前曾经学过App Inventor MIT, 还未深入, 只觉得与Ardu Block有些相似。老师就给出提示:App Inventor跟Ardu Block用同一个绘图核心, 都是从Star Logo来的, 这让学生恍然大悟。接下来他邀请几位有基础的同学, 临时创立了一个开源项目, 用图形的方式来重新编辑脚本。而指导思想恰恰源自Ardu Block、Scratch#以及App Inventor……到夏令营尾声时, 他们已经能用HTML5canvas描述函数以及简单的逻辑, 画出变量常量以及整个流程, 实现拖拽改变结构, 最后生成相应脚本代码。

这个场景预设, 是希望让同学们了解类似Arduino的图形化环境还有很多, 包括Ardu Block、Minigloq、Modkit、Scratch for Arduino、Mind Coder, 等等。即使是在Ardu Block内部, 也可以通过诸如r e p e a t模块规定执行次数, 代替程序上的 (val=0;val<255;val++) 。老师甚至鼓励同学们可以讨论、挑战下Ardu Block模拟器。

●夏令营回顾之关键词:重构

夏令营让学生大呼过瘾。夏令营课程犹如当年的美国车库文化, 以至于学生会调皮地大叫:“夏令营, 开门吧。”

就连零起点的小学生营员, 在尝试Ardu Block随便搭个框架居然可以生成代码之后, 在老师的指导下, 也完成了可视化编程环境与程序语言环境的比较与过渡。一位小同学甚至在中午用餐的间隙, 特意在爸爸面前现学现卖, 并说了一句让富有艺术家气质的父亲和老师们都感到震惊的建议:“这个图形编程非常适合像你这样看代码就头疼的电脑盲艺术家;我来教你, 一定会让你的作品锦上添花的。”这句话给我们夏令营的组织方和志愿者团队以很大的启迪:我们的信息技术课程有着广阔的天地, 在培育学科成长的过程中, 我们不仅要激活老师的成长冲动, 也有必要透过学生、邀请学生、与学生一起重构我们的课堂、课程和学科, 以及学科间的交叉和融合。

图形编程 第2篇

摘要 该文讨论了汉字图形窗口界面设计的一般方法,给出了窗口生成,窗口管理,菜单生成与管理,鼠标与键盘管理等实现的子函数,并给出了部分C语言源程序。这些函数的组合可以设计出丰富的.汉字图形窗口界面。

一、图形窗口设计函数

主要包括窗口生成与管理函数,如窗口生成,窗口打开,窗口关闭,窗口删除等。

1.窗口结构定义方法

typedef struct gwin {

int x0,y0,x1.y1; /*窗口位置及大小*/

int Border; /*窗口边框类型*/

int Wcolor; /*窗口背景颜色*/

char Wstate; /*窗口状态标志*/

char far *Buffer; /*指向窗口缓冲区指针*/

}GWIN;

在GWIN中,Border为窗口的边框属性,可以根据不同要求设计出多种边框类型业,以美化窗口界面。

2.窗口子函数

窗口生成子函数:Gwin * GwinCreate(x0,y0,x1,y1,border,colo

r)

int x0,y0,x1,y1; /*窗口位置及大小*/

BorderMode border; /*窗口边框类型*/

int color; /*窗口背景颜色*/

窗口显示子函数:GwinDisplay(GWIN *w)

w为用GwinCreate生成的窗口指针,即此函数画出窗口。

窗口打开子函数:GwinOpen(GWIN * w)

此函数调用GwinDisplay来显示窗口,并存储屏幕。

窗口关闭子函数:GwinClose(GWIN * w)

此函数关闭已打开的窗口,恢复屏幕,但此窗口数据还保存,可再次打开。

窗口删除子函数:GwinKill(GWIN * w)此窗口彻底清除窗口,不可重新打开。

3.部分程序

下面给出实现上述功能的C语言程序

/*Windows Create*/

#include

#include

#include

#include

#include

#include

#define CR 0x0d

#define Esc 0x1b

#define Left 0x4b

#define Right 0x4d

#define Up 0x4d

#define Down 0x50

#define OPEN 1 /*窗口为打开状态*/

#define CLOSE 0 /*窗口为关闭状态*/

#define MOUSE 0 /*是否有鼠标移动*/

/*定义窗口边框类型*/

typedef enum {

NoBorder,/*普通窗口,系统默认值*/

TBorder,/*窗口有凸边框类型*/

WBorder,/*窗口有凹边框类型*/

TWBorder,/*窗口有凸凹边框类型*/

WTBorder,/*窗口有凹凸边框类型*/

CBorder,/*窗口有汉字边框类型*/

... /*其它窗口类型*/

}BorderMode;

GWIN * GwinCreate(x0,y0,x1,y1,border,color)

int x0,y0,x1,y1;

BorderMode border;

int color;

{

GWIN *w;

w=malloc(sizeof(GWIN));

w->x0=x0;

w->y0=y0;

w->x1=x1;

w->y1=y1;

if(border==NoBorder)w->Border=NoBorder;

图形化编程的继电保护软件平台设计 第3篇

关键词:继电保护,软件平台,图形化编程,算法元件,实时操作系统

0 引言

早期由于CPU速度比较慢,RAM和ROM空间等的限制,继电保护装置软件普遍采用基于硬件体系的汇编语言或C语言手工开发,以前后台调度方式运行,对不同的硬件平台,代码复用率低,软件可移植性差,软件可靠性差。随着嵌入式硬件技术的飞速发展,继电保护软件开发向着模块化、可视化、平台化的方向发展已成为不可逆转的趋势。

本文提出一种图形化编程的继电保护软件开发平台,该平台基于稳定可靠的嵌入式实时多任务操作系统,并采用模块化、元件化的设计理念,以可视化的逻辑框图替代传统的编程语言[1,2,3,4,5],从而简化了继电保护装置的开发过程。

1 软件平台的系统架构

如图1所示,软件系统主要包括以下三个主要组成部分:

1)运行于通用计算机的集成开发环境;

2)运行于装置中的嵌入式支撑平台;

3)硬件设备驱动层。

2 软件平台的设计方案

2.1 集成开发环境

集成开发环境运行于Windows平台,是本软件平台的核心组成部分。继电保护开发人员通过集成开发环境对保护装置进行建模,配置硬件资源,通过图形化的开发工具绘制保护逻辑图,并生成最终可执行程序,将该执行程序下装到保护装置中运行,即完成了一台保护装置的开发。

该集成开发环境包括以下几个模块:装置信息配置工具、电力应用算法元件库、图形化编程开发工具、逻辑编译器、C语言编译器、执行代码下装工具等进行保护装置开发和调试必须的配套软件。

2.1.1 装置信息配置工具

该工具基于面向对象的原则对装置进行数据建模,并配置装置需要用到的各种硬件资源。

装置建模数据主要包括装置基本信息和保护逻辑所用到的各种参数。装置运行的基本信息包括:装置型号、软件版本、系统频率、每周波采样点等;保护逻辑所用到的参数包括:定值、软压板、事件、控制量、遥测、遥信等。以上的参数还同时具备各自的属性,这些相关属性也需要同时在信息配置工具中配置出来,例如:定值包括名称、单位、值的范围、步长等属性。

装置的硬件资源配置主要指装置与硬件相关的各种输入输出资源的配置,包括以下几个部分:

1)模拟量通道输入。相关属性包括,通道名称、通道属性(电压、电流通道等)、通道系数等。

2)开关量输入。相关属性包括,开入名称、合位定义、分位定义等。

3)开关量输出。相关属性包括,开出名称、合位定义、分位定义,开出属性(常开、常闭或双位置)等。

4)硬压板。相关属性包括,压板名称以及压板所投退的保护单元。

5)指示灯。相关属性包括,指示灯名称、默认状态。

6)通信硬件接口配置。用于配置装置所具备的各种通信接口,例如,RS485、CAN、Profibus、以太网等。

以上所配置的装置建模数据和硬件资源都会以数据结构的形式保存下来,在图形化编程开发工具中可通过各种接口元件进行访问。

2.1.2 电力应用算法元件库

所谓元件,就是将一些经典的继电保护功能或算法进行功能划分,然后将每个划分好的功能或算法封装成一个独立的元件,这些元件具有透明的外部接口,即入口和出口对外界是完全透明的,但元件的内部则一经封装就固定不变了[6]。

在本平台中,根据实现的功能不同,元件分为以下几种类型:

1)基础元件。包括与、或、非、异或、加、减、乘、除、大于、小于、等于、大于等于、小于等于、最大值、最小值、定时元件等,这些元件都用于实现一些最基本的算术逻辑运算。

2)接口元件。一般用于访问信息配置工具所配置的装置建模数据和硬件资源。接口元件包括定值访问元件、软压板访问元件、事件生成元件、遥测读写元件、采样缓冲区数据访问元件、开入状态读取元件、置开出元件、硬压板状态读取元件、置指示灯状态元件等。

3)保护算法元件。一般指已经封装成一个独立元件的经典成熟的继电保护原理或算法,包括傅里叶变换元件、谐波计算元件、均方根元件、差动元件、过量和欠量元件、记忆元件、突变量元件、PT断线元件、CT断线元件、CT饱和判别元件、变压器钟点数转换元件、过负荷元件、阻抗元件等。

将以上这些基础元件、接口元件和保护算法元件分类组织,并集成到集成开发环境中,这样就形成了电力应用算法元件库。

由于集成的保护算法元件并不能够覆盖所有可能的保护算法,并且保护原理和算法也会随着电力系统的发展而不断改进,因此本平台所提供的电力应用算法元件库是开放可扩充的,继电保护开发人员可以根据自己的需要,通过集成开发环境提供的元件自定义工具设计合适的保护算法元件,其设计过程如下:首先定义保护算法元件的输入和输入接口的数据类型、输出和输出接口的数据类型,然后在元件自定义工具中以标准C语言手工编写输入与输出的算法关系和运算逻辑,这样就完成了一个保护算法元件的自定义,自定义的各种元件可以和元件库中的标准元件一样使用。

电力应用算法元件库中的元件均可以重复使用,在装置开发时可以将这些元件任意组合,灵活使用,只要配置好元件对应的输入和输出,即可实现预定的功能,从而有效提高了产品在工程化中的规范性、可靠性和安全性,也使得继电保护装置的开发周期更短。

2.1.3 图形化编程开发工具

图形化编程就是将继电保护编程的过程用图形的方式表示出来,也就是说原先用手工编程方式来实现的保护逻辑功能现在用图形来实现[7,8,9,10]。用户只需选择电力应用元件库中的基础元件、接口元件、保护算法元件或者开发人员自定义元件,通过连接线将这些元件的输入与输出按照一定的逻辑关系连接起来,从而构造出保护控制功能和数据流。图形化编程技术极大地提高了软件开发的效率,其透明化设计思想,使用户容易理解和维护,有效降低出错率,提高了软件可靠性。

举例如图2,是一个典型的过流保护逻辑图。

在该逻辑图中,首先使用接口元件读取了信息配置工具中配置的模拟量通道采样数据,然后将缓冲区数据作为输入提交给实现傅氏变换的保护算法元件,傅氏变换元件经过计算,输出对应模拟量通道的有效值数据,三个有效值数据经过取最大值元件,计算出三相电流最大值,三相电流最大值与定值访问接口元件获取的当前过流定值进行比较,如果电流大于定值,并且经过延时元件判别20 ms内电流均大于定值,则20 ms后通过置出口的接口元件控制装置跳闸出口。

在该逻辑图中,简单展示了信息配置工具、电力应用元件库以及图形化编程开发工具三者之间的关系,在图形组态编程开发工具中,信息配置工具配置出来的装置建模数据和硬件资源信息,通过接口元件进行访问,作为原始数据,经过保护算法元件和基础元件进行算术计算、逻辑计算以及较复杂的保护算法计算,并根据计算结果的判别,对装置输出状态进行修改,这样就实现一定的保护功能。

通过图形化编程工具不仅可以实现保护逻辑,而且可以实现测量计算、控制逻辑等各种功能。

2.1.4 逻辑编译器

逻辑编译器是将图形化编程开发工具设计的逻辑图转换为C语言源代码的工具。在转换过程中,首先会对逻辑图进行顺序化处理,根据逻辑图中的全部元件按照连接线的先后关系确定元件的执行顺序;然后对逻辑图进行校验和检查,包括,元件的输入是否都已经确定,元件的输出是否连接到另一元件的输入,元件的输入和输出数据类型是否匹配等;最后根据元件执行顺序和输入输出连接关系生成标准的C语言源代码。

2.1.5 C语言编译器

针对不同的CPU平台,需要选用相对应版本的C语言编译器,这些C语言编译器一般都由CPU厂家提供。由于通过逻辑编译器生成的C语言源代码是完全符合C语言国际规范的,因此可以在各种不同版本的C语言编译器下编译通过,并生成最终的可执行代码,该可执行代码即为保护装置逻辑功能模块程序。

2.1.6 执行代码下装工具

本工具用于将C语言编译器生成的可执行代码下装到装置中去执行。

2.2 嵌入式支撑平台

嵌入式支撑平台运行于继电保护装置中,为集成开发环境开发出来的逻辑功能模块提供底层支持。如图1中所示,嵌入式支撑平台主要被分成两个组成部分:

1)嵌入式实时操作系统层;

2)嵌入式应用支撑层。

2.2.1 嵌入式实时操作系统

采用嵌入式实时操作系统(Real-Time Operating System,RTOS)作为嵌入式系统的软件底层,在RTOS的基础上可方便地实现多任务编程,各任务独立运行且可以互相通信。RTOS通过任务调度为各任务分配CPU,一个任务被破坏不会使其他任务异常。使用RTOS还可以提高开发效率,缩短开发周期。一个复杂的应用程序可分解为多个任务,每个任务模块的调试、修改几乎不影响其他模块。

目前,可供选择的操作系统很多,如vx Works,p SOS,nuclear,QNX,Free RTOS等,其中μC/OS-II[11]具有源代码公开、可移植性、可固化性、可裁剪性、可剥夺性、多任务、可确定性、有任务栈、系统服务、中断管理、稳定性与确定性等优点,用作继电保护装置的操作系统可开发出高效稳定的软件,提高装置的可靠性,降低开发成本,缩短开发时间和调试时间。虽然在系统中嵌入μC/OS-II会增加系统开销,即额外的ROM/RAM开销和CPU负荷,但μC/OS-II引起的CPU额外负荷一般在5%以下,而且系统中使用了外扩的RAM和ROM,因此使用μC/OS-II不存在问题[12,13,14]。

对继电保护装置来说,响应速度是最重要的性能之一,而响应速度一般用跳闸出口时间来衡量,跳闸出口时间是指从故障发生时刻到装置内继电器动作输出跳闸信号的时间。因此为了适应于高实时性的继电保护应用,在RTOS中将任务按照实时性要求划分了三个级别:快速运行级、慢速运行级、用户运行级。

1)快速运行级需要极快的响应时间,在模拟量采样中断中实现,系统频率和每周波采样点数确定的前提下,其调用时间间隔是确定不变的,例如对于50 Hz系统每周波24点采样情况下,每0.833 ms执行一次。并且采样中断的中断优先级是最高的,它的执行不会被其他中断或任务打断,采样中断一旦触发,RTOS就会马上中止当前正在执行的程序,跳转到采样中断入口地址开始执行,并直到本次采样中断全部执行完成才会释放对CPU的控制权。在快速运行级中主要完成AD采样、开入采集、开出处理、时钟处理、GPS校时处理、保护量计算以及保护逻辑处理等对时间要求和响应速度要求比较高的任务。这里需要说明的是,虽然时钟处理和GPS校时处理是在0.833 ms定时中断进行调用的,但是配合CPU的TICK计数器可以做到很高的时间精度。

2)慢速运行级设置为在10 ms定时中断中调用,主要用来完成对时间要求一般的保护逻辑和控制逻辑,例如遥控处理、测量量计算等。

3)用户运行级在RTOS的任务调度由系统调用,并根据各任务的重要性划分多个调度优先级,主要用于对时间要求比较低或者对时间基本没有要求的功能调用,例如HMI人机交互任务、外部通讯任务等。

2.2.2 嵌入式应用支撑层

嵌入式应用支撑层运行于嵌入式实时操作系统RTOS之上,为集成开发环境开发出来的保护逻辑执行程序提供较底层的支持,同时也完成保护装置正常运行所需要的一些基本功能。

嵌入式应用支撑平台与逻辑功能模块相对独立,逻辑功能模块是用于实现保护功能的一块独立的可执行代码段,其正常运行需要嵌入式应用支撑层的支持。逻辑功能模块运行时的输入数据由支撑层提供,例如各通道采样值、当前开入状态、定值、设置、外部命令等重要信息;同时逻辑功能模块的计算结果也需要通过支撑平台反应到装置,例如跳闸指令、遥测计算结果、开出状态等;并且保护逻辑功能模块的各保护逻辑的运行,都是通过支撑平台对其的调用来实现的。

图3显示了嵌入式操作系统、嵌入式应用支撑层和保护逻辑模块三部分之间的层次关系。RTOS运行于最底层,主要负责中断管理和任务调度。在触发采样中断后,RTOS会跳转到采样中断执行,然后调用嵌入式支撑层的AD采样处理、开入处理、开出处理以及GPS校时处理等模块,嵌入式应用支撑层在这些处理完成后,会通过交互访问接口运行保护逻辑模块的保护量计算和保护逻辑处理,如此即完成了快速运行级的执行;在触发10 ms定时中断时,如果此时RTOS不在采样中断中,则会跳转到10 ms中断进行处理,嵌入式应用支撑层同样会通过交互访问接口运行保护逻辑模块中的控制逻辑和测量计算处理,如此即完成了慢速运行级的执行;当CPU的控制权未被中断处理所占用时,RTOS会自动进行任务调度管理,根据任务优先级依次调度装置自检任务、通信任务、录波处理任务和HMI人机交互任务,如此,即完成了用户运行级的执行。

2.3 硬件设备驱动层

硬件设备驱动层是装置低层硬件的操作接口,包括采样值读取、开入读取、置开出、EEPROM数据读写、LCD液晶显示、按键读取、通信接口等直接与硬件相关的操作。通过硬件驱动层的封装,可以使其上的各软件层与硬件做到相对独立,如果移植到其他硬件平台,可以通过简单的更改驱动层代码即可实现。

通过硬件设备驱动层的应用,可以较大程度实现软件的硬件平台无关性,提高了软件系统的可移植性和可复用性。

3 软件平台的应用和移植

本文中的软件平台主要是基于单CPU架构进行设计的,保护逻辑处理、通信处理、HMI人机交互处理等任务均在同一CPU中完成计算,这样的平台架构可以在保证保护性能和可靠性的同时尽量地节省装置成本。但是在针对较高电压等级应用或电力企业用户对保护装置要求较高的情况下,单CPU架构将不能满足要求,此时就需要应用双CPU甚至多CPU的硬件架构,针对这种情况,嵌入式支撑平台只需做简单的调整即可适用:将通信处理和HMI人机交互从保护CPU剥离到管理CPU运行,同时保护CPU增加与管理CPU进行内部通信的处理任务。

在本软件平台中,HMI液晶显示部分是基于μC/GUI进行开发的,并已经实现了240×128液晶分辨率的支持,当应用于其他分辨率时,需要对HMI部分代码进行修改。本软件平台的对外通信已经实现了对CAN、RS485以及Profibus接口硬件的支持,当需要提供Longworks、以太网等通讯支持时,还需要后期进一步开发。

4 结语

图形编程 第4篇

1 概述

1.1 什么是验证码

验证码的英文CAPTCHA这个词最早是在2000年由卡内基梅隆大学的Luis von Ahn、Manuel Blum,Nicholas J.Hopper以及IBM的John Langford提出的。CAPTCHA是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写。如右图1所示。

1.2 验证码的作用

验证码实际上就是将一串随机产生的数字或符号生成一幅图片,并在图片中人为地加上一些干扰像素,以避免入侵者采用OCR技术获得验证码信息,这样才能保证提交给网站的验证数据安全可靠。

验证码主要用于防止恶意批量注册、恶意破解密码、刷票、论坛灌水等。实际上使用验证码是现在很多网站广泛采用的验证方式(比如网上银行、论坛或电子邮件等包含的验证码页面)。验证码的作用具体来说有以下几点:

1)防止使用特定破解程序进行不断的非法登陆尝试。

2)防止非法批量注册,生成大量垃圾账户。

3)防止利用机器人非法向BBS等Web应用灌水,提交垃圾数据。

4)培养用户谨慎、负责的操作态度。

2.3验证码的分类

常见的验证码大体可分以下三类:

1)四位数字和字母,可以都是字母,也可以都是数字,随机的4位字符串,是最原始的验证码,验证作用几乎为零。

2)图片格式,预先准备图片,随机调用生成图片验证码,验证效果优于第一种。

3)完全由程序随机生成某种序列图片,如:数字、字符甚至汉字,并加入干扰像素。防止OCR识别,仅仅满足用户肉眼识别图片的验证码信息,被大多数站点所使用。本文主要探讨的就是如何实现这种验证码方式。

2功能实现

我们使用C#在ASP.NET中实现了验证码的功能。

1)生成验证信息

验证码功能一般和具体业务没有联系。它的通用性较好,可以在多个系统中反复调用。首先要创建一个图片服务页面,专门用于提供包含验证码文本的图片。为此我们建立一个ASP.NET页面VerifyCode.aspx,该页面只生成图片,所以无需添加HTML代码,随机生成验证码及图片的代码保存在代码隐藏文件VerifyCode.aspx.cs中。代码如下:

在上述代码中,页面加载时执行了三个步骤,分别是生成随机码,将随机码保存至Session中,最后生成验证码图片。其中CreateImageOnPage是方法,在该方法内部调用其他两个方法:CreateVerifyCode和CreteImageCode,作用是将生成的验证码图片以数据流的形式发送至客户端,输出类型为image/jpeg。

CreateVerifyCode方法用来产生4位随机码字符信息,此信息被保存到Session中,以便用户输入时进行匹配验证。随机算法由Random类实现,利用NEXT方法获得随机整数,并将该数作为字符序列索引号使用,每个整数对应字字符序列中的一个字符。

CreteImageCode方法用来将通过CreateVerifyCode方法产生的验证码字符写入图片,我们利用了.NET Framework类库的Graphics对象,创建一个System.Drawing.Bitmap类型的图片对象,通过该对象绘制验证码及干扰图像(随机线条、像素)。

2)在表单中运用验证码功能

我们建立一个模拟系统登录的页面UserLogin.aspx,用来调用验证程序页面。上面放置输入用户名,密码和验证码的三个文本输入框。其中验证码输入框后面放置Image控件,用户输入三个信息后点击确定按钮进行登录。

表单部分代码:

运行登录按钮的服务器段代码:

在该代码中,程序获得用户输入的用户名,密码和验证码,然后判断用户名密码是否正确,还调用VerifyCode的静态函数CheckCode来判断验证码是否正确。只有这三个信息都正确才登录成功,否则登录失败。

我们在表单中使用Image控件作为验证图片显示控件,将其图片源路径设置为验证码页面“~/Util/VerifyCode.aspx”。在少数情况下,程序生成的验证码图片难以辨认,则需要重新提供新的验证码图片,我们增加Image控件的onclick事件,该事件重新调用VerifyCode.aspx页面,于是服务器端的验证码文本用了新的,而图片内容也随之更新。由于每次尝试登录或更换验证码图片时,正确的验证码都是随机发生改变,毫无规律,这样大大增强了登录页面的安全性。

4 总结

在本文中,我们一起研究了验证码技术的原理,并使用C#在ASP.NET中实现了简单的验证码技术。验证码技术是一种安全防御技术,其中涉及一定的图形编程。这样看来图形编程应用是广泛的,可以为很多技术提供支持。

参考文献

[1]杨小明,雷光辉,何青建.基于ASP.Net的Web网络应用程序开发的安全策略实践[J].计算机教育,2006(11).

图形编程 第5篇

MATLAB进行二维、三维图形显示时,程序语法简单,图形精度高,用VC++则需要几十行甚至数百行的程序,但VC++容易做出各种用户界面。在VC++环境下调用MATLAB中的图形显示函数,将二者结合进行编程,则可实现VC++和MATLAB在此功能上的互补及数据共享和数据可视化。

1 编程思路

VC++中调用MATLAB的常用三种方法。

(1)用MATLAB自带的编译器,把M文件翻译成C/C++代码,从而在VC++环境中进行调用,产生脱离MATLAB环境的独立应用程序,但需要MATLAB中的C/C++数学函数库和图形库的支持。图1为利用MATLAB编译器构建C/C++应用程序的过程。其中,阴影方块是用户写的代码,附有阴影的方块是工具软件,无阴影的方块是MATLAB编译器生成的代码,虚线方块是由C/C++编译器产生的目标文件和可执行文件。

(2)图2表示计算引擎应用的情况。

在VC++应用程序中调用MATLAB引擎,功能全面,但不能脱离MATLAB环境,不适于开发[1]。MAT-LAB计算引擎实际上是利用MATLAB提供的一组接口函数(API),在用户开发的语言应用程序中,通过某种通信机制后台调用MATLAB应用程序以完成复杂的系统任务。在Windows平台下,这种通信机制是利用COM应用接口IEngine来完成的。

(3)通过第三方软件MATCOM将M脚本文件和M函数转化为C/C++文件,转化过程简单,支持MATLAB图形功能,但是部分绘图语句无法实现或得不到准确图像,尤其是三维图形。故本文将介绍前两种方法。

2 编程实现

本文中的两个例子是基于Visual C++6.0,MAT-LAB 6.5.1的版本,对其他版本同样适应,均假定matlab安装在目录D:MATLAB6p5下。

2.1 MATLAB编译器

MATLAB随带了编译器,其主要功能是将.m文件翻译成各种源代码,要用到的命令为mcc。mcc的命令行参数很多,设置不同的参数可实现不同的功能。

2.1.1 MATLAB环境配置

编译器使用了CC++库函数,需要使用mbuildsetup和mex-setup对编译器进行配置。这两条命令是自动搜索系统上安装的编译器,然后对所选择的进行核对,Matlab下的环境配置设置一次即可。

2.1.2 mcc编译M文件

编写绘制三维曲面的M函数文件,命名为tripicture.m,程序如下所示:

%已知x,y的最大值与最小值,把x,y各分成50份,即x,y各有51个值

在MATLAB下利用mcc命令将tripicture.m翻译为C/C++代码,并提供图形库支持:

编译后可以得到几个文件,mesh.cppmesh.hpp,parseparams.cpp,parseparams.hpp,tripicture.cpp,tripicture.hpp,tripicture_mainhg.cpp,xlabel.cpp,xlabel.hpp,ylabel.cpp,ylabel.hpp,zlabel.cpp,zlabel.hpp及tripicture.exe和bin目录中的两个fig文件,需要的是.cpp文件及其对应的.hpp文件,bin目录中的两个fig文件。本例中要将所有生成的.cpp、.hpp文件和bin文件夹拷贝到建立的VC++工程中。

2.1.3 VC++环境设置

用MFC App Wizard(exe)建立一个应用程序,点击菜单项Project/Add To Project/Files…将所有拷贝过来的.cpp文件(本例中为tripicture_mainhg.cpp,parseparams.cpp,tripicture.cpp,mesh.cpp,xlabel.cpp,ylablel.cppe及zlabel.cpp)添加到当前工程中。

(1)选择菜单ToolsOptions,在属性页中选择Directories,添加头文件和库文件的搜索路径。

在Show directories for下拉框中选择Include files,添加路径:

再在下拉框中选择Library files,添加路径:

(2)选择菜单ProjectSettings…,选择Link属性页,在Category下拉框中选择Input。

在Object/library modules文本框中加入libmx.lib libeng.lib libmat.lib libmmfile.lib libmatlb.lib libmatpm.lib sgl.lib libmwsglm.lib libmwservices.lib,注意用空格隔开。在下面的Ignore libraries文本框中添加msvcrt.lib。

在属性页中选择C/C++选项,在Category下拉框中选择Code Generation,在Use Run-time Library的下拉列表中选择Debug Multithreaded DLL;同样,Category下拉框中选择Precompiled Headers,并选择Automatic use of precompiled headers,在Through headers编辑框中输入stdafx.h;同样,在C/C++属性页上,Category下拉框中选择General,在Preprocessor definitions编辑框中添加MSVC,IBMPC,MSWIND,用逗号隔开。

2.1.4 VC++中程序说明

把复制到VC++工程下面的所有.hpp文件全部添加为头文件(本例为#include"tripicture.hpp",#include"mesh.hpp",#include"parseparams.hpp",#include"xlabel.hpp",#include"ylabel.hpp",#include"zlabel.hpp")。在程序中用mw Array对MATLAB中调用的参数进行定义并赋值。

实现调用的主要代码如下:

本例中用到的数据minx=-4,maxx=4,miny=-4,maxy=4,所得图形如图3所示:

2.2 MATLAB引擎

从编程复杂度的角度来说,最简单的途径就当属利用MATLAB的引擎功能[2]。与其它各种接口方式相比,引擎所提供的MATLAB功能支持是最全面的。

2.2.1 VC环境设置

用MFC App Wizard(exe)建立一个应用程序,并作如下设置:

(1)通过菜单Tools/Options…,打开设置属性页,进入Directories页面,在目录下拉列表框中选择Include files,添加路径D:MATLAB6p5externinclude再在下拉框中选择Library files,添加路径D:MATLAB6p5externlibwin32microsoftmsvc60

(2)选择菜单Project/Settings…,打开工程设置属性页,进入Link页面,在Object/library modules编辑框中,添加文件名libmx.lib libmat.lib libeng.lib,以空格隔开。

2.2.2 VC++中程序说明

调用命令eng Open打开引擎,然后将mx Array转换成在MATLAB中可操作的形式。具体方法是:在MATLAB中将一个自定义的数据结构复制到mx Array中,后将此矩阵放入MATLAB计算引擎的工作区中,把命令以字符串的形式传递给函数eng Eval String进行执行。使用引擎,计算程序中必须添加头文件#include“engine.h”,程序开始后需要打开引擎,运算完成后要释放内存并关闭引擎。

本例绘制的是一个TIG焊焊接质量神经网络中输出背面熔深(Back Width)与两个输入参数电流(Current)、清洁度(Cleaning)之间的变化曲线。已知两个输入参数的最小值与最大值(minx=80,maxx=100,miny=30,maxy=60),采样个数取为50,即共有51个数。x[51],y[51]中存储了采样后的两个输入变量值,数组matdata[]中存储的是其余参数不变时,电流每变化1次,清洁度变化51次后,神经网络运算出的背面熔深的结果。

主要程序代码部分:

程序运行后得到的图形如图4所示:

3 结论

本文通过两个实例把VC++与MATLAB的数值计算、图形显示功能进行了结合,既保持了VC++的良好用户界面和高执行效率,又保持了MATLAB的优良算法,使VC++和MATLAB各自的优势能够得到充分发挥。当VC与MATLAB互传的参数比较简单或无参数传递时,使用MATLAB编译器实现相对简单方便,且可以脱离MATLAB环境运行,但图形不方便存储;当需要互传大量数据,则使用MATLAB引擎更容易实现,图形方便存储,但不能脱离MATLAB环境。

参考文献

[1]李天昀,葛临东.综述MATLAB与VC++的交互编程[J].计算机仿真,2004,21(9):193-196.

[2]何强,何英.MATLAB扩展编程[M].北京:清华大学出版社,2002.

[3]柏晟.VC++与MATLAB混合编程的方法研究与实现[J].电脑开发与应用,2006,19(4):24-27.

[4]潘爱民,王国印.Visual C++技术内幕[M].北京:清华大学出版社,1998.

[5]飞思科技产品研发中心.MATLAB6.5应用接口编程[M].北京:电子工业出版社,2003.

[6]周灵.基于COM的VC调用Matlab的方法及实现[J].中国科技信息,2006,24:131-133.

[7]张志涌.精通MATLAB 6.5版[M].北京:北京航空航天大学出版社,2003.

图形编程 第6篇

随着数字技术的快速发展, 制造业企业纷纷引进了各种数控加工设备, 来提高加工质量和制造效率, 以适应企业发展和市场竞争的需要, 数控加工技术的普及应用已是现代制造业发展的大趋势。

程序是数控加工技术的核心, 数控编程的方法分为人工编程与自动编程。人工编程一般用于外形比较简单的零件, 这种方式比较简单、很容易掌握、适应性较大。适用于中等复杂程度、计算量不大的零件编程, 对机床操作人员来讲必须掌握。文献[1]对于几何形状比较复杂的、工作量比较大、人力难以完成的零件一般采用自动编程。自动编程方法又分为语言输入方式、图形输入方式、语音输入方式和实物模型输入方式。其中图形交互式自动编程方法简化了编程过程、减少了编程差错、缩短了编程时间、降低了编程费用, 是一种很有发展前途的数控编程方法。

目前, 制造业企业对图形交互式自动编程的认识程度和应用水平还参差不齐, 具有很大提升空间。笔者通过多年来的实践, 总结了一套比较成熟有效的应用方法。此方法实现了网络化、机械化加工, 其加工尺寸精确、质量好、节约人力、降低生产成本, 生产效率大幅度提高, 全面提升产品质量。

1 初步应用

笔者所在公司生产的管壳式换热器中有个折流板零件, 其零件图 (如图1) 比较复杂, 使用MF200E型单电伺服数控转塔冲床设备加工, 如采用人工编程, 难度较大, 即便操作工人技能较高, 也是相当费神费力, 不但影响制造效率, 而且还容易产生二次制图偏差。因此我们选择了高效实用的图形交互式自动编程, 具体有以下步骤:1) 设计人员完成折流板零件图后, 建立零件图副本, 对副本图样进行整理, 去除多余线条及尺寸标注, 只保留加工轨迹用线条;2) 调整图样绘图比例为1:1[2]。;3) 把电子版图样转换为*.dwg文件;4) 将转换好的*.dwg文件传递到数控转塔冲床设备的数据接口;5) 用数控转塔冲床设备专业编程软件cnc Kad (cnc Kad是一套完整的从设计到生产的一体化钣金CAD/CAM编程软件) , 把*.dwg文件转换为可以直接控制设备加工的G代码程序 (如图2) ;6) 将G代码程序发送到数控转塔冲床设备的FANUC数控系统;7) FANUC数控系统通过自身的自动翻译功能把G代码程序翻译成设备可执行的指令;8) 启动设备, 完成折流板零件加工。

程序代码:

通过以上方案, 快速高效地解决了数控转塔冲床设备的自动编程问题, 保证了生产的顺利进行。

2 运行过程中存在的问题

1) 有时候生产任务急, 技术人员匆忙完成*.dwg文件后, 生产人员马上拿U盘把*.dwg文件拷贝到加工设备, 加工好零件后, 发现装配不上, 经检查发现, 技术人员在匆忙处理图样的过程中, 漏掉了调整图样绘图比例这一步骤。

2) 由于车间没有局域网, 因此加工设备与技术部门电子版资料传递只能依靠U盘来完成, 往往是技术人员还没有处理好, 生产人员已经来技术部门等待了, 严重影响了工作效率。

3 解决思路及具体方法

针对实际应用中存在的以上问题, 我们考虑改进的方向是:充分结合公司内部办公自动化OA平台系统的应用, 发挥计算机网络信息技术优势, 建立相关的流程, 包括电子文件的审核检验等关键步骤等。尽可能减少人员投入、信息沟通及时准确、加工质量提高等。

根据上述思路:首先, 我们在生产厂车间与技术部门之间组建局域网, 在硬件上实现生产设备与技术部门之间的电子信息传递。然后, 我们结合公司内部办公自动化OA平台系统, 建立了专门用于技术部门向生产设备传递电子信息的流程, 在软件方面进一步完善。具体OA流程为:网络二级审核检验 (技术人员电子版图样处理→工艺人员网络审核→检验人员网络检验→操作人员加工) , 经过网络二级审核检验[3], 即可发送到设备进行数控加工。

经过长时间的运行验证, 证实通过上述方案可以准确及时地将加工用零件图电子版图样传递到数控加工设备, 解决了文件易出错和信息传递不畅的问题。

4 结语

针对几何形状复杂的零件, 图形交互式自动编程可以显著减轻编程人员的劳动强度、提高生产加工效率。

图形交互式自动编程技术与网络技术———办公自动化OA平台系统的结合, 为生产效率的进一步提高注入了催化剂, 使生产自动化程度更高、效率更高、质量更高, 为提高产品市场竞争力提供了有力保障。

本文具体以数控转塔冲床设备为例进行了分析, 其它数控加工设备大同小异, 均可借鉴上述方法。

摘要:针对制造企业在数控加工编程方面的应用短板, 文中介绍了一种图形交互自动编程方法, 通过与OA办公自动化系统的结合, 最终应用于实际生产, 取得了良好的效果。

关键词:图形交互自动编程,OA系统

参考文献

[1]张占宽.数控加工手工编程技巧的应用[J].林业机械与木工设备, 2005 (2) :37-38.

[2]王永明, 张振文, 高小平.零件图直接用于线切割自动编程[J].河北工业科技, 2003 (3) :20-22.

图形编程 第7篇

关键词:DDC,控制程序,楼控系统,智能算法,图形模块化编程语言

1 引言

现代建筑越来越多地装备和使用楼宇自控系统,用较小的投入为用户营造一个高效率的工作空间和一个舒适的生活空间,同时能够产生可观的节能效果。目前,国内外普遍使用的楼宇自控系统有如下这样一个特点:主要是国外的一些品牌楼宇自控系统及设备主导着楼控系统的市场,如:江森公司的Metasys系统、霍尼韦尔的Excell5000系统、美国的艾顿系统、英国的卓林楼控系统、西门子楼宇自控系统等。

国外的这些品牌楼控系统普遍使用图形模块化的编程软件编制DDC的控制程序。使用图形模块化的编程语言和使用字符型编程语言在使用智能算法的时候,有什么重大的不同以及有哪些规律可以指导编制楼宇自控系统的DDC控制程序?这是一个很重要的问题,在这个问题上许多业内人士的认识程度还不深,笔者就该问题做了较为深入的分析并给出一些具有较重要意义的研究结论。

2 使用图形模块化的编程语言的优势

许多品牌楼控系统的DDC控制器都采用图形模块化的编程语言来编制控制程序,使用图形模块化的编程软件有以下几个显著的优点。

(1)技术应用门槛低

对于监控程序的编制可以使用字符型编程语言,也可以使用图形模块化的编程语言。后者使用的编程工具以图表为主,编程方式灵活,在设计监控程序时,有较大的自由度,可以满足各种不同的应用要求。尤其是学习使用图形模块化的编程语言,一般过程较为简单,技术应用门槛低,在短时间内就可以掌握基本的编程方法。一个技术工程师可以在较短的时间内初步掌握一种图形模块化的编程语言,并使用它来编制较专业化的DDC控制程序。

而使用字符型的编程语言,如C语言和汇编语言等,编制DDC的控制程序门槛就较高:首先要求很熟悉编程语言;还要求有较娴熟的使用该编程语言的经验,同时要有实际编程的工程经验。

(2)编制的监控程序直观易懂

使用图形模块化的编程语言编制DDC的控制程序简捷且直观易懂。一个基于TCP/IP协议的卓林楼控系统使用SET图表化软件编写的DDC新风机组温度控制程序如图1所示。

一个使用基于BACnet协议的BACtalk楼控系统的Visual Logic编程语言编写的一个排水系统DDC控制程序如图2所示。

(3)维护保养工作的难度大幅度下降

当DDC控制程序出现故障和丢失的情况下,重新编制比较简单,这样就使得对于系统的维护保养工作难度大幅度下降。

当然,在楼控系统的使用运行中,要注意系统的知识管理,如将所有的监控点和DDC的监控情况和监控程序都要可靠地备份。

3 常规程序和融入智能算法的控制程序

楼宇自控系统在通常情况下仅适用常规的监测控制方法对建筑机电设备进行监控就足够了。这种常规监控包括:实时监测、顺序控制、时间控制、逻辑控制、对指定物理量进行的开闭环控制、能够实现单一功能或同时实现多种功能的程序控制。程序控制可以完全按照用户的意愿和设计来达到特定的控制目的。使用图形模块化的编程软件编制DDC的控制程序一般来讲比较容易实现。但对于很多较复杂的应用环境中,有一些情况,如:

(1)对于建筑机电设备的控制中,控制变量数量较多,更为复杂的情况是变量之间有耦合关系。

(2)对于被控系统要实现较精细的控制和计算机仿真,常需要知道被控系统的数学模型,但由于实际系统结构、运行和被控的机理较为复杂,得不出或很难得到精度满足要求的数学模型。

(3)对于非线性且为多入多出的控制系统来讲,控制规律的获得和数学模型的获得都很困难,比如对变风量控制系统、同时考虑有多个变量要实施协同控制的空调机组来讲,都是迟滞性较大的非线性系统;

(4)当被控对象的运行工况复杂且多变的情况等。

在被控设备运行工况复杂、多种不同的因素都能对系统的运行和控制产生影响时,使用常规控制方法就不能胜任了,这时,就需要使用各种融入智能算法的控制程序对被控对象进行智能控制才能较好地实现特定的控制目标。可以使用多种不同的智能控制方法,如:模糊控制、神经网络控制、基于模式识别的智能控制、基于混沌分形理论的智能控制、混沌控制、基于规则的仿人智能控制、预测结合其他一些智能控制方法等。同时还结合传统的控制方法,如结合PID控制、Smith控制、预测控制等,形成各种新的智能控制方法。

在以上较复杂的应用环境中,要实现可靠、优良和精细的控制,仅使用常规的控制方法无法胜任了,必须要借助于融入智能算法的控制来实现。在楼控系统的DDC控制程序编制中,融入智能算法实现较复杂的控制功能,有哪些重要和规律性的认识应该明确,清晰地获得这些认识是十分重要的。

下面就从一个实际的研究开发应用例来说明这个问题。

4 一个使用模糊控制的PID调节器控制程序编制及分析

使用英国卓林的IQ3控制器构成了一个在管理域及控制域都使用同一个以太网的控制系统,系统如图4所示。被控系统是一个变风量控制系统,如图3所示。为使问题说明简捷起见,仅讨论一个使用模糊控制方法对变风量空调系统中的可调速风机进行调速实现总送风量的调节,关于VAVBox的控制调节此处从略。将回风温度与设定值(期望值)的偏差,作为模糊PID调节器的输入,模糊PID调节器的输出作为变频器的输入,变频器驱动可调速风机,对送风量进行控制调节。

使用图形模块化的语言SET软件编写一个模糊PID控制器的DDC控制程序,在输入输出变量及其基本论域和离散论域确定后,还要确定模糊分割,确定各模糊变量的隶属函数值,建立模糊控制规则表,计算模糊关系,求出模糊输出量,对模糊输出量清晰化运算,建立模糊控制查询表,通过查询控制表即可给出控制量。

分别建立以下子程序模块单元:合成运算程序单元、模糊关系求“并”单元、最大隶属度法解模糊输出单元、加权平均法解模糊输出单元、求误差和误差变化的程序单元、尺度变换及限幅程序单元、连续值取整程序单元和整数输出程序单元。通过计算和调试,设定模糊PID调节器的合适的比例因子、积分时间和微分时间参数。PID模块得到3个参数值,计算相应的输出量,通过DDC中的模拟量驱动器模块的输出通道把相应的电压加在变频器的输入电压端子上以调整送风机的转速。编制出的模糊PID调节器的输出程序如图5所示。

这就是一个融入智能算法的DDC控制程序。字符型语言擅长编写融入智能算法的控制程序,图形模块化的编程语言同样可以编写实现融入智能算法的控制程序。

5 融入智能算法的DDC图形模块化编程的一些问题分析及结论

(1)控制程序的使用情况及问题分析

通过编制融入模糊控制算法的DDC监控程序并对变风量控制系统中的可调速风机进行调速实现总送风量调节的实验,实现了较好的控制效果。

通过实际研究和调试,编制融入智能算法的DDC图形模块化控制程序面临以下一些问题:

使用SET图形模块化编程软件编制DDC控制程序时,由于融入了智能算法,相对于常规控制程序来讲,结构就比较复杂,反映在完整的控制程序上,就是控制程序包含的模块组件数量较大,而SET软件对使用模块组件的数量做了限制,任何一个监控程序所包含的图形模块组件的数量不能超过600个;

由于计算机屏幕尺寸大小限制,一旦控制程序复杂程度提高,所包含的图形模块组件数量增大,在屏幕上直观地显示程序的各个部分就不方便,全面地观察监控程序也有困难。这是使用图形模块化编程软件编制融入智能算法的DDC监控程序所存在的一个明显的缺点。

(2)一个重要的结论

通过对使用SET图形模块化编程软件编制融入了智能算法的DDC控制程序及实际使用情况的研究和分析,得到一个重要的结论:完全可以将智能算法融入SET编制的楼控系统中的DDC的监控程序,实现各种较复杂的给定功能;相对于常规控制程序来讲,融入了智能算法的监控程序结构较为复杂,使用图形模块组件数量多。

6 结束语

通过理论和实验研究发现:使用图形模块化的编程软件编制楼宇自控系统中融入智能算法DDC监控程序是完全可行的。这一结论不仅仅适用于英国卓林楼控系统中的IQ3DDC监控程序,对于基于BACnet协议的美国BACtalk楼控系统中的VLC系列的DDC监控程序的编制一样适用。目前,在国内市场占有率较高的国外品牌楼控系统的DDC控制器一般都采用图形模块化的编程软件,所以以上结论具有较普遍的意义。

通过对比、研究分析认为:要使用图形模块化的编程软件编制较大型和较复杂的监控程序,可以使用已有的图形模块化组件编制和开发二级子程序模块组件,甚至是三级子程序模块组件,然后再将这些二级、三级子程序模块组件补充进编程软件的图形模块库中去。

在最终的监控程序中较多地使用这些二级、三级子程序模块组件,这样可使融入智能算法DDC监控程序的编制过程变得简约,从而适于在较小的工作站屏幕上直观显示DDC监控程序。要编制和开发二级、三级子程序模块组件,还应该与生产厂家进行合作,生产厂家开放DDC的底层源程序代码和通信协议的源程序代码,这种工作才能深入进行和实现。

以上的一些结论,对于业内人士搞清楚图形模块化的编程软件与智能算法之间的关系从而用于指导实际工程,并应用于实际工程的意义是重大的。

参考文献

[1]张少军.BACnet标准与楼宇自控系统技术.机械工业出版社,2012年6月

[2]王芊又.模糊控制在卓灵楼控VAV系统控制中的应用研究.硕士论文,2009年2月

图形编程 第8篇

实验数据库系统采用SQL Server,并使用VB进行应用程序的开发,主要任务是存储实验中积累的实测数据。为了更直观的表达出关于数据和知识的信息,并对数据库中的数据进行调用和分析,这就需要增加数据库和用户之间的交流,所以,适当的运用可视化技术可以为用户做出更好的服务,并大幅度的提升数据库的使用效率,强化数据库的功能。

在以前,普遍的解决数据图形化的方法就是创建一个专门的图形库,需要显示数据图形的时候,就直接从图形库中调用需要的图形,但是这种方法存在很大的弊端,一方面是工作量很大;另一方面是这种方法改变了数据库的结构,使得数据库更加繁琐复杂[2][3]。当然也可以单独的采用VB开发数据库下的图形显示的应用程序,但是由于数据库中的实测数据繁多,并且采样率也很高,数据文件比较大,这就造成VB程序下的图形显示功能,运行的比较慢,影响工作的效率。此外,MATLAB也能够实现这一功能,MATLAB具有强大的数据分析,信号处理和图形处理的功能,但是MATLAB也有自身的局限性,它是一种解释性的语言,在执行程序的时候不能够脱离本身的编译环境,而且还没有和VB连接的接口设施。可以说VB和MATLAB二者都有着各自的优点和缺点,如何将二者的优点相互结合,取长补短,就能够使得数据库图形化问题很好的解决,因此,本文提出了二者混合编程,提高可视化应用程序的效率,并优化数据库结构。

1 基于VB与MATLAB混合编程的数据库图形显示

1.1 数据库图形显示需求分析

VB访问SQL Server数据库的时候虽然很安全和方便,但是其本身的数据图形显示功能不强,而且数据库文件大,VB在执行的时候显得更加效率低下,而试验数据文件中的数据量通常会很大,因此,利用Matlab在图形显示上的强大功能和效率,并运用VB与Matlab混合编程的方法,把数据文件中的数据进行图形化,就能够实现数据的图形化,使得数据更直观的呈现了用户的面前。

实验数据库是基于C/S结构的SQL Server数据库,针对实验数据库开发的应用程序,应尽量简便,高效,既可在客户端也可在服务器端使用。

1.2 VB与MATLAB混合编程方法

关于VB与MATLAB如何实现集成,目前主要有三种方法,分别是ActiveX技术、动态链接库(DLL)和MatrixVB插件。其中Activex控件的方法是比较方便和简单的,但是这种方法每次在VB下执行程序的时候,MATLAB会在后台启动,因为这种方法是不能完全的脱离掉MATLAB环境的,必须要在机器上安装有MATLAB,这样的话就会造成系统的运行较大,降低效率。DLL方法执行的效率高,调用也方便,但是其要求的环境复杂,生成的步骤也比较繁琐。MatrixVB适合于利用VB开发一般工程程序的要求,它直接在VB环境下开发,可方便生成可执行文件,便于发布,只是其提供的函数不适合处理非常复杂的数据。

1.3 混合编程在数据库图形显示中的方法选择

通过以上对数据库图形显示需求分析及VB与Matlab混合编程的方法的分析,如果利用Activex控件实现,对于数据库系统要在后台启动Matlab,执行速度将要慢许多;使用DLL方法时,对于C/S结构配置将很复杂;所以在数据图形显示方面使用MatrixVB方法,利用其可完全满足实际要求:

1.3.1 MatrixVB在VB环境下进行开发,程序设计完成后直接在VB环境下编译生成可执行的“.EXE”程序文件,完全脱离Matlab环境;

1.3.2 MatrixVB提供的函数完全满足开发需求;

1.3.3 与服务器数据库系统连接后,可在客户端远程调用,执行效率高。

1.4 混合编程与其它图形显示方法的比较

为提供图形显示数据的功能,以前解决的办法是专门建立一个图形库,先借助其它应用程序把数据图形化,然后保存成图片格式入库,并与相应数据记录关联,显示数据图形实际是调用图形库中与数据相对应的图片。这种方法在调用图片库时虽然执行效率高,实时性强,但增加了数据库结构,前期工作量大,因为每增加一条数据,都必须进行数据图形的图片化、图片入库、与相应数据关联等工作,工作流程如图1(a)所示,而且图片格式不能对图形上某一处关心的数据图形进行放大,以进行数值分析。

为了解决增加图片库带来的问题,可以开发数据库专用的数据图形显示程序,对数据进行图形显示,就是调用图形显示程序对存储在数据库中的数据进行回读并把数据以图形的方式表现出来。单独使用VB进行数据回读并显示,这种方法实现简单,工作流程如图1(b)所示,但在回读大数据文件时效率很低,而且随着数据文件的增大,执行效率急剧减小,达不到实时效果,同时,应用VB给出的图形曲线不光滑,如果需要对任意数据点进行放大,还须增加相应的控件。

本文使用MatrixVB方法实现VB与Matlab混合编程,结合Matlab在数据处理以及图形显示方面的优势,可实时对用户所选择的数据进行图形显示,并对数据文件中包含的数据头信息进行完整显示,工作流程如图1(c)所示。应用MatrixVB开发的数据图形显示应用程序到的图形曲线光滑,可任意点放大,且效率高。

2 混合编程图形显示方法在实验数据库中的应用

对于实验数据库中数据图形显示的开发,以VB为编程环境,在VB环境下使用MatrixVB语言进行设计和编程,这样的程序不仅能远程调用,还可以在服务器端调用,另外在客户端也能够调用。而且这种程序的使用非常的方便简单,当用户想要对数据库中的数据进行图形化的观察的时候,只需要在数据表单中点击数据链接,就会调用图形显示程序,使用非常的方便。利用MatrixVB在VB环境下编制的图形显示程序,对数据格式为二维数据如:时间-温度、距离-RCS等进行显示时,程序执行后的界面如图2所示。

“数据图形显示”框中,对数据文件中包含的数据,图形显示程序可以高效的识别、回读、并以图形方式显示在界面上。从图2中可以明显看出,得到的图形曲线光滑,很好的反映了实测数据包含的信息,而且在此图形上,还可以利用鼠标对任意数据点进行放大,方便用户对数据作进一步的分析。通过此程序,可看出MatrixVB具有与MATLAB一样功能较强的矩阵运算和图形处理功能,只是在调试时比单独的MATLAB环境稍复杂。相对于使用VB开发的数据回读显示程序,效率得到很大的提高:如在同一计算机配置下,数据文件1M左右(.txt格式),单位时间设为S,若使用MatrixVB方法实现VB与Matlab混合编程开发的数据图形显示程序用时为1S,则利用VB开发的数据图形显示程序需用时约8S。

发布基于MatrixVB的VB应用程序时,应将相应的库文件随系统一起发布。这些文件包括:v4510v.dll、c4510v.dll、ago4510.dll、msvcirt.dll、msvcrt.dll和MMatrix.dll。因MMatrix.dll是COM服务器,所以必须在操作系统中注册后方可使用,用以下命令进行注册:开始——运行regsvr32 mmatrix.dll[8]。

3 结论

通过实际应用表明,VB与MATLAB混合编程的数据库图形显示方法是可靠的,MatrixVB的数据图形显示程序,相对于单独专门建立一个图形库来说,是简单的,而且还减少了数据图形图片化,入库等重要的工作。和使用VB开发的数据图形显示程序相比较,得到的图形曲线光滑,可对任意关心的数据点进行放大,特别是在处理大数据文件时,执行效率很高,在实际的实验数据库中数据图形显示应用中达到了很好的效果。

摘要:针对以往数据库中图形显示方法工作量大,数据库结构复杂,或者数据文件庞大,造成在VB环境下开发的应用程序执行效率低等问题,提出了基于VB与MATLAB混合编程的数据库图形显示方法,采用MatrixVB插件进行数据库中数据图形显示的开发。在实验数据库中的应用表明,方便了对库中数据的查询、分析与使用,提高了效率,同时优化了数据库结构。

关键词:数据库,图形显示,混合编程,MatrixVB

参考文献

[1]胡永刚.数据挖掘中可视化技术综述[J].计算机与现代化,2006.10.

[2]贺全兵.可视化技术的发展及应用[J].中国西部科技,2008,(7).

[3]林卓然.VB语言程序设计.北京:电子工业出版社,2009.

[4]王薇,杨丽萍.Matlab在数据可视化中的应用[J].长春大学学报(自然科学版),2008,18.

[5]李晓竹,尹玉萍等.VB与Matlab间的无缝集成及其在故障诊断中的应用[J].计算机与数字工程,2007.

[6]孟繁娟,杜永平.VB和Matlab混合编程方法-MatrixVB[J].计算机技术与发展,2008.

[7]Matrix VB User’s Guide.The MathWorks Inc,2000.

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

【图形编程】相关文章:

在线编程05-05

编程工艺06-02

编程特点06-28

极限编程06-29

基本编程07-08

编程思路07-11

简单编程07-16

编程方法08-18

编程解析08-27

ARM编程05-06

上一篇:管理与措施下一篇:中医学本科毕业指导