VC应用程序

2024-05-10

VC应用程序(共12篇)

VC应用程序 篇1

VC++作为Windows平台上最优秀的C++编程环境之一, 它既能面向对象又具有一些其它的特点。虽然学习、应用VC要了解很多Windows平台的特性并且还要掌握ATL、COM等的知识, 难度比较大, 但它仍然是一个对底层支持非常好的、必不可少的优秀编程环境。特别是它的MFC编程方式:MFC是一个很大的、扩展了的C++类层次结构, 它能使开发Windows应用程序变得更加容易。在数据库开发中, VC也是一个强大的工具, 本文就是分析在VC环境下的数据库开发, 希望能够起到抛砖引玉的作用。

1 VC数据库编程的特点

对于像dBASE IV, FoxPro, Oracle和Access这样的产品是完全以数据库管理为中心的, 这些产品非常善于创建数据库管理器。在应用这些商业数据库的时候, 使用VisualBasic和Delphi等环境就可以协助来实现构建这种管理器。实际上应用这些软件, 编写成熟的、用户界面良好的、具有高速搜索能力的数据库管理系统DBMS非常的简单。所以实际上从方便的角度讲, VisualBasic和Delph这样的RAD环境更加适合于数据库开发, 应用这些软件可以在使程序设计非常地容易。对大多数数据库应用来说, 选择VC++也许并不适宜。

但是需要考虑到, 单纯的数据库管理必须要和其它的功能结合才能发挥更大的作用, 而数据库软件并不轻易地支持这些拓展的功能。这时为了实现各种复杂的功能, Visual C++就可以提供的一些重要东西。由于VC对底层强大的支持, 其高效的率的代码结构, 编写的数据库相关应用程序就会有规模小、提供底层访问并能提供实时访问的特点。比如编写数据库实用程序及驱动程序时, 可以选择Visual C++语言;又比如在硬盘较小或内存有限制时, Visual C++提供了无价无限的工具。

2 VC数据库编程的方式

2.1 ODBC方式

Microsoft最初是以开放数据库互连 (ODBC) 为目标的, ODBC是Microsoft引进的一种早期数据库接口技术, 是ADO的前身。Microsoft引进这种技术的一个主要原因是, 以非语言专用的方式提供给程序员一种访问数据库内容的简单方法。它使得编程人员在访问DBF文件或Access Basic得到MDB文件中的数据时, 无需懂得Xbase程序设计语言。ODBC工作起来和Windows一样, 它用包含在DLL内的驱动程序完成任务。ODBC提供一套两个驱动程序:一个是数据库管理器的语言, 另一个为程序设计语言提供公用接口。允许Visual C++用标准的函数调用经公用接口访问数据库的内容, 是这两个驱动程序的汇合点。当然, 还有其它和ODBC有关的实用程序类型的DLL。例如, 一个这样的DLL允许管理ODBC数据源。

2.2 ADO方式

要理解ADO方式需要首先了解OLE-DB的含义。顾名思义OLE-DB用OLE (或者更具体一点, 是部件对象模型COM) 为数据访问提供一套接口。就像任何其它的COM对象一样, 可以查询、创建和撤销一个OLE-DB对象。OLE-DB对象的来源被称为提供者。各种OLE-DB提供者是Visual C++软件包的一部分, 也有可能在厂商升级其数据库产品时提供。OLE-DB的好处是, 同一个提供者可以和任何Visual Studio产品协作:Visual C++, Visual Basic, Visual InterDev和Visual J++。OLE-DB还依赖于事件, 这和任何COM对象一样。这些事件说明什么时候要求更新数据库表, 以显示其它用户生成的新项, 或者所请求的表什么时候准备好供查看。还会看到这样的事件, 它们用来发送信号通知各种数据库错误和其它要求马上轮询的活动。

而ADO并不是数据库访问的底层解决方案。OLE-DB是使用ADO的基础;它也提供与数据库通信的基础。ADO只是OLE-DB提供的服务的包装。事实上甚至可以绕过ADO而直接使用OLE-DB, 但是使用ADO开发应用程序的速度要快得多。

3 VC数据库编程实例

ADO既能应用到VC的强大功能, 而且使用起来又比较方便, 本文以ADO方式数据库访问为例, 展示VC下如何进行数据库应用。

3.1 ADO数据库开发基本流程

1) 初始化COM库, 引入ADO库定义文件;2) 用Connection对象连接数据库;3) 利用建立好的连接, 通过Connection、Command对象执行SQL命令, 或利用Recordset对象取得结果记录集进行查询、处理; (4) 使用完毕后关闭连接释放对象。

3.2 实例—BLOG数据保存

在实际的开发过程中常常需要存储较大的二进制数据对象, 比如图像、音频文件、或其它二进制数据, 这些数据称之为二进制大对象BLOB (Binary Large Object) , 其存取的方式与普通数据有所区别。这里利用ADO在数据库中存取BLOB数据的具体实现过程。BLOB类型的数据无法用普通的方式进行存储, 需要使用AppendChunk函数, AppendChunk包含在Field对象中, 原型如下:HRESULT AppendChunk (const_variant_t&Data) ;从函数原型中可以看到关键的问题是需把二进制数据赋值给VARIANT类型的变量, 下面给出具体的代码并作简单的分析。

至此数据已经成功地保存到了数据库中。

4 总结

ADO是Microsoft数据库应用程序开发的新接口, 是建立在OLE/DB之上的高层数据库访问技术, 即使对OLE/DB, COM不了解也能轻松应用ADO。在VC下应用ADO方式进行数据库开发既能应用到VC的优良特性, 又不失简便, 是一种值得推荐的方法。

参考文献

[1]张慧平.电网中利用ODBC实现对历史数据库的访问[J].航空精密制造技术, 1998.34 (6) :42-44.

[2]王聪华.ADO访问数据库实例剖析[J].计算机应用研究, 2002 (5) :159-160.

[3]郑章, 程刚, 张勇.Visual C++6.0数据库开发技术[M].北京:机械工业出版社, 1999.

VC应用程序 篇2

(2009年制订)课程编号:

英文名:Programming with Visual C++ 课程类别:任选课

前置课:数据结构、面向对象程序设计、操作系统 后置课:(无)学分: 2 课时: 32学时 主讲教师:李炳银

选定教材:《Visual C++6.0教程》,于涛 等编著, 2002,科学出版社

课程概述:《VC++程序设计》是面向计算机专业的计算机专业选修课程。该课程介绍基本的使用Visual C++和MFC开发WINDOWS应用程序的技术。通过本课程的学习,使学生掌握现代程序设计的基本理论和方法,能用Visual C++进行基本的WINDOWS应用程序设计。本课程的重点在培养学生的实际应用软件开发能力.教学目的:通过本课程的学习,主要培养学生WINDOWS应用程序开发和MFC编程能力,并达到以下基本要求:

1.理解WINDOWS的消息机制和WINDOWS应用程序的基本结构;

2.掌握MFC的基本概念,窗口、资源、图形设备接口、文档/视图结构、对话框和控件等对象的程序设计方法,Visual Studio中的AppWizard、ClassWizard、资源编辑器和调试器等工具的方法,可用Visual C++开发基本的WINDOWS应用程序。

教学方法:该课程实践性很强,建议学生多多上机练习,老师上课对学生给予指引,上机时候对学生给予指导。但是关键还是学生能够主动学习、深入自学。

各章教学要求与教学要点

第一章Viual c++概述(2学时)

教学要求 :介绍Viual c++的总体功能和特点,具体讲述Viual c++6.0版的安装过程,并详细介绍Viual c++6.0版的开发环境。教学内容:

一、Visual c++简介

教学要点:Visual c++开发环境、Visual c++向导、Visual c++应用程序环境。

二、Visual c++的安装

教学要点:Visual c++安装过程。

三、Visual c++开发环境

教学要点:Visual c++菜单栏、Visual c++工具栏、Visual c++工作区、Visual c++的资源编辑器。思考题

1.Viual c++的安装有什么要求? 2.Viual c++的帮助文件如何安装? 3.简单描述Visual c++开发环境?

第二章 使用Viual c++创建控制台程序(4学时)

教学要求 :通过一个具体实例——“Hello World”程序,演示Viual c++开发环境下建立一个控制台程序的完整过程。教学内容:

一、创建“Hello world”程序

教学要点:创建“Hello world”程序的基本步骤。

二、控制台程序的输入、输出

教学要点:创建控制台程序的输入、输出。

三、控制台程序句柄与I/O 教学要点:熟悉控制台程序句柄与I/O。

四、控制台程序窗口

教学要点:解析控制台程序窗口。思考题

1.如何控制自定义控制台程序的输入、输出? 2.如何读取控制台程序中的文字与背景?

3.如何在控制台窗口的指定部位写入指定的字符信息?

第三章 使用Viual c++创建windows应用程序(4学时)

教学要求:将传统Windows应用程序和以MFC为基础的Windows应用程序作比较,并详细介绍应用程序向导的使用方法和Visual c++的消息系统及其消息映射机制。教学内容:

一、传统windows程序概述

教学要点:简介传统windows程序。

二、Viual c++中windows程序概述

教学要点:概述Viual c++中windows程序。

三、使用向导生成应用程序

教学要点:介绍如何使用向导生成应用程序。

四、使用Viual c++中的消息与命令

教学要点:介绍如何使用Viual c++中的消息与命令。思考题

1.使用Windows API编程与使用MFC编程有什么区别? 2.用户如何定义消息?

3.简述MFC消息映射的机制?

第四章 windows可执行程序的基本类型(4学时)

教学要求:介绍Viual c++的三种应用程序类型:对话框应用程序、单文档应用程序和多文档应用程序。详细阐述Windows系统对话框的类型及其在Viual c++的制作方法。教学内容:

一、对话框应用程序

教学要点:对话框应用程序的制作。

二、文档应用程序

教学要点:文档应用程序的制作。思考题

1.Windows程序有几种类型?

2.如何创建和使用非模式对话框?

3.文档、视图与文档模板的关系是什么?

第五章 windows标准控件的使用(6学时)

教学要求:介绍Windows中的几种常用控件表头控件、图像列表控件、列表控件、树控件、标签控件、进度条控件等及其在Viual c++的实现方法 教学内容:

一、表头控件

教学要点:如何使用表头控件。

二、图像列表控件

教学要点: 如何使用图像列表控件。

三、列表控件

教学要点:如何使用列表控件。

四、树控件

教学要点:如何使用树控件。

五、标签控件

六、学要点:如何使用标签控件。进度条控件

教学要点:如何使用进度条控件。

七、滑动条控件

教学要点:如何使用滑动条控件。

八、状态条控件

教学要点:如何使用状态条控件。思考题

1.如何绘制ListCtrl和TreeCtrl中Item的背景颜色?

2.如何在对话框中使用控件与在普通的窗口中使用控件有什么不同?

3.应用控件表头控件、图像列表控件、列表控件、树控件、标签控件等创建一个简单的应用程序?

第六章 使用Viual c++编写多媒体程序(4学时)

教学要求:介绍如何在Viual c++中实现图像、声音、视频等多媒体应用程序的制作。教学内容:

一、多媒体数据格式

教学要点:介绍几种多媒体数据格式

二、位图操作

教学要点:位图操作方法

三、多媒体控制

教学要点:多媒体控制实现方法。

四、DirectX编程

教学要点:简介DirectX编程 思考题

1.如何在对话框中显示位图?

2.编写一段程序,实现播放MIDI的功能? 3.DirectDraw与GDI编程有什么区别?

第七章 使用Viual c++编写数据库程序(4学时)

教学要求:介绍Viual c++中三种主要的访问数据库的方法:使用ODBC访问数据库、使用DAO访问数据库、使用ADO访问数据库。教学内容:

一、使用ODBC访问数据库

教学要点:如何使用ODBC访问数据库。

二、使用DAO访问数据库

教学要点:如何使用DAO访问数据库。

三、使用ADO访问数据库

教学要点:如何使用ADO访问数据库。

四、ODBC与DAO常用类说明

教学要点:说明ODBC与DAO常用类 思考题

1.如何配置ODBC数据源,使用MFC如何配置数据源? 2.使用DAO可以打开SQL Server数据库吗?

3.试使用DAO实现如下功能:创建数据库、创建表、然后实现数据库程序的增、删、改、查的功能?

第八章 使用Viual c++编写网络应用程序(4学时)

教学要求:介绍如何使用Viual c++编写对网络进行操作的程序。教学内容:

一、Winsock编程技术

教学要点:Winsock编程技术简介、示例演示。

二、WinInet编程技术

教学要点:WinInet编程技术简介、示例演示。思考题

1.如何编写程序实现“ping”的功能?

VC应用程序 篇3

【摘要】VC++程序设计课程是我校本科留学生入学后第一门计算机类基础课,其重要性和挑战性不言而喻。本文通过近3年的教学实践,分析了我校留学生的特点,总结了针对授课对象的课程体系、教学内容、教学方法,以及实验教材等方面的改革与实践,以期为同行提供参考和借鉴。

【关键词】VC++程序设计 留学生 全英文教学

【中图分类号】G64【文献标识码】A 【文章编号】2095-3089(2016)03-0244-02

一、引言

教育国际化对提高我国教育水平、国际竞争力和影响力、促进国际合作等方面都有重要意义。近年来留学生规模不断扩大,培养计划从短期项目、研究生项目扩展至全日制本科项目,招生专业的覆盖面也更为广泛。目前,南京理工大学在校长期留学生达800余名,来自70多个国家和地区,留学生总体规模在江苏省高校中位居前列。其中本科生近500人,就读于10个本科专业。

笔者承担了非计算机类工科专业本科生的VC++程序设计课程的教学工作。本文在分析我校留学生特点的基础上,总结了课程建设方面的改革措施,供同行参考。

二、我校留学生特点、存在的问题与对策

面向留学生的课程不同于面向国内学生的全英文课程,必须首先了解授课对象的特点,否则将造成“水土不服”的后果。

1.教育背景与基础

我校全日制本科留学生的招生已达一定规模,留学生的质量也在稳步提高。但鉴于我国科技发展的整体水平和地位,以及我校教育国际化所处的特定阶段,留学生入学时的受教育水平仍低于国内本科生。其中也不乏十分优秀的少部分学生,进而导致学生知识接受能力的较大差异。部分学生来自较为落后的发展中国家,从未接触过电脑,对计算机类课程、尤其是程序设计课程的教学内容难以理解。

当教学班规模较大时,上述教育基础的差异会令教学进度难以控制。因此,将会考虑逐步采用分小班或快慢班的方式实施教学,以实现既定的教学目标。

2.学习习惯

留学生比较崇尚自由,学习习惯差异较大。与国内学生相比,留学生在上课出勤率、课上表现、作业完成情况等方面的整体表现相差较大,两极分化严重。一方面,上课与上机实验的出勤率经常不足50%,不交作业或抄袭作业的情况更为严重。另一方面,自主性较强的学生会经常与任课教师交流,完成作业以外的课后习题,甚至要求参与科研项目。

日常教学管理是达到良好教学效果的必要手段,但这依靠任课教师一己之力无法实现,必须由留学生管理部分从制定合理的奖惩机制、加大管理人员的投入、增强管理条例的执行力度等方面着手,逐步在留学生中建立良好的学习风气。

3.语言能力

留学生的汉语水平普遍较低,不具备阅读专业书籍的能力。英语水平也参差不齐,部分来自英语为官方语言之一或通用英语国家的学生,一般有较好的听说读写能力,但也有较重的口音。而来自其他国家的学生,在理解英文授课内容、阅读专业书籍、与教师沟通等方面存在不同程度的困难。在进行实验课、课程设计、毕业设计等对书面和口头表达能力有较高要求的教学活动时,语言将成为难克服障碍。因此,一方面可在招生选拔时逐步提高英语能力的要求;另一方面,也可在入学后视具体情况,设置必要的英文强化课程。

三、课程建设与改革

程序设计课程具有较强的理论性和实践性,因此,本课程以能力培养为目标,从以下方面进行了课程建设和改革:

1.课程体系与内容建设

本课程作为攻读非计算机类工科专业本科学位的外国留学生学位基础课,旨在令学生掌握C++程序设计语言基本语法的同时,培养学生程序思维,为后续计算机相关专业课的学习奠定基础。课程共5个学分,分两学期授课。第一个学期完成4个学分的课上讲授与上机,第二个学期进行1个学分的课程设计。学生来自于自动化、光电信息工程、机械制造工程等六个专业。

本课程的内容包括:(1)C++语言基础理论,即向学生传授C++语言的基本语法规则、函数的定义、向量与数组、指针等。(2)C++程序设计方法,主要针对学生实践能力的培养和形成,帮助学生初步形成独立分析问题、解决问题的能力。课程内容设置为顺序结构程序设计、分支结构程序设计、循环结构程序设计和类的设计与使用。(3)实践教学内容,使学生在掌握C++语言基础知识的基础上具备一定的程序设计和程序调试能力。

关于理论课教材,首选国内引进的原版书籍,因其具有价格低、订购时间短等优势。但多数引进的程序设计类原版书都是面向广大程序员的经典书籍。《C++:How to program》是为数不多的适合初学者的书籍,但国内引进的第六版印刷错误较多。最终,本课程选用了国外原版教材《The Big C++》。该书的内容涵盖了基础知识和一些高级主题,适于初学者入门以及后续学习,内容叙述详尽透彻、重点突出,对编程风格、效率、常见错误等内容都有提示,课后思考题和编程题十分丰富,是一本容易阅读的好教材。

2.教学方法与手段改革

本课程采用理论讲授、上机实验和课外答疑三种教学组织形式,分别设计了不同的教学手段与方法。

(1)课上的理论讲授采用启发式的教学方法,即通过复习上节课知识要点、总结作业中存在的问题、启发引导本节课新内容、CAI课件与板书和现场编程操作的综合演示、课上交互、小结与自测、作业等环节,使知识的传授形成一个闭环反馈过程。教学手段上,利用CAI课件的生动形象与板书的重点突出与全局把控的特点,将二者有机结合,并配合现场的编程与调试,使学生对知识的理解与运用产生直观的感受。此外,近3年来该课程的学生人数均在70人以上,课上需适当合理的安排问答交互环节,保证教学的效率和效果。

(2)上机实验不仅是学生实践的过程,更是教师发现问题,答疑解惑的过程。一方面,通过与外国留学生的有效沟通和现场程序讲解、演示,能解决知识学习的问题、提高学生对课程的兴趣,还有助于建立融洽的师生关系、提高学校的国际化教育声誉;另一方面,通过总结学生反映的难点和容易混淆、出错的知识点,在课堂教学中给予适当的提示。

(3)课外答疑是理论课与上机实验的有效补充,建立及时解答学生问题的渠道十分重要。借鉴国外大学的做法,每周设定2个时间段,帮助有问题的学生进行辅导;此外,利用网络资源建立本课程的讨论组,形成学生之间以及学生与老师之间沟通的纽带。

3.实验教材建设

实践教学是本课程非常重要的组成部分,实验教材与教学目标、教学对象的特点和本校或本专业的实验教学环境都有密切关系,不能照搬,只能依靠自己的力量来建设。实验教材由以下内容组成:

(1)程序开发环境:详述了VC++6.0 在Windows XP、Windows 7.0及以上版本的操作系统下的安装、设置与调试运行方法,以及VS2015、Develop C++等其他常用的编译器的使用,以便学生在我校教室、机房及自备的笔记本电脑上进行学习和实践。

(2)实验课程按教学章节划分,包括:基本数据类型、控制流、函数、类与对象、向量与数组、指针等六个实验和四个综合程序设计。其中,每个实验包括程序阅读、改错、编程等一系列题目。将适当提高设计性实验的比例,使验证性实验和设计性实验的内容分别约占30%和70%。

四、结束语

VC应用程序 篇4

关键词:Matlab外部接口,混合编程,VC++,COM,自动化

1 引言

Matlab提供的编程语言———M语言———是以方便数值计算编程为目的设计的,所以其基本数据结构就是矩阵,且其变量的具体类型和大小可在执行时动态确定,这对编写数值计算程序提供了很大的便利。另外,由于M语言可直接调用Matlab提供的各种数学和面向工程应用的工具箱函数,所以使用M语言还可以迅速地解决许多计算量很大的工程问题。但另一方面,由于M语言是一种解释型编程语言,所以它的执行效率较低,另外其在开发应用程序界面和对外围设备的控制能力上也较差。另一方面,其他的编程环境,如VC++,则在这些方面提供了很好的支持,但如用其进行数值计算或解决工程问题又会非常不便。故如果对软件界面、外围设备控制、数值计算三方面都有较高的要求,一个理想的方案是在像VC++这样的编程环境中实现界面及外设控制功能,并在其中调用Matlab环境中的模块,如其工具箱函数,作为计算工具。

在VC++程序中调用Matlab有两种方法:一是通过Matlab提供的引擎库(Engine Library),它的本质是一个拥有定制接口IEngine的COM服务器;二是通过Matlab提供的COM Automation Server。本文将首先介绍COM和Automation技术的原理和应用方法,之后介绍这两个接口,并随后给出在C++中使用两者的具体方法。

2 COM与Automation

2.1 COM概述

组件对象模型(Component Object Model,COM)由Microsoft于1993年创建,它规定了dll、exe等应用模块之间进行交互的步骤和方法。在COM之前,一个应用程序(Client)如果要使用dll文件(Server)输出的功能就要使用Win32 API函数LoadLibrary,GetP-rocAddress,要使用exe文件(Server)输出的功能除了需使用相关的Win32 API函数外,还要使用基于Windows消息机制的DDE协议。COM则是Microsoft新推出的这些方法的换代品,它解决了不少在使用老方法时产生的问题,如他们本质上是面向过程的技术,使用起来比较零散复杂,且对系统来说,他们是无法管理的。COM则提供了一个面向对象的Server功能管理及Client/Server的通讯方法。但这需要应用编程者的配合,即COM不仅是Windows操作系统新增的一系列数据结构和函数,而且是一系列应用与系统交互方式的定义。

在COM中,Server模块(dll或exe)要向系统注册其输出的COM类,即在注册表中保存COM类的GUID(Global Unique Identifier),Server模块完整的路径及文件名等相关信息。一个Server模块可拥有多个COM类。于是,Client只要向系统提供其所需COM类的GUID系统就能找到包含这个类的模块并加载它。在注册COM类的同时,Server还要注册每个COM类所包含接口(interface)的GUID。从功能上说,一个接口就是Server输出的一个功能单元,它由一组功能上密切相关的函数指针构成;而用C++语言表达,COM接口就是一个仅包含虚函数的结构体,它本质上是一个包含一个函数指针数组的内存结构,这一内存结构是由Microsoft定义的标准。Client则是通过GUID向系统提交自己的请求,通过获得由Server提供的接口指针来调用Server的输出函数[1]。

事实上,接口是COM技术的核心要素,其最基础的接口是Microsoft定义的标准接口IUnknown,它包含QueryInterface、AddRe和Release三个函数,这些函数是Client与Server通信的基础。而所有其他的接口均需继承自IUnknown。这也是C++多态技术的一个应用。除了IUnknown,Microsoft还定义了许多其它接口,这些接口事实上是许多编程技术的底层基础,如IDispatch接口就是Automation技术的根本核心。同时需要说明的是,对其制定的大部分接口而言,Microsoft只是定义了接口的数据结构,接口函数功能的实现要由Server开发者完成。

可见,COM是一个Client、Server和操作系统协力合作。从操作系统的角度看COM是一个记录COM类的方式和一组用于Clien和Server通信的API函数。对Client来说COM是利用API向系统发出请求并利用接口指针使用COM类的功能。对Server来说则是利用API注册自己,实现所有接口函数,这包括由Microsoft定义的接口函数,如Server必须实现IUnknown接口的QueryInterface函数,其作用是为Client提供其所要求的所有接口指针。

2.2 Automation概述

由于接口本质上是一个包含一个函数指针数组的内存结构,这一内存结构是由Microsoft定义的标准,而所有支持COM的编译系统和语言对接口的处理都符合这一标准,所以通过COM,就可实现不同编译器、不同语言编写的应用顺利通信。但是仍有一个问题,就是想Visual Basic这样的解释性语言无法学习C++定义的接口。举例来说,如果一个C或C++程序要使用一个组件定义的接口IMath,它就需要声明接口的结构,如:

这样,在获得了接口指针,不妨叫pIMath,之后,就可以用“pIMath->Add(a,b);”这样的语句来使用Server的功能。但Visual Basic却不支持这样的语法,即它的解释程序无法以函数指针的形式学习新的接口定义。考虑到接口将会不断增长的事实,让Visual Basic把对所有接口的支持固化在解释程序中又是不可能的。所以,为了解决这类问题,Microsoft定义了IDispatch接口,其思想是,像VB这类语言的解释程序只需要支持IDispatch接口,就可以在执行时通过Server获得其需要函数的相关信息,从而完成调用。

整个接口的机制是Server要为输出的函数分配一个数字ID和一个相对应的标识字符串。Client只知道标识字符串,为了调用相应的函数,Client在获取IDispatch接口指针后,先调用其函数GetIDsOfNames()得到和标识字符串相对应的数字ID,再调用IDispatch的函数Invoke(),该函数专门负责根据输入的数字ID找到Client要求的函数,并调用它。Invoke()在调用函数时需要传递参数,而参数格式是无法由解释程序预知的,所以Invoke()使用了一种特殊的数据类型VARIANT来解决这一问题。VARIANT是一个结构体,它可以表示任何类型的数据。VARIANT主要由两部分组成,一是标识数据类型的vt,二是存储实际数据的union结构。函数的输入参数就被存储在一个VARIANT数组里被传递给Invoke。当然,之后解析各个变量并传递给输出函数的任务就交由Invoke()完成了。函数的返回值同样是以VARIANT形式回传的。这样,就解决了高级语言使用COM组件的问题。

所以,自动化(Automation)是建立在COM基础上的。一个自动化服务器实际上就是一个实现了IDisPatch接口的COM组件。而一个自动化控制器则是一个通过IDisPatch接口同自动化服务器进行通信的COM客户。

3 Matlab提供的COM Server接口

由于出现了Automation技术,访问COM组件就有了两种方式:(1)通过普通的自定义的COM接口访问组件;(2)通过调度接口IDisPatch访问组件;如果一个组件同时实现了这两种接口,则称为双重接口,那么客户就可自由的选择其中的一种方式访问组件的功能。Matlab就提供了这两种接口。

3.1 IEngine接口

IEngine是Matlab提供的定制接口,但通常在程序中不会直接使用它,而是使用Matlab提供的引擎库(Engine Library)函数。事实上,COM Server及其接口IEngine可看作是引擎库在Windows平台上的实现手段。当然,也可以把引擎库看作Matlab为方便IEngine的使用而提供的函数库。在使用引擎库时,完全不需要COM的知识,只需要把它看成一个非标准的C语言静态函数库即可。

引擎库共输出了9个函数,通过它们可以方便的开始和结束与Matlab Server的对话,设置命令窗口(缺省状态是显示命令窗口),与Matlab的工作空间交换变量,执行任何可在Matlab命令行执行的命令。使用引擎库和直接在Matlab命令行输入的方法是极为类似的。

3.2 IDispatch接口

IDispatch是Matlab为Visual Basic,C#等语言提供的接口,但在C++程序中也可以使用,只不过,这需要进行较多和COM相关的编程。如果使用VC++提供的MFC类COleDispatchDriver来使用Matlab自动化服务器,则可以大大简化这一过程。这些内容后面会详细讨论。

通过IDispatch接口获得的函数功能和引擎库类似,但功能更丰富更灵活些。例如,如果要调用统计工具箱的方差计算函数求某一双精度数组的方差,使用引擎库函数的流程必须是先通过engPutVariable()将数组存入Matlab,比如起名叫“a”;再用engEvalString()命令执行一条语句“b=std(a)”,这在执行命令的同时又在Matlab里建立了变量“b”;最后通过engGetVariable()将变量"b"取回。Matlab的自动化服务器则除了拥有支持上面流程的函数外,还提供了另一种可能性,即只需调用函数Feval()就可以了,因为Feval(可同时接受函数名,参数作为输入,并将Matlab的计算结果输出。

4 Matlab COM接口的VC++调用

在VC++中使用Server的关键问题有两类,一类是如何启动和释放Server,另一类是如何与Matlab进行数据交互。下面将分别针对这两方面,以一个具体的问题———方差的计算,待计算的数据保存在变量double Array[20]中———为例,说明调用Matlab两种COM接口的具体操作。下面的代码均经过实际测试使用,其环境为WindowXP,Visual C++6.0和Matlab 7.4.0。

4.1 Server的启动和释放

4.1.1 引擎库

使用引擎库在创建工程时不需要特别设置,但之后第一要在源文件中包含engine.h,它其中声明了引擎库函数的原型。engine.h中还包含头文件matrix.h,其最主要的内容是定义了数据类型mxArray及对它进行操作的函数原型。mxArray类型是许多引擎库函数的参数类型,它是C++程序和Matlab进行数据交互的工具。而matrix.h中又包含tmwtypes.h,这一头文件中也定义了一些数据类型。三个头文件的路径均为Matlab安装目录下的externinclude。将engine.h包含入源文件有三种方法,其一是在源文件中包含完整的路径和文件名,如“#include"D:matlabexternincludeengine.h”;其二是仅包含文件名,但把上述三个头文件全部拷贝到工程目录中;其三也是只包含文件名,但要在VC++6.0的Tool菜单的Option命令对话框的Directory选项卡中,把头文件所在路径添加到include搜索路径中。这之后,还要为工程加入两个库文件———libeng.lib和libmx.lib,其中libeng.lib实现了引擎库函数,而libmx.lib则实现了操作mxArray需要的各个函数。它们路径均为Matlab安装目录下的externlibwin32microsoft。具体操作为右键单击VC++6.0左侧Workspace里FileView的工程文件,在弹出菜单中选择“Add File to Project”,之后在弹出的对话框中转到上述目录后将文件过滤设为“Library Files”就可以选择所要的库文件了。为方便代码的移植,则可以先将上述文件复制到工程所在目录再进行添加。

在做好这些准备工作后,就可以正式使用引擎库了。引擎库启动可使用如下代码:

4.1.2 自动化服务器

在C++程序中直接用Win32 API操作自动化服务器是比较繁琐的,所以笔者对自动化服务器的操作是通过MFC的COleDispatchDriver类完成的。这就要求在创建工程时要加入对MFC类的支持。之后,启动Class Wizard,单击其新建类按钮中的“从类库(type library)”命令从而打开“从类库导入”为标题的对话框。在对话框中转入Matlab安装目录下的binwin32文件夹,选择其中的mlapp.tlb文件就可以生成继承自COleDispatchDriver类的DIMApp类。

完成上述工作,就可用下面代码启动Matlab自动化服务器:

4.2 数据交换

无论是采用哪种调用方式,Client都需要一种中间数据类型来与Matlab交互数据。当要把参数传递给Matlab时,Client需要先把自己的数据转换成中间类型;当从Matlab获取结果时,Client要从中间类型中提取原始数据。对引擎库来说,这种中间类型是mxArray;对自动化服务器来说,这种中间类型是VARIANT。下面通过代码来说明这两种方式。

4.2.1 引擎库

使用引擎库的代码如下:

4.2.2 自动化服务器

使用自动化服务器的代码如下:

5 总结

COM是Microsoft公司提供的提高应用互操作性能的接口,利用Matlab提供的两个COM接口———IEngine和IDispatch,在Matlab引擎库或MFC类COleDispatchDriver的帮助下,VC++程序可很轻松的在程序中使用Matlab丰富的函数和图形功能[2],从而加快程序的开发。但这需要Matlab环境的运行。除了Matlab engine library(引擎库)和COM Automation Server,Matlab对COM的支持还有MATLAB Builder for.NET。它可以根据编程人员的要求将一组M文件编译成可供其它支持COM语言调用的COM组件,VC++程序使用这些组件就可以脱离Matlab[3],但不是所有的Matlab函数都可以被编译。

参考文献

[1]Shepherd G,Wingo S.MFC internals:inside the microsoft Foundation Class architecture[M].Reading,Mass:Addison-Ewsley,1996:435-497.

[2]赵启蒙,高美娟.通过面向对象编程调用MATLAB绘图的实现[J].大庆石油学院学报,2004,28(1):80-82.

VC应用程序 篇5

摘要:FM3808是Ramtrom公司生产的新型超低功耗非易失铁电存储器,该器件可支持对存储区的高速读写,并可进行近乎无限次的写入。FM3808内部除具有256kB的存储阵列外还集成了实时时钟和系统监控模块,因而功能十分强大。文中介绍了FM3808的性能特点、内部结构和工作原理,分析了TMS320VC5402 DSP的并行引导装载模式。给出了DSP与FM3808组成的并行引导接口方案。

关键词:铁电存储器 数字信号处理器 并行引导装载模式 FM3808

1 引言

铁电存储器(FRAM)是Ramtron公司近年推出的一款掉电非易失性存储器,它的核心技术是铁电晶体材料。这一特殊材料的运用使铁电存储器可以同时拥有随机存储记忆体(RAM)和非易失存储器的综合特性。与EEPROM相比,FRAM可以总线速度写入数据,且在写入之后不需要任何延时等待。面EEPROM的慢速和大电流写入使其需要用高出FRAM2500倍的能量去写入每个字节。同时,FRAM有近乎无限次的写入寿命,而且价格比相同容量的不挥发锂电SRAM低很多,因此,FRAM特别适合那些对数据采集、写入时间要求很高的场合。自FRAM问世以来,已凭借其各种优点被广泛应用于测量和医疗仪表、航空航天、门禁系统和汽车黑匣子等系统之中。

(本网网收集整理)

2 主要特性有内部结构

FM3808是一款存储容量为32k×8bits的新型FRAM(减16字节),它具有高速读写、超低功耗和无限次读写等特性。其主要特点如下:

*采用32752×8位存储结构;

*读写次数高达10 11次,具有的数据保存能力;

*最快并行读取速度为70ns,写入无延时;

*具有实时时钟和日历功能,时钟寄存器在地址空间的最上16字节处;

*外部供给后备电源,提供32.768kHz的时间记录晶振;

*具有可编程的实时、日历时钟和报警时间;

*可编程的看门狗定时器;

*可编程的电源监控模块。

FM3808芯片上集成了了三种不同的功能:32k×8B的存储单元、实时时钟、日历功能、系统监控功能。其结构框图如图1所示。

3 FM3808功能说明

3.1 FM3808实时时钟操作

实时时钟(RTC)由晶体振荡器、时钟分频器和一个系统寄存器组成。晶体振荡只有在控制寄存器器(7FF8h)的第7位设置为0时才能开始工作,时钟分频器将32.768kHz的信号分频成1kHz,并以秒为单位来计数,可以用标志寄存器(7FF0h)并通过设置R和W来对各实时钟寄存器进行读和写。实时时钟需要提供电源才能工作,当供电电压VDD下降到低于补给电压VBAK时,实时时钟电源由VBAK供给。对于FM3808来说,用户可以选择用电流做电源,也可以选择用电容来完成供电。使用1000μF的电容时,其供电时间可达30分钟,若使用0.4μF的电容,则供电时间可长达240小时。

当标志寄存器的第2位(CAL)设置成1时,实时时钟进入校准模式。在校准蛏希INT引脚将输出512Hz的方波,用户可以通过测量INT脚偏离512Hz的误差来进行时钟校准,校准误差由用户写入到7FF8h单元。在进行完时钟校准以后,在校准温度下每月的最大误差为±4.34ppm分,通过置CAL位为0可退出时钟校准模式。

3.2 FM3808监控操作

系统监控主要包括:报警功能、看门狗定时器、电源监控器和系统中断。

报警功能是把应用编程写入的时间值和系统相应的值进行对比,如果匹配,就通过INT产生中断并设置相应的标志位AF为1。报警功能提供有四种匹配值,分别为秒、分、时、日,通过设置相应的位为0可选择对比位。

看门狗定时器由可装载计数器和自由运行的计数器组成,看门狗定时器的工作频率为32Hz,此时晶振OSCEN必须设置为0。定时器溢出值存放在7FF7h。系统上电时会自动将溢出值加载到装载寄存器,此时自由运行计数器开始计时。当计数器的值与装载值之前,可以通过设置WDS位为1来重新装载溢出值,而此时不会有中断产生。

电源监控功能是将VDD与三个门电压相比比较。这三个门电压分别为中断门电压VINT、存储器停止门电压VLO、外部供给电压VBAK。当VDD达到不同的电压门限时,FM3808内相应的功能将停止工作。FM3808共可产生四个外部中断:看门狗中断、报警时钟中断、电源低电压中断和供给电源中断。

3.3 FM3808存储器操作

FM3808逻辑上可以分成32768×8位存储结构,最上面的16字节分给了实地时钟的寄存器。FM3808通过并行口与外部微处理器进行接口,其操作与SRAM十分类似。FM3808半存储单元分成32个块,每块由256行和4列即1k×8的结构组成。其中A0~A7为行选择线,A8~A9为列选择线,A10~A14为块选择线。FM3808芯片的CE不能接地,这与普通SRAM不同。FM3808的读取过程是这样的:在CE的下降沿,地址信号被锁存,并启动一个读周期,此后即使CE发生变化也不会影响这个周期的完成。由于FM3808需要在CE的下降沿才能锁存地址信号,所以不能被CE接地,有效读时序如图2所示。

在读时间数据之前,需把7FF0.0设置为“1”,读出时间数据后,应将7FF0.0设置为“0”。在读数据时,当地址信号锁存后,在OE允许的情况下,DQ0~DQ7输出数据。FM3808共有两种写工作模式,一种是由WE来控制,另一种是由CE控制。由WE控制的写时序如图3所示。

虽然FM3808要求在CE下降之间,地址信号要存在5ns的时间,但实际应用证明,同时输出CE与地址信号的接法也是可以的。由于FRAM的读写过程会对内部存储单元造成改变,因此在一次读或写后,要很快对原有的数据进行“修补”。“修补”的过程在CE为高电平时进行,所以在一次读写的操作中,CE为低的时间不能太长,否则FM3808将来不及“修补”原有数据而造成数据丢失。FM3808规定CE为低的时间不超过10μs。

4 与TMS320C5402的引导接口

TMS320C5402上电后将首先检查MP/MC引脚的状态,若该脚为低电平,说明DSP被设置为微计算机模式,从片内ROM的0FF80h地址开始执行程序。在TMS320C5402的0FF80h地址处,存放着一条跳转至0F800h处执行DSP自引导装载(Bootloader)程序的指令。当TMS320C5402的Bootloader程序时,它将会按HPI装载模式→串行EEPROM装载程序→并行装载模式→标准串行口装模式→I/O口装载模式的顺序循环检测,以决定执行哪种启动模式。

对以TMS320C5402为核心的数字信号处理系统来说,并行引导装载模式是最适用的。TMS320C5402的`并行引导装载模式是将程序代码从外界存储器所对应的DSP数据导域区中加载到片内DARAM中。TMS320C5402的并行 装载流程如图4所示。

采用并行装载模式对程序进行加载国时,要根据并行装载的格式来配置Flash的程序数据存储空间。可先在DSP对应的数据空间FFFEH和FFFFH地址内写入要存放程序的地址,然后根据并行装载的数据流,将标识控制字、各个寄存器的初始化值、装载后的起始运行地址、程序段的大小和装载地址依次写入Flash存储程序的地址中,电子最后写入编写的程序。

FM3808与TMS320C5402的并行接口设计如图5所示,由于FM3808的工作电源为5V,因而系统中使用了SN74LVTH6244和SN74LVTH2245来完成接口设计。又由于TMS320C5402数据的寻址范围最大为64k字,而在自己不编写Bootloader程序的情况下,并行引导装载模式最大只能装载32k字的程序或数据。因此,若程序数据大于32k,就需要重新设计。

TMS320C5402上电复位装载时,由于Bootloader程序已在初始化时将XF设置为高电平,因而在通过EPM3202总的逻辑后,TMS320C5402可以将FM3808 08000h-0FFFFh单元中的数据读到TMS320C5402对应于000h-3FFFh寻址区的片内DARAM中。而在系统进入并行引导装载模式后,TMS320C5402会从数据寻址为0FFFFh的单元(A15=1,选中Flash)中读取将要载入的程序存储区首地址,然后从程序存储首地址处将标识控制字、各个寄存器的初始化值、装载后的起始运行地址、程序段的大小,装载地址依次装载到片内DRAM中。

若程序较大,而系统中还要有其它数据存储器来存放数据,那么就需要让出FM3808所占用的数据空间,此时可在EPM3202逻辑控制中使用XF。并可用主处理程序的第一条语句RSBX XF来置XF引脚为低电平,同时使CE片选无效,从而让出数据空间。若程序较小,而FM3808还需做为数据存储单元,那么可设置XF为高,然后通过CPLD中的逻辑程序来控制数据的写入和读出。CPLD的内部逻辑如图6所示。

5 设计中应注意的问题

(1)该设计方案在TMS320C5402执行Bootloader程序时所能寻址的并行接口FRAM的最大空间为32k字节,如果脱机独立运行系统的程序超过了32k字节,则只能采用另外的替代方法。

(2)FM3808中的程序数据流要严格按照并行装载的数据流来编写,以确保并行装载的成功。对FM3808数据的写入和读出应通过设置SN74LVTH2245的OE和DIR来共同完成,本系统就是通过CPLD来进行逻辑控制的,实际上也可用VHDL语言来编写逻辑。

(3)在设计过程中,可以利用FM3808中的看门狗电路来对系统运行进行监控。系统必须使用FM3808的低电压检测功能,在检测到掉电后,CPU应立即把CS端的电平置“1”,以防止在上电或掉电时FM3808中的数据发生改变。

6 结语

王一敏:邂逅VC 篇6

无论从哪个角度看,王一敏都着实是个美女:外表时尚靓丽,为人谦和热情,言谈真诚风趣。这让人一下子没有办法将她与VC的身份联系在一起。与VC们带给人的内敛印象相比,王一敏多了一份温暖和灿烂。

王一敏自己也表示,她确实是一不经意撞进了VC圈子。

尽管加入华登之前还不曾真正深入地了解创投行业,但不久之后她即被深深吸引。“这个职业真的很有魅力。”像很多VC一样,王一敏发出了这样的感叹。

曾经“鸡尾汤”

王一敏是个随性的人,好奇心又很强,这种性格使她在入行之前的那段经历异常的丰富。“真的像大杂烩一样,又没鸡尾酒那么纯,充其量也就是‘鸡尾汤’吧。”说这话的时候,她爽朗地笑了。

高中毕业之后,王一敏开始了美国留学之路,喜欢与人交流的她在大学选择了心理学。但念到第三年的时候,她开始觉得心理学过于玄妙,担心自己这辈子都要跟疯子或者病态的人打交道,甚至感到了一些沮丧。于是,王一敏决定“回归理性”,转念工科。从心理学到电信专业,王一敏的人生之路来了个大跨度转弯。

毕业后,王一敏曾做过网络工程师等好几份工作。1999年,王一敏加入爱立信,负责亚太区的移动数据业务。由于工作关系,王一敏有75%的时间都奔波于中国各地市之间。

从那时起,她亲身感受到了中国正在发生的巨大变化。“从科技、经济增长到人的心态、消费习惯,以及交通、房产、饮食等生活的各个方面,进步都太快了,所以我非常希望留在中国。”

2002年回到美国进入加州伯克利大学攻读MBA时,王一敏的这种“恋家”情绪达到了顶峰。第二学年时,王一敏一年中就回了10次中国,甚至连作业都是在飞机上做的。

“我特别想回来看看又发生了什么变化,这种好奇心一直在驱使我。”直到现在,王一敏在伯克利的同学聚会时还会抱怨她的任性。“他们都说跟我一组做作业太辛苦了,还要浪费许多电话费。”说起那段经历,她还止不住地乐。

偶遇“伯乐”

2004年底的一次机缘巧合,王一敏与VC行业不期而遇。

临近毕业时,有朋友将王一敏推荐给了华登国际,而当时她对华登还一无所知。起初这件事一直杳无音信,直到3个月后的一天,王一敏终于收到了与华登国际董事长陈立武的见面邀约。而这次初识至今都令王一敏记忆犹新。

当时令王一敏略感惊讶的是,陈立武一开始就直言不讳地说,“华登现在不招人,只是为了给我的好朋友面子才见你一面”。后来王一敏才知道,那位一向都只写E-Mail给陈立武的朋友为了她,一天给陈打了好几通电话,因而争取到了这次机会。

随性的王一敏也索性以一种轻松的心态与陈立武交谈起来。“可能是因为没有负担,大家都很放松,所以聊了一个多小时觉得很谈得来。”

后来的事情完全出乎王一敏的意料。午饭之后,陈立武当天下午就给王一敏安排了很多会,把她当天的计划给全盘打乱。“我们那天是早上十点见面,大概晚上五点我才忙完。”就这样,华登向她伸出了手。回想起来,王一敏认为这完全是种缘分。“当时我一心只想着回国,倒真的没有打算在美国找工作。但转念一想,其实我原本回国要做的也是跟创业和投资有关的事情。”

对于自己的“伯乐”陈立武,王一敏满口溢美之词。

决定加入华登之前,因为对华登和陈立武本人还不太了解,王一敏还曾把他们给“DD(Due Diligence,尽职调查)”了一把,“打电话给很多朋友询问,结果是非常一致的好口碑”。“我觉得陈立武除了是位很成功的人之外,最重要的是他很有诚信,处事也非常公平。”

2005年1月,王一敏正式加入华登。

重返中国

作为华登国际副总裁,最初一年半王一敏的精力大多放在美国的案子上,包括协助陈立武调查拟投资企业,管理投资组合公司,寻找潜在的投资目标等。同时,王一敏每个月都要飞回中国完成一部分工作。

2006年8月,“恋家”的王一敏终于重新搬回中国,更多地与华登中国团队一起合作寻找投资机会。这令她十分开心。“这么大的国家能够在25年中持续保持10%以上的GDP增长,我觉得这是史无前例的,虽然我个人很渺小,不足以去推动整个国家的发展,但我应该选择留在这里亲身体验。”

在王一敏看来,虽然在突破性的技术方面美国走在中国前面,但中国却往往能涌现出很多创新的机会。她对中国的创业者和企业家感触尤深。“我觉得中国的企业家非常了不起,因为他们都有非常强烈的想要成功的那种驱动力,即使只有一点钱和一点资源,他都会毫不犹豫地投入创业。”

让王一敏印象最深的是高德软件。作为国内最早从事地图软件开发应用的企业之一,高德软件于2006年10月获得了红杉资本中国基金、KPCB、华登、联想投资超过2000万美元的联合注资。而此前的高德软件曾经半年都发不出工资,但其创业团队的十几个兄弟仍然分文不要地在工作,“这真的让我特别感动,他们那时候居然根本就不知道还有创投这回事情,不知道自己可以融资,但还是凭借很强的信念去创业并坚持了下来”。

小波变换VC6.0程序实现 篇7

关键词:小波变换,VC++6.0,Matlab

1 概述

多分辨率分析和多尺度几何分析的结合已经成为目前学术界的热门课题。

小波最先始于学者Harr提出的一种非连续可微的正交分解,之后,物理学家Levy利用Harr小波变换研究分子的布朗运动,Mallat提出了相当于傅里叶变换中FFT的Mallat算法,Daubechies构造出的紧支撑小波,如今,第二代甚至第三代小波都得到了飞速发展。

小波分析是即傅里叶分析之后,信号处理方面里程碑式的发展结晶。工程应用方面,小波变换在数字信号处理、图像处理、语音处理、生物医学信号处理等实践中的应用越来越广泛。但是目前,在小波变换研究和工程应用主要通过使用Matlab小波工具箱来实现。相关的C语言编码较少,且不易使用。

2 离散小波变换

在实际应用中,离散小波变换的实现容易,能为信号分析与合成提供足够的信息,同时降低计算机的资源消耗和计算量。因此,本文主要介绍离散小波变换。

在离散小波变换中,首先通过卷积运算完成信号的滤波,将信号分解为信号的初级估计近似和信号的细节信息,然后在不同的频带上利用不同的尺度因子对信号进行处理。离散变换示意图如图1。

图中x(n)是原始信号,然后通过g(n)和h(n)完成分解,信号带宽利用f表示。完成滤波后的滤波输出等式为等式(1)高通滤波输出和等式(2)低通滤波输出

3 一维小波变换VC++实现

由2可知,离散小波变换实际是通过卷积运算完成的,小波变换一维DWT或IDWT实现代码如下:

1)函数输入

double*data,指向源数据的指针。int nCurLongth,当前处理数据长度。int IDWT,是否为DWT,1表示为IDWT,0表示DWT。int nStep,当前分解层数。int nSupp,小波基的紧支集的长度。本文中,小波基存储在hCoef这个二维数组中,通过nSupp调用小波基

4 图像的小波变换

图像可以看做是二维的矩阵。完成小波变换后,图像便分解为4个大小为原来尺寸1/4的子块频带区域,具体处理结果如图2所示。

图中LL频带保持了原始图像内容信息,HL、LH、HH分别保持了图像水平、竖直、对角线方向上的高频边缘信息。由于篇幅有限这里就不写出二维信号的具体小波变换实现代码。其具体实现方法为先对图像小波行变换,再进行小波列变换。

本文给出了一维小波变换具体实现代码,此代码优点为实现一维变换与逆变换简便容易。在以其为基础实现二维变换时,处理图片大小不局限于N*N大小。希望对需要自己编写小波变换代码的读者有一定帮助。

参考文献

[1]靳济芳.Visual C++小波变换技术与工程实践[M].北京:人民邮电出版社,2004.

[2]杨淑荧,边奠英.VC++图像处理程序设计[M].北京:清华大学出版社,北京交通大学出版社,2007.

[3]许刚,董士崇.小波变换算法的C语言实现[J].电脑知识与技术,2005(2).

VC应用程序 篇8

1VC++的教学现状及存在的问题

1.1教学现状:课时少、内容多

VC++ 程序设计这门课程从知识体系来讲, 包括面向象机制的学习、Windows编程思想的学习和MFC的庞大类库的学习这三个部分的内容[2]。我校安排的课时如下:面向对象内容的学习安排了48个课时, 其中36个理论课时和12个实践课时;Windows编程和MFC类库学习共安排了48个学时, 其中36节理论课和12节实践课。Visual C++是一个非常复杂的软件系统, 由于Windows编程的困难和MFC类库功能的庞大, 加上应用程序向导生成的程序框架结构的复杂性[3], VC++的学习比其他开发工具都要困难。根据目前的课时安排可以看出, 实践课的课时非常少。而VC++又是一门实践性很强的课程, 如何在这么短的学时内保质保量的完成教学任务, 对于授课教师来说是一个非常艰巨的任务。

1.2传统教学方法的不足

长期以来的教学过程都是以教师为主, VC++课程的教学模式也不例外。在这种“以教为主”的教学模式下, 教师是整个教学过程的主体, 学生被动的接受教师所传授的知识。整个教学过程中忽视了学生的个体差异, 不能够根据学生的基础差异因人而异的进行教学和辅导, 从而在一定程度上限制了学生学习的积极性和主动性。另外, 在实验过程中采取的方法大部分都是教师根据学习内容设计上机实例, 学生根据设计的步骤来进行实验, 使得学生虽然可以完成上机任务, 虽然例题是结合教学内容精心设计, 但学生只是被动的根据实验步骤完成整个实验过程, 在此过程中缺乏思考, 限制了学生的主动性和创造性。

2VC++程序设计课程改革

针对传统教学模式存在的不足, 结合VC++程序设计课程特点, 我们在此课程的教学过程中进行了如下有效的改革方法。

2.1改革教学大纲, 重新修订三纲两书2.1改革教学大纲, 重新修订三纲两书

在三纲两书修订的过程中, 对课时的安排做了调整, 将第二部分内容由48学时改为24学时, 虽然课时减少但全部改为实践课, 学生能够达到边学习边实践, 有利于学生在学习后立刻完成对新知识的巩固和加强。在教学中充分考虑到市场的需要和学生与机房的实际情况, 将学习的VC++的版本由VC++6.0提高到VC++2008。

2.2教学过程的改革

1) 采用新的教学仪器

在以前的教学过程中, 理论教学是采用多媒体实现的, 这虽然可以在一定程度在提高教学效果, 但由于其理论教学和实践教学分开, 对于VC++这种实践性很强的课程, 其教学效果不是很明显。在目前的教学过程中, 我们将内容全部放在机房采用“电子教室”的软件完成, 将教师的教学内容实时发布到每一位学生的学生机上, 学生可以实时的观看和学习相关的教学内容。并可在学习后立刻进行相关知识点的练习, 从实际的教学来看, 收到了事半功倍的效果。

2) 教学方法的改革

在教学的过程中, 在讲到知识的重难点时采用启发式和讨论式的教学方法, 这样能够让学生在讨论的过程中加强对知识点的理解。

在教学的过程中还注意增强师生的互动交流。师生之间通过互相问答、小组讨论、自我总结等多种方法促进他们培养主动学习、积极思考的习惯。在学习的过程中鼓励学生勇敢提出各种疑问, 并针对他们的提问教师要进行仔细的思考和分析, 并给予及时的反馈。用更好的方式帮助他们理解学习过程中碰到的问题, 从而提高主动学习的积极性。

3) 实践环节的改革

由于VC++是上门实践性很强的课程, 因此对实践环节进行改革是非常有必要的。根据本课程的特点, 并根据实验大纲的要求, 将本课程的实验分为三个部分, 第一部分是基本内容, 这一部分内容主要是教师所教内容的重复, 侧重于学生基本动手能力的培养。第二部分是提升内容, 在学生掌握了基本的动手技巧后, 根据课程实验大纲的安排, 我们精心设计了另外一部分的课程实验, 这类实验是对前一部分内容的深化, 有一定的难度和深度。要求通过这部分实验使学生对面向对象编程思想、VC++中的各种编程工具和控件有直观深入的认识和理解, 从而提高学生的应用软件开发能力, 重点培养学生自主分析问题的能力和解决实际问题的能力。第三部分是延伸内容, 由于教学学时的限制, 课堂上不可能有太多的时间供学生进行实践, 这部分内容主要是供学有余力的同学在课下完成的。

在实践过程中, 采用的方法是分组完成相应上机任务, 每个小组包括3-5人, 每个人做不同的内容, 同学们在这个过程中既学到了知识, 又锻炼了同学们的团队协作能力。考核时采用的是个人考核的方式, 每个人根据自己对本小组上机内容的整体理解和自己在本小组内做的工作进行答辩。

2.3考核方式的改革

该课程在考核方式上也做了较大的改革, 由于本课程实践性较强, 传统的试卷考核无法充分考查学生的掌握程度。因此在考核方式上抛弃了传统的试卷考核的方式, 改为上机考核, 要求每位同学在规定时间内完成指定的上机任务, 并根据学生的完成情况, 指导老师给出相应的成绩, 重点在于考核学生的动手能力和应用所学知识去解决实际情况的能力。

3总结

VC++程序设计课程是一门实践性很强且学习起来有一定难度的课程, 在实际的教学过程中通过在教学内容、教学方法、实践环节和考核方式等各方面进行了积极的改革, 我们也可以看到, 学生学习编程的自信心和学习能力都得到了很大的提高, 很多同学乐于进行该课程的学习, 学生的动手能力和利用所学知识解决实际问题的能力都得到了很大的提高。但通过该门课程的教学我们也发现, 有些同学在该课程与其他所学课程的结合上仍不能做到得心应手, 如数据库课程的相关操作, 这也是我们在今后的教学工作中重点需要面对和解决的问题。

参考文献

[1]兰义华.“VC++程序设计”课程教学改革探索与实践[J].科教文汇, 2012 (9) :70-71.

[2]孙鑫, 余安萍.Visual C++深入详解[M].北京:电子工业出版社, 2006.

VC应用程序 篇9

ADO是Microsoft数据库应用程序开发的接口,ADO技术基于COM (Component Object Model),具有COM组件的诸多优点,可以被多种语言支持,能够访问关系数据库、非关系数据库及所有的文件系统。在此中将实现一个ADO操作类的封装,通过它可以连接、操作Access、Excel文件;然后结合一个可完成Access与Excel数据内容相互拷贝功能的演示程序,向读者介绍VC环境下利用ADO进行数据库编程,及使用ADO操作Excel文件数据的方法。

2 ADO封装

在封装中,需要完成OLE/COM环境的准备与释放、数据库的连接与断开、数据库操作等操作,具体实现代码如下:

(1)在头文件中导入ADO接口库文件:

(2)定义连接对象、命令对象、记录集成员对象,用于ADO的操作;

(3)在类构造函数中完成OLE/COM环境的初始、成员变量的构造:

(4)在类析构函数中完成成员变量的销毁、OLE/COM环境的释放:

(5)连接函数,统一建立Access、Excel文件的连接;strFileName:指定连接文件,可为mdb、xls文件;IsAccessDb:指定连接类型,true为mdb文件,false为xls文件;IsHaveTitle:指定xls文件是否包含有表头:

(6)关闭已建立连接:

(7)执行返回记录集的SQL语句,并将结果保存在m_Recordset成员变量中:

(8) 执行无返回记录集的SQL语句:

3 演示程序

3.1 界面

如图1所示。

3.2 说明

演示程序窗口上部有两个列表控件分别列出用于测试mdb、xls文件的内容;进度条用于显示数据拷贝进度;浏览按钮用于指定操作文件;“Access添加到Excel”按钮用于将mdb数据库中的数据拷贝到xls文件中;“Excel添加到Access”按钮用于将xls文件中数据拷贝到mdb文件中。

3.3 实现

这里仅给出数据拷贝部分的实现代码,其余代码可参阅演示工程文件中相关代码。

(1)由Access文件拷贝到Excel文件:

(2)由Excel文件拷贝到Access文件:

4 结语

通过对ADO操作类的封装,演示程序的实现;向大家介绍了VC++环境下ADO数据库编程的实现方法,同时也演示了用ADO操作Excel文件的方法。所封装的ADO操作类CXyxADO,可以在自己的工程中直接引入头文件与代码文件即可以实用。

程序在Windows Vista、Visual C++2008环境下测试通过,完整源代码请登录网站http://www.comprg.com.cn查阅。

摘要:通过在VC++ 2008环境下, 将ADO方式操作MDB、XLS文件的功能封装为一个类, 并结合Access与Excel数据内容相互拷贝的演示程序的实现, 说明进行Access及Excel数据操作时封装类的使用方式。

关键词:VC++,ADO,封装,Access,Excel

参考文献

[1]http://msdn.microsoft.com/library/, MSDN, 2007.

[2]启明工作室.精通SQL Server2005数据库应用系统开发.人民邮电出版社, 2007.

VC应用程序 篇10

在传统的飞行程序设计中涉及到大量的计算,目前,这些计算大多是采用手工单独进行的,计算工作量大、出错率较高,而对程序设计,只要一个计算出错,就要对所有相关计算重新开始,且手动计算过程中,数据不能连续计算,只能通过有效数据的多次取舍,这不利于着陆标准的精确、有效的建立。基于这些问题,本文依据国际民航组织文件8168《航空器运行-航行服务程序“目视和仪表飞行程序设计”》[1]和中国民用航空规章CCAR-97FS-R1《航空器机场运行最低标准的制定与实施规定》[2]的要求设计了辅助软件,该软件使用简单方便,能够快速、批量的计算,准确度高,提高了设计人员的工作效率和减轻了工作负担,具有良好的可用性。

1 飞行程序设计中相关计算

1.1 速度转换计算

空速是飞机相对于空气运动的速度,由空速表测定;指示空速(IAS)是空速经过仪表误差和空气动力误差修正后的速度。真空速(TAS)是指示空速经过空气压缩性修正量误差和空气密度误差修正后的速度[3]。

在飞行程序设计中,所有涉及到速度的相关计算都必须使用真空速(TAS),本软件在换算时将不考虑空气压缩性修正量误差,则IAS换算TAS公式如(1)所示:

ΤAS=171232.9*(273+tΗ)0.5(288-0.006496*Η)2.628*ΙAS(1)

式中,空中温度(tH)单位为摄氏度(℃);高度(H)单位为米(m);指示空速(IAS)与TAS的单位为km/h。

1.2 坐标转换计算

在飞行程序设计中,一般可以用极坐标和直角坐标来标识障碍物与跑道之间的位置关系。通常测量部门给设计人员提供的障碍物位置都以极坐标表示,而极坐标不便计算,在程序设计中,设计人员首先会将极坐标转换成直角坐标,因此,涉及到障碍物坐标的大量转换问题,如果采用手工计算,将会使工作量倍增,本软件针对此问题进行了设计,只要输入跑道的基本参数和导入极坐标,就可以一次性批量转换,操作简便、准确度高、速度快,大大提高了工作效率。

在转换过程中,首先要理解极坐标和直角坐标定义。其中,极坐标系以跑道中心为原点,磁经线为起始边,用磁方位(MB)、距离(D)和障碍物标高(H)或障碍物高(h)来表示,如图1所示。直角坐标系以跑道入口的中点为原点,x轴与跑道中线延长线一致,跑道入口前x值为正,入口之后为负值;y轴过原点与x轴相垂直,在进近航迹的右侧,y值为正值,左侧为负值,z轴为过原点的竖轴,以入口标高为零,高于入口平面时z值为正值,如图2所示[3]。

极坐标转换成直角坐标通常采用公式(2),其换算示意图如图3所示。

X=-D×cosα-L2; Y=D×sinα (2)

式中,α=ΜΒ-ΜΗ;D为跑道中心至障碍物的距离;MH为着陆跑道的磁方向;L为跑道的长度[2]。

1.3 下降梯度计算

飞行程序设计中,对起始、中间和最后进近航段都有下降高度的规定[3]。本软件针对下降梯度进行了设计,使用者只要将飞机当前航路点的高度、预降航路点的高度和飞行航段的长度输入到对应区域,便可以求出相对于的下降高度。其中下降梯度主要采用公式(3)。

G=(hfirst-hsecond)D×100%(3)

式中,G表示相对应的下降梯度,hfirst表示飞机当前航路点的高度,hsecond表示飞机预降航路点的高度,D表示两点之间的距离。

1.4 最低超障高度计算

最小超障余度(MOC)是指飞机飞越障碍物时与障碍物保持的最小垂直间隔。最低超障高度(OCA)是指飞机飞越障碍物时的最小高度,其等于障碍物标高(h0)再加上最小超障余度(MOC),即公式(4)所示,从图4可看出,当已知h0时,只要求出MOC,便可以得到OCA。其中

OCA=h0+MOC (4)

在不同航段上,障碍物将分布在不同区域,如图5所示,可能分布在主区或副区,其MOC也是不同的。在主区内,各障碍物的MOC相同,h0越高,MOC就越高;在副区,不同位置的障碍物,其MOC不同,必须逐个计算其超障余度,其任意一点的MOC’可由公式(5)计算,如图5、图6所示。

ΜΟC'=L-lL/2×ΜΟC(5)

式中,L为障碍物所在位置的区域宽度,l为障碍物到航迹的垂直距离,MOC为障碍物在对应航段的主区超障余度,单位为米(m),各航段其对应的MOC如表1所示。

在求解障碍物所在位置的区域宽度L时,由于仪表进近程序的各个航段长度都不一样,且规定有相应的安全保护区,因此在计算L时,要通过各航段的长度D和障碍物距下一航段定位点的距离d来计算,如图5所示,其计算如公式(6)。

L=L'+d*tanα (6)

式中,L’为航迹一侧已知点处的区域宽度。

2 飞行程序设计辅助软件开发与测试

本软件采用Visual C++ 6.0对飞行程序设计中的部分计算进行开发[4,5]。VC++ 6.0 是Windows 平台下主要的应用程序开发环境之一,它界面简洁,兼容性及移植性强,开发出来的系统具有人机界面友好、执行速度快、维护和升级方便等优点。

作为程序设计的辅助软件,第一,要提高计算的准确度和精确度;第二,软件操作要简单方便,提高工作效率,能够批量计算和直接得出需求数据;第三,计算结果要便于下一阶段使用,即存储计算结果,撰写程序设计报告和进行检查。

此软件根据目标需求,依据相关规定[1,2],主要对四大部分计算进行了开发,如图7所示为功能图。下面将对各个模块功能进行介绍,同时采用某机场程序设计中的相关数据进行验证,确保了软件在计算过程中的准确性。

2.1 速度转换功能

速度转换功能为IAS转换成TAS,只要输入指示空速(IAS),空中温度(tH)和高度(H),便可求出真空速(TAS),如图8所示。

2.2 坐标转换功能

坐标转换功能为极坐标转换成直角坐标,程序设计人员只要填写好跑道参数(跑道长度、跑道磁方位和跑道标高),然后导入已有的极坐标数据文本文件,就可以在显示界面显示,同时可以导出到EXCEL,如图9所示。

2.3 下降梯度计算功能

下降梯度计算功能为求航路段上两航路点高度间的下降梯度。程序设计人员只要在两航路点输入高度和航路距离,就可以快速计算出航路的下降梯度,如图10所示。

2.4 OCA计算功能

在OCA计算功能中,主要是对起始进近、中间进近、最后进近中最低超障高度的计算。在软件中首先通过手动输入或者文件导入相关格式的障碍物的信息,包括障碍物标高、障碍物在该进近航段一侧的区域宽度和障碍物至对应进近航段标称航迹的垂直距离;然后选择障碍物对于的进近航段,若为最后进近航段,选择是否有最后进近定位点(FAF),最后软件会自动判断各个障碍物在主区还是副区,且计算各个障碍物的MOC和OCA,并将最大的OCA显示在列表框,如图11所示。

3 结论

不管是传统的飞行程序设计还是现在新型的PBN飞行程序设计,在设计中都设计到了大量的小型计算,如果都通过设计者手工计算,将会大大增加工作量,也容易出差错,该软件针对这些问题,依据国际民航组织的相关文件的要求进行了设计,使程序设计者在设计中能够快速、批量的计算,增加计算的准确性、提高工作效率、降低计算复杂度,大大减轻了设计人员的劳动强度,减少了人工差错,具有良好的可用性。但此软件还有许多考虑不周的地方,它会在使用过程中被进一步完善。随着计算机技术的发展,相信在不久以后,自动化飞行程序设计软件的诞生将为程序设计人员带来更大的方便。

参考文献

[1]CAO.Procedures for Air Navigation Services(3)Aircraft Op-eration(DOC.8168)Fifth edition[S].2006:486-593.

[2]中国民用航空总局.航空器机场运行最低标准的制定与实施规定(CCAR—97FS—R1)[S].2001.

[3]朱代武,何光勤.目视和仪表飞行程序设计[M].成都:西南交通大学出版社,2004:4-10.

[4]郑莉,董渊,张瑞丰.C++语言程序设计[M].3版,北京:清华大学出版社,2004:62-123.

2007年美国VC100 篇11

创业者无疑是2007年最大的赢家,连续4个季度都从投资人手中获得了超过70亿美元(每季度)的风险投资,这是2001年以来从未有过的盛景。根据普华永道和美国风险投资协会向《Entrepreneur》杂志独家提供的分析报告:2007年,全美的风险投资家在3,813比投资交易中共投资294亿美元,创造了自2001年以来的市场最高点。投资总额比2006年增加了10.8%,投资交易数量则增加了5%。

种子期和早期的企业在2007年也获得了更多的投资,比2007年增长了21%,融资总额达到了63亿美元,平均每家公司获得了450万美元的投资。同时第一次融资的企业数量也达到了6年来的新高,这是由于风险投资家增加了对很多领域的公司的首次投资,去年共投资1,267家公司,总额为72亿美元。

2007年的投资的增长主要归因于清洁技术和生命科学领域投资的上升,互联网垂直领域的投资也出现了强劲的增长。在过去的几年里,活跃的并购市场和风险投资支持的企业IPO市场让投资者备受鼓舞,因此,2007年风险投资家乐意和新老创业企业分享胜利,这也是投资增长另外一个原因。不过,风险投资家们的口袋里还有很多钱,在2008年,你会发现,有着绝佳创意和坚实商业计划的创业者依然能获得他们的青睐。

VC应用程序 篇12

在做效果评估时, 影响区、对比区的面积要相同, 不可以任意放大和缩小。所以, 为了方便选择同等大小的对比区域, 区域 (包括影响区域和对比区域) 用圆形区域表示, 圆形区域通过以下两参数确定:圆心和半径。圆心位置和半径为变量, 可以通过输入改变, 满足了不同作业情况。高炮作业分为单个高炮作业, 多个高炮同时作业和不同时作业, 在做参数统计时, 参数统计时段为高炮作业前后半小时或者统计作业有效时间段, 开始参数统计时间为作业前半小时或者各个高炮开始作业时间。在本文中, 为每个影响区选择一个非作业区为对比区域。

本文基于VC++平台, 设计了一个可以评估高炮作业效果的软件, 通过统计影响区域和对比区域在作业前后时间段内的雷达参数, 对比说明高炮作业效果。为此, 设计了一个人机界面:通过输入设定参数统计时段;通过手动输入 (也可以通过文本方式读入区域信息) 确定统计参数区域;并选定需要统计的参数, 最后分区域进行参数统计并以多个txt文本输出。文章最后选择高炮防雹个例进行实验, 讨论了影响区域和对比区域的选定方案, 参数开始统计时段的确定方案, 参数统计时长的确定方案, 需要统计的参数选定方案, 实例证明本软件为高炮作业效果评估进一步提供一定意义的参考。

1 系统总体功能需求分析

关于人工影响天气作业效果评估前人做过很多研究, 其中物理检验和统计检验是两个主要的分析方法。统计检验前人也做过很多研究, 大致分为以下三种[3—5]:对作业云和非作业云的参数变化特性进行对比分析;对作业云作业前后雷达回波强度、回波面积等因子进行统计对比分析;对作业云和非作业云分别选择催化前和催化后雷达特征量进行分析。如此, 本系统针对高炮作业点, 为每个炮点作业的作用区域 (影响区域) 与非作业区域 (对比区域) 进行参数统计, 研究作用区域 (影响区域) 与非作业区域 (对比区域) 的参数变化, 更直观。如果要统计作业云与非作业云, 可以将统计区域半径取足够大。

本文基于VC++平台, 设计了一个可以评估高炮作业效果软件, 分单个高炮作业、多个高炮同时和不同时作业时, 分别确定同样大小的影响区域和对比区域, 手动输入或通过.txt文本输入区域位置信息, 对两区域的指定回波参数同时分别进行统计并以多个.txt文本输出。通过对比影响区作业前后以及影响区域与对比区域的雷达回波变化, 进一步说明高炮作业效果。

为了满足不同作业情况, 区域大小和位置可以改变, 统计参数时段可以控制。由此, 设计了一个人机界面, 通过输入开始参数统计时间和跟踪时长设定参数统计时段, 通过手动输入影响区域和对比区域圆心和半径 (也可以通过文本方式读入区域信息) 确定统计参数区域, 通过选定需要统计的参数, 最后将分区域进行参数统计并分区域分参数以txt文本输出。

2 软件总体方案设计与实现

2.1 资料输入与数据输入输出

用的数据为反射率组网数据。将组网数据文件按时间排列好依次放在同一个文件夹下面, 统计参数时依次读取。反射率组网数据来源:将数个不同雷达站的基数据文件通过中国气象科学研究院灾害天气国家重点实验室开发的新一代雷达三维组网及产品处理系统组网而成。组网数据为不同高度的CAPPI资料, CAPPI网格分辨率为1 km×1 km, 对应经纬度分辨率为0.01°×0.01°。读入反射率数据时, 反射率值过大或者过小都认为是错误值, 将反射率小于10 d Bz大于80 d Bz的值视为无效。

数据输入部分包括参数统计时长, 影响区域和对比区域位置信息及开始参数统计时刻。参数统计时长单位为分钟, 根据不同作业情况输入;由上文可知, 影响区域和对比区域为圆形区域, 通过输入圆心和半径两个值确定, 每对影响区域和对比区域开始参数统计时刻应该相同。影响区域和对比区域位置信息应该根据不同作业情况而不同, 系统设计了一个区域位置信息输入信息窗口 (可以手动输入也可以通过.txt文本信息读入) , 影响区域和对比区域位置信息应该通过分析由读者提供。

输出数据以.txt文本方式输出。因为高炮作业主要分为增雨作业和防雹作业。一般视为作业有效的增雨作业, 作业后, 云体发展, 强度增强, 降水增加, 据此, 统计如下参数:强回波面积, 最大反射率, 垂直积分液态含水量, 跟踪范围内雨强;高炮防雹作业后短时间内, 雷达回波变弱, 最大回波强度减小, 最大回波强度对应回波顶高或者回波顶高降低1 km左右, 认为作业有效, 据此, 统计如下参数:强回波面积, 最大反射率, 回波顶高, 垂直积分液态含水量。所以, 本系统可以计算最大反射率 (包括最大反射率回波顶高) , 回波顶高[6,7], 强回波面积, 垂直液态含水量[8]等雷达回波参数, 这些参数通过反射率演算出。可以根据不同的作业 (增雨或者防雹) 指定相关参数, 对各个的影响区域和对比区域的指定参数分别统计, 并分别以.txt文本输出。

2.2 系统工作原理

从前文可知, 影响区域和对比区域用圆形区域表示, 圆形区域的位置通过圆心和圆半径识别, 圆心和半径通过输入给定, 满足了不同作业情况。设计对比区域也为圆形区域, 与影响区域同大小却不同位置, 软件对同等大小的影响区域与对比区域分别进行参数统计。

高炮作业分为单个高炮作业和多个高炮同时和不同时作业三种情况。单个高炮作业时对应一对影响区域和对比区域, 多个高炮同时作业时对应多对影响区域和对比区域。上述两种情况, 高炮同时作业, 影响区域和对比区域的参数开始统计时段均在在相同时刻。多个高炮不同时作业时, 对应多对影响区域和对比区域, 且每对影响区域和对比区域开始参数统计时间不同。综上, 要实现高炮多种不同作业情况的参数统计, 最终需要实现多个圆形跟踪区域在不同时刻分别开始参数统计。首先要实现针对单个圆形区域的参数统计, 再在该基础上实现多个圆形区域在不同时刻分别开始参数统计。

单个圆形区域, 参数统计简单实现, 原理设计框图如图1所示:首先要读入雷达数据, 本文采用的是雷达组网数据, 然后从文中抽取开始经纬度及经纬度分辨率等信息;其次, 输入区域信息 (圆心经纬度位置和半径) , 找到区域位置, 抽出该区域的雷达数据;然后, 进行参数设置 (参数统计时段的控制及选中要统计的参数) ;最后, 将统计参数以.txt文本输出。

单个、多个高炮不同时作业时, 有一对或者多对影响区域和对比区域, 对应不同时刻的多个圆形区域参数统计。首先需要输入多个区域信息, 将多个区域对应的雷达基数据抽取出来, 依次进行参数统计, 又因为每个高炮作业时间不同, 那么每个高炮对应的影响区域和对比区域统计参数时段不一, 需要加入一个记录时间参数变量L。设开始时刻为0时刻, 1个时刻为6 min (因为组网文件时间间隔为6 min) 。每读入一个文件时参数L加1。当该区域参数开始统计时刻等于当前时刻时, 对该区域参数进行统计。本高炮作业效果评估系统工作流程图如图2。雷达组网文件按时间顺序依次排列放在一个文件夹中, 从文件夹中依次逐一读入文件。提取雷达组网数据, 包括开始经纬度信息、经纬度精度信息以及雷达反射率基数据。输入影响区域与对比区域的圆心和半径, 给区域从0到n编号。圆心位置用经纬度表示, 通过圆心经纬度信息以及组网文件开始经纬度、经纬度精度信息获得圆形影响区域与对比区域位置。对参数进行设置, 包括统计参数时长、开始参数统计时间的设置以及选定本次实验需要统计的参数。最后按编号依次判断在当前时刻区域n是否在统计时段, 如果在则统计该区域指定回波参数信息, 并分区域分参数以.txt文本输出。

2.3 高炮作业效果评估软件功能简介与实现

图3为该系统人机界面可以通过手动输入统计参数时长。可以输入或者读入区域信息。单个高炮作业时, 可以手动输入影响区域与对比区域信息 (包括参数统计时长、开始统计参数时刻和区域位置信息) 。多个高炮作业时, 以.txt文本方式读入影响区域与对比区域信息;可以选择多个或者单个要统计的参数对各个区域分别进行统计。

在图3中, 统计参数时长 (跟踪时长) 输入为30min, 选择最大回波强度以及回波顶高进行统计。如果按“输入区域信息”按钮, 弹出对话框如图4, 该对话框针对单个高炮作业时, 输入区域信息。资料输入 (组网基数据文件) 按时间排列在同一个文件夹中, 在本文中, 因为雷达数据文件时间间隔为6 min, 所以组网生成文件时间间隔也为6 min, 设定一个时刻为6 min, 最开始的时间为0时刻。

3 个例分析

本文选取2012年6月12日吉林一次高炮防雹作业情况, 讨论了参数统计时段的确定方案, 影响区域和对比区域的选定方案, 统计参数的选定方案。对影响区域和对比区域进行参数统计, 通过对比影响区域作业前后以及影响区域与对比区域的雷达回波变化发现, 影响区域在作业后回波强度减弱, 最大反射率回波顶高降低, 强回波面积减小, 垂直液态含水量作业后下降, 为此次高炮作业正效果评估进一步提供了依据。

3.1 参数统计时段的确定方案

本次实验对作业前后影响区域参数进行统计, 对影响区域与对比区域参数进行统计对比, 说明作业效果。而高炮作业催化剂有效作用时间为30 min左右, 所以取参数统计时间为60 min, 其中包括作业前半小时。参数统计开始时间为高炮作业前半小时。

3.2 影响区域与对比区域的确定方案

高炮作业半径为7~8 km, 每颗炮弹影响半径2 km, 取半径为10 km圆形区域作为作业区域。考虑催化剂的水平运输和扩散作用, 催化剂影响范围比10 km大, 将影响区域尽量取大, 半径取为40km, 取炮点位置为区域中心。对比区域半径取值与影响区域取值相同, 为40 km。对比区域选择作业区域上风向的不作业区域[9]。风向为东南风, 所以可以取影响区域左边 (西边, 上风向) 区域为对比区域。

3.3 统计参数类型确定

实验为高炮防雹作业效果评估。一般而言, 作业后短时间内, 雷达回波变弱、最大回波强度减小、最大回波强度对应回波顶高或者回波顶高降低1 km左右, 认为作业有效。所以, 选择统计的参数为最大反射率 (包括最大反射率回波顶高) 、回波顶高、VIL三个参数为统计值。后经试验发现两个区域 (影响区域和对比区域) , 18 d Bz的回波顶高均约在7 km, 并没明显变化, 所以选择统计最大反射率回波顶高。在本文中, 强回波面积指的是回波强度大于30 d Bz的回波面积, VIL指的是区域内平均垂直液态含水量。

3.4 作业结果分析

将作业前后半小时 (2012年6月12日16∶48到17∶48时刻的文件) 长春cc波段的雷达文件通过组网形成组网文件放入同一文件夹, 按时间顺序排列好, 那么开始时刻0时刻为16∶48, 参数统计时长设为60 min, 参数开始统计时间为炮点作业前30min (0时刻) , 由表1可见开始作业时刻取第5时刻 (17∶18) 。表1为作业点作业信息。表2为影响区域和对比区域信息。根据表2, 影响区域与对比区域的开始参数统计时刻均为0时刻, 半径均为40 km。

注:作业时间为北京时间

选择三个统计的参数:最大回波强度 (包括最大回波强度回波顶高) 、强回波面积、VIL。将参数变化绘制如图5, 图中实线为影响区域参数变化曲线, 虚线为对比区域参数变化曲线。图5中, 参数开始统计时刻为0时刻, 开始作业时刻第5时刻。从图5中可以看出, 影响区域作业后:最大反射率先明显增强 (59~63 d Bz) , 再减弱 (63~55 d Bz) ;最大反射顶高在作业12 min后, 最大反射率对应回波顶高从作业时的2 000 m下降到1 200 m, 下降了1 km左右。强回波面积作业后有明显的下降现象;区域内平均垂直液态含水量 (VIL) 则是一直有明显下降趋势。通过对比影响区域和对比区域, 发现作业后, 影响区域最大反射率先增加再减小, 对比区域最大反射率基本在44 d Bz左右, 没有明显波动现象;而最大反射率回波顶高, 影响区域先增加后明显下降, 对比区域甚至有增长趋势;强回波面积, 影响区域作业后先增加后减弱, 而对比区域在作业点作业, 明显增加, 在作业完成后24 min (第9时刻) 强回波面积突然减小;区域内平均VIL值, 影响区域作业后下降, 对比区域基本没变化。

通过查阅一拉溪乡作业点作业登记信息表, 发现作业后, 区域雨势增强:由小雨变成中雨, 作业效果良好。通过对比作业前后影响区域和影响区域、对比区域的参数变化, 发现最大反射率先明显增加再减小, 最大反射率回波顶高下降、强回波面积减少 (回波减弱) 、VIL值减小, 为此次高炮防雹作业正效果进一步提供了依据。

(0时刻为16∶48, 5时刻为作业时刻)

4 总结

本文在VC++的平台上, 设计了一个针对高炮作业的简单作业效果分析软件, 软件设计了友好的人机界面, 可以实现单个高炮作业、多个高炮同时作业、以及多个高炮不同时作业情况下, 为每个炮点确定一个影响区域, 并选择同样大小的对比区域, 分区域对指定参数进行参数统计检验。

将该平台应用于吉林一次高炮防雹作业效果评估, 该实验表明:该系统运行良好, 可以设定参数统计时段, 选定影响区域、对比区域及统计的参数;对输出参数统计分析, 通过对比影响区域作业前后以及影响区域与对比区域的雷达回波变化发现, 发现影响区域在作业后回波减弱, 回波顶高降低, 为此次高炮作业正效果评估进一步提供了依据。

该系统输入数据为组网数据, 可以将不同类型雷达数据通过组网组合在一起, 该系统简单有效, 为高炮作业效果评估而设计, 但是系统也可以对指定任意大小的影响区域进行参数统计检验, 影响区域大小位置可以随着作业情况不同而调整, 不考虑与作业工具严格相关时, 本系统可以应用于人影作业雷达回波参数统计。但是本文统计结果时, 以.txt文本输出, 在对参数统计时, 必须人工对数据分析制表。在今后的工作中, 可以实现对更多参数进行统计, 并逐步实现自动对生成的参数数据进行读取, 分析, 然后绘图制表, 将结果直接展示出来。

参考文献

[1] 雷恒池, 洪延超, 赵震, 等.近年来云降水物理和人工影响天气研究进展.大气科学, 2008;32 (4) :967—974

[2] 王致君, 刘黎平, 龚乃虎.人工影响天气研究工作的回顾与展望.高原气象, 1999;18 (3) :361—367

[3] 王婉, 姚展予.2006年北京人工增雨作业效果统计分析.高原气象, 2009;28 (1) :195—202

[4] 唐仁茂, 向玉春, 叶建元, 等.多种探测资料在人工增雨作业效果物理检验中的应用.气象, 2009;35 (8) :70—75

[5] 蒋年冲, 曾光平, 袁野, 等.夏季对流云人工增雨效果评价方法初探.气象科学, 2008;28 (1) :100—104

[6] 冯锦明, 刘黎平, 王致君, 等.青藏高原那区地区雨季雷达回波、降水和部分热力参数的统计特征.高原气象, 2002;21 (4) :368—374

[7] 王伏村, 丁荣, 离耀辉, 等.河西走廊中部冰雹天气的环流和多普勒雷达产品特征分析.高原气象, 2008;27 (6) :1343—1348

[8] 陈超, 刘黎平, 王改利, 等.人工影响天气中雷达回波跟踪方法及其应用.气象科技, 2012;40 (3) :459—496

上一篇:手机媒体信息下一篇:新课程下的应用题教学