已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
abstract with the development of the computer simulation technology, there are tremendous economy and social benefits in a simulation system supporting platform with a good user interface and convenient use and complete function. the simulation supporting platform is based on high performance microcomputer. it uses visual c+.net as the development tool on the operating system of windows 2000. it has some functions such as static database management, the support of model development, graph simulation, real-time data monitor, the support of the system in operation, the network communication. the paper mainly introduces the design and implement of the model development and supporting system of the simulation systems supporting platform. the model development and supporting system has some functions such as the edit of source files and task files, scanning variables and inserting the variables into the variables database, the compiling and linking of source files and tasks management. the system can provide a simple and usable edit environment and modify the task files attributes. it automatically add the variables and their attributes scanned from the source files into the variable database. it can automatically compile and link the source files. in the tasks management, it can deal the tasks with the operation including run, stop, pause, continue. the paper is based on the windows 2000 operation system, and uses the visual c+.net to develop. it uses the concepts of class and objects in the c+ language to simulate the practical problems , and uses the technology of ado accessing database to operate the sql database. in the whole development period, the software engineerings idea is the guidance, and uses the object-oriented programming technology. it uses thoroughly the object-oriented attributes, such as encapsulation, inheritance and polymorphism etc. it demonstrate sufficiently the priority of object-oriented method. key words: simulation support system c+ win32 api iii 三峡大学学位论文原创性声明三峡大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作 所取得的成果,除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经 发表或撰写过的作品成果。 对本文的研究做出重要贡献的个人和集体均已在文中以明 确方式标明,本人完全意识到本声明的法律后果由本人承担。 学位论文作者签名: 日 期: i 引 言 随着计算机技术的发展和仿真系统的日益大型化、复杂化,以前的开发手段已经 远远不能满足实际要求。充分利用计算机仿真技术,建立一个使用方便、界面友好、 功能齐全的仿真系统支撑平台,将会产生巨大的经济效益和社会效益。 随着微机软硬件技术和 windows 技术的发展, 基于微机的仿真支撑平台软件的开 发也得到了很大的发展。 利用以高性能微机为运行平台的仿真支撑环境进行仿真系统 的开发,成为仿真支撑环境的发展的新趋势。 本仿真系统支撑平台主要是针对地区电网,以高性能微机为运行平台,在 windows 2000 操作系统的运行环境下,采用 visual c+.net 作为开发工具;本系统 支持大型数据库,集成度高,具有静态数据库管理、模型开发支持、图形仿真、实时 数据监视、实时数据库管理、仿真运行管理与控制、网络通信等功能。 1 1 绪论 1. 1 选题背景与国内外研究现状 1、2 人们所要研究或试验的,由一些实体所组成的各式各样的对象叫做系统。实体、 属性、活动就是系统的三大要素。为了研究、分析、设计和操作某一个系统,往往需 要对该系统进行试验。一般来说有两种试验方案:一种是直接在真实系统上进行;另 一种是按真实系统的原型构成一个模型,然后在模型上进行试验。 在真实系统上进行试验往往存在很大困难。例如,在组成系统前系统并不存在, 即使系统已存在,在真实系统上试验会破坏它的正常工作,甚至造成重大事故,或无 法恢复。总之,有些直接试验是不现实的或根本不可能的。显而易见,在一个真实发 电设备上进行像锅炉爆管或者汽轮机进水等试验是绝对不允许的。 因此在模型上进行 试验就成为对系统进行分析、研究和操作必不可少的有效手段。人们把在模型上进行 试验这一过程就称为系统仿真。 采用数学模型对真实系统进行数学仿真,是近些年来由于计算机技术的迅速发展 被科学界广泛采用的一种仿真技术。它具有经济、方便、修改灵活、重复试验、安全 等特点。由于数学仿真主要在计算机上进行,用计算机对数学模型进行运算、分析和 参数结果输出,因此又称为计算机仿真。 随着计算机技术的飞速发展,仿真技术也得到了迅速的发展,主要体现在两个方 面:数学模型和仿真支撑环境,尤其是后者,在利用计算机新技术方面取得了尤其突 出的成就。 随着社会对能源需求的增长和发电技术的进步,现代电力系统发展很快,大容量 发电机组不断涌现,自动化程度更趋提高,计算、监视及控制问题日益复杂,这就需要 运行人员具有更强的应变能力和更熟练地操作。新的电气研究也需做各种试验,但无 论从现有技术上还是从供电的可靠性及设备的安全性考虑,直接在实际的电力系统及 变电所中进行操作人员的培训和科学研究,可能性很小,因此电力系统仿真技术脱离 现场对运行人员培训及电气研究成了迫切的需要。 电力系统仿真技术的研究可追溯到 50 年代,最早的电力系统仿真设备可认为是 直流计算台,以后出现直流计算台,主要用做短路、潮流及稳定计算。真正成为实用 技术是从 60 年代末 70 年代初用于电气培训。美、日、英等国推出了核电、火电仿真 系统,培训运行人员效果良好。 清华大学于 1975 年向中国电力工业部建议研制中国的火电机组仿真系统(当时 在中国的科技领域里称作模拟系统) ,并得到电力工业部的批准和支持,开始了中国 第一台“大型火电机组模拟系统”的研制。仿真对象是正在辽宁省朝阳发电厂运行的 哈尔滨三大动力厂生产的国产第一台 200mw 燃煤发电机组。 1982 年完成了中国的这 2 第一台大型火电仿真系统,开始了中国自己有能力开发仿真机的历史,使中国成为世 界上少有的几个有能力开发仿真机的国家之一。1984 年清华大学又开始开发中国第 一台完全复制电厂控制室的全范围高逼真度仿真机,于 1988 年完成,安装在东北电 管局沈阳电力专科学校。 这是中国自己成功研制和开发最早的两台实用性的火电仿真 机。 进入 20 世纪 90 年代,西方发达国家特别是美、英、日等国家电力工业发展处于 停滞状态,新电厂建设在减少。因此它们的电厂仿真技术工业相应地也没有足够地市 场而纷纷关闭。如 ge,westinghouse,b 下面的命令描述如何使用 shellexecute 函数调用 dos 窗口: shellexecute(this-m_hwnd,open,cmd.exe, sw_shownormal); 或 shellexecute(this-m_hwnd,open,cmd.exe,c:mylog.log, sw_shownormal ); 11 2.2 文件系统2.2 文件系统 88 在 vc+.net 环境中,可以使用 ansic/c+提供的标准文件操作方式,也可以 使用 win32 api 进行文件操作,更为简单的方式是利用 mfc 已经封装好的 cfile 系 列的文件操作类来进行文件的读写操作。 采用 ansi c/c+标准文件操作方法进行开发的优点是通用性强。 因为这是 ansi 定义的标准,适用于各种平台,代码可以在各种编译器上无需修改地进行编译,但是 自身也有不足之处,由于在设计的时候较多的考虑了通用性,因此必然会无法利用特 定的操作系统的某些特性,例如,windows 操作系统下的异步操作特性。 ansi c/c+提供的文件操作函数有 fopen、fclose、fgetc、fputc、fread、fwrite、 feof、ferror 等。 在 windows 系统下,程序员可以使用 win32 api 进行文件的操作。微软公司提 供的文件操作 api 主要有 creatfile、deletefile、closehandle、copyfile、movefile、 readfile、writefile、setfilepointer、replacefile、lockfile 等。 mfc 文件类封装了绝大部分常用的文件操作函数,因此对于一般的应用开发来 说 mfc 文件类依然是首选。 2.2.1 文件操作 5、9 用 visual c+开发 windows 程序时可以使用系统提供的多种文件操作功能,传 统 c 语言 file 型文件操作可以继续使用,c+风格的流式文件 io 也可以使用。 由操作系统提供的无缓冲文件操作,mfc 提供的 cfile 类封装了这组函数的调用。 关于 c+语言文件处理程序的设计,如果需要处理格式化文本或其他缓冲型文件操 作,语言提供的流式 io 是更好的选择。 cfile 类对文件操作的支持是完整的,包括打开、读写文件及定位等。使用 cfile 类一般不直接在构造对象时指定文件名,而是先分配对象,然后用 open 函数将文件 打开, 并检查其返回值以确认操作是否成功。 cfile 类的 readhuge 和 writehuge 函数 支持一次读写超过 64kb 的数据块,使用很方便。cfile 的几个静态成员函数支持不 打开文件时的更名、删除文件及检索文件等操作。 mfc 还提供了几个 cfile 的派生类用于支持不同种类的文件 io 操作,例如 cmemfiie 可以支持内存中的文件处理,有关内容请参考 visual c+联机文档。下面 列出 cfile 类成员函数及其说明。 m_hfile 存储操作系统文件句柄,空值为 cfile:hfilenull。 cfile(); cfile(int hfile); cfile(lpctstr lpszfilename,uint nopenflags); 12 打开文件 lpszfilename,失败时返回 faise。打开模式为下列组合: cfile:modecreate 创建新文件。若文件已存在则将其长度截为 0; cfile:modenotruncate 与 modecreate 组合,书文件存在时将其打开; cfile:moderead 打开用于读; cfile:modereadwrite 打开用于读写; cfile:modewrite 打开用于写; cfile类提供了基于二进制流的文件操作,功能类似于c语言中的fread()和fwrite() 函数。cstdiofile类提供了基于字符串流的文件操作,功能类似于c语言中的fgets()和 fputs()函数。cstdiofile类作为cfile的派生类,不仅具有了cfile类的特点,而且对于 简单的读写整行的字符串的文件操作来说, 用它来进行此类操作非常方便。 cstdiofile 类具有丰富的对字符串操作的函数,提供了一种流式文件数据的机制。它提供了两个 函数来处理这类数据,一个是readstring(),另一个是writestring()。readstring函数在 满足下面的条件时停止读入字符串9: 1)指定的字符量。如果送入需要读出的字符个数(不包括字符串的终结符“空 值” ) ,readstring 函数将一直执行读操作,直到读够了或者其他条件之一满足; 2)行结束(新行) :如果 readstring 遇到一对 cr/lf 字符,则停止读操作,即使 指定的字符量尚未读够; 3)文件结束:如 readstring 读的过程中遇到文件结束,它就不再处理数据流了; 2.3 访问数据库技术ado 10、11 2.3.1 数据库概述 数据库是与特定主题或用途相关的数据和对象的集合,用于搜索、排序和重新 组织数据。数据库存储在文件中。sql server 数据库可以包含表、视图、存储过程、 触发器和数据关系图,还可以包含用户、角色、规则、默认值、用户定义的数据类 型和函数以及全文目录。 sqlserver 数据库包含两种类型的表,即用户表和系统表。在关系型数据库中, 数据分别存储在各个表中。每个表包含某个特定主题的数据。 数据库是现代计算机系统的一个重要组成部分,是人们有效地进行数据存储、共 享和处理的工具。microsoft 的 sql server 作为一个优秀的 dbms(database manage system) ,以其成熟和强有力的关系模型,成为许多数据库应用程序首选的数据存储 和检索的后台支持。同样 visual c+作为数据库开发的前端开发工具,以其对数据库 应用的全面支持,以及访问速度快、占用资源少等优势,而广泛应用于数据库应用程 序的开发中。 数据库在电网仿真系统占有很重要的作用, 实时数据库系统是仿真培训系统的核 13 心,系统的实时性、开放性和分布性等都取决于它。 2.3.2 访问数据库技术 ado visual c+提供了对数据库的多种访问技术,例如 odbc、mfcodbc、dao、 oledb、ado 等。其中 ado 是最新的数据库访问工具,它提供了访问 oledb 的 应用程序编程接口,集成了数据访问对象 dao (data access objects)和远程数据对象 rdo(remote data objects 两者的优点。 选择 ado 还因为它同时具备 dao 和 rdo 两者的优势。dao 可以用访问关系 数据库的方式访问那些存储在数据库以外的数据,例如工作表、文本文件等。但是 dao 源自桌面应用,在客户/服务器模式的数据库访问中,它的对象模型的层次结构 和包容关系给数据访问造成了麻烦。rdo 用于提供快速的客户/服务器模式的数据库 访问,它尽可能地减少了对客户端资源的使用,同时使用一个简化的对象模型,但它 不提供对非数据库数据的关系模式的访问。ado 集合了两者的优点,而且它简单的 对象模型更易于使用。除了易于使用、功能强、高速和低内存开销的特性外,ado 记录集支持无状态环境和对存储过程的简便访问, 使得 ado 成为访问 sql server 的 工具。 ado 对象模型没有很强调层次结构,所有的对象都可以独立地创建和使用,对 象模型如图 2.2 所示。 图 2.2 图 2.2 ado 对象模型 对象模型 ado连接(connection)对象可以使用该对象建立和管理应用程序和odbc数据库 之间的连接,connection 对象具有各种属性和方法,可以使用它们打开和关闭数据库 的连接,并且发出查询请求来更新信息。 ado 命令(command)对象用来在数据库源上准备、编译需要查询并且反复使用 一组不同的值来发出的查询, 最大限度地减少向现有查询重复发出修改请求所需的时 间。 ado 记录(recordset)对象根据 recordset 对象的指针类别属性设置,可以滚动、 更新记录和查询记录。 2.4 sql语言简介 12 sql 语言适用于绝大多数流行的关系型数据库管理系统,它的主要功能就是同 14 各种数据库建立联系,进行沟通。按照 ansi 的规定,sql 被作为关系型数据库管理 系统的标准语言。它是非过程化语言和所有关系数据库的公共语言。 sql 可用于所有用户的数据库活动模型,包括系统管理员、数据库管理员、应用 程序员、决策支持系统人员及许多其他类型的终端用户。sql 为许多任务提供了命 令,其中包括: 1)查询数据; 2)在表中建立、修改和删除记录; 3)建立、修改和删除数据对象; 4)控制对数据和数据对象的存取; 5)保证数据库一致性和完整性; 在本设计中常用的 sql 语句包括查询语 select 和插入语句 insert。 查询语句 select 是 sql 的核心,它的完整格式如下: selectpredicate*|table.*|table.field,table.field2,/指定选择的字段 as alias1 ,alias2, /设置字段别名 from tableexpression ,in externdatabase /确定记录源 where /定义查询条件 group by /分组查询 having /设定统计条件 order by /对记录排序 2.5 fortran编译器简介 13 一般来说,fortran 编译器所提供的工具,大概有下面这几类。 1)编译器(compiler) 用来把程序代码转换成目标文件(.obj)或执行文件(.exe)的工具,是编译 工具的主角。可以没有其他工具,但是不能没有这个工具。compiler 在编译时有很多 选项可以设置,要如何使用这些设置也是一门学科。不同的设置会编译出不同的机器 码。 最常见的选项格式有两种,release 格式和 debug 格式。release 格式所编译出来 的执行文件执行效率比较好,debug 格式所编译出来的文件执行效率比较差,不过 debug 格式编译的执行文件可以配合 debug 工具来进行调试。 visual fortran 虽然有 windows 下的使用接口,但是真正的 compiler 部分仍然是 使用命令列格式来操作, 可以打开一个命令列窗口, 键入fl32或df就可以compiler。 2)链接器(link) 用来把 compiler 所生成的目的文件 (*.obj) 链接程最后的可执行文件 (*.exe) 、 15 或是链接库 (*.lib、 *.dll) 。 有的编译器执行后会自动调用 link 来生成可执行文件, 所以有很多用户不会发现 link 的存在。 经过目的文件来生成可执行文件有几项好处: 可以把大程序拆解成许多小文件来编写; 可以把不同语言程序代码所生成的 obj 文件链接生成一个执行文件。 3)链接库(library) 编写 fortran 程序所用的库存函数, 都是事先写好放在*.lib 的链接库中。 用户可 以在 visual fortran 安装目录下的 df98lib 目录中找到很多*.lib 文件,库存函数都 是事先写好,放在这些文件中,link 会自动从这些标准链接库中找到所需要的函数。 4)说明文件(help) fortran 库存函数的详细用法,包括参数类型及返回值类型,很少有人能全部记 忆在脑海中,有 help 的帮忙可以很快速地找到这些信息。 5)调试工具(debug) 调试工具是很重要地一项功能, 它的重要性仅次于 compiler。 好的调试工具可以 让程序员快速找到程序代码地错误。调试格式下,可以对程序代码设置断点,程序执 行到断点会暂停执行。 这个时候程序员可以查看变量内容, 看看它们是否和预期相同, 还可以一行一行来执行程序,检查程序流程是否正确。熟悉硬件的用户还可以通过查 看 cpu 的缓存器或是内存中的数据来调试。 6)分析工具(profile) 用来分析程序代码中各个函数所花费的执行时间, 可以用来找出程序代码中执行 效率最差的部分,程序员可以针对这部分程序代码来作修正。 16 3 模型开发支撑系统 模型开发支撑系统包括源程序和任务文件的编辑、源程序变量的扫描与入库、源 程序和任务程序的编译与连接等工作。模型开发支撑系统示意图 3.1 14。数学模型采 用fortran语言设计。 图 3.1 模型开发支撑系统示意图 图 3.1 模型开发支撑系统示意图 3.1 源程序和任务程序 其是如果计算主要针对复数进行, 则 fortran 更有无可比拟的优势。 算程序,所以本系统目前 支持 用 fortran 语言编写,对 fortran 科学计 算源 ,必须创建一个任务文件, 方便 的编辑 众所周知, fortran 强于数值计算, 尤 fortran 是所有语言中唯一将复数定义为一种标准数据类型的 语言。当用 fortran 实现了一种大型的科学计算以后,却难以将这种计算转变为数据 输入简易、结果显示方便的 windows 可视化应用程序。 考虑到大多数用户一般采用 fortran 语言来编写数值计 的源程序类型为 fortran。所以采用 fortran 程序作为任务的源文件,用 fortran 语言集成开发环境作为源文件的编辑环境。 科学计算的源程序或仿真模型源程序,采 程序进行扫描、编译并生成可执行程序。用户通过编辑器,将自己开发的 fortran 语言程序输入计算机的过程称为 fortran 程序源文件的编辑。编辑生成的文件以文本 形式存储,扩展名为“*.f” ,也称为 fortran 的源程序。 在编译生成目标文件之后,创建生成一个可执行程序 用户了解任务的属性以及修改任务; 17 windows shell提供了丰富的资源, 这些资源不仅包括行命令方式, 还包括图形方 式的 解决某一个特定问题而用某一种语 言编 事本中, 严格 应用程序,利用windows api中的shellexecute()函数是比较方 便的 .exe: ,sw_shownormal ); 运行 3.1.2 任务文件的设计思路 功能调用。 例如资源管理、 计算机管理等包含的各种功能都是windows shell的组 成部分。所以,利用这些资源来设计系统可以达到良好的效果3。 3.1.1 源文件编辑环境的设计思路和实现 fortran 语言是过程化的高级语言。 程序是为了 写的指令序列。fortran 源程序必须按一定的格式书写。哪些内容应写在一行中 的哪一列(或哪几列上)都有严格的规定。fortran 源程序在主程序库中是以文本文 件存放的,也就是说以记事本的方式可以打开 fortran 语言格式的源程序。 使用普通的文本编辑器, 如 windows 的记事本, 即可进行编辑设计。 在记 地以 fortran 程序设计语言格式写的源程序, 可以在 fortran 编译环境下编译生成 目标文件(*.obj) 。 如果只是调用一个 选择。由于shellexecute函数使用方便,安全性高,所以采用它来调用记事本应 用程序。shellexecute()的功能是运行一个外部程序(或者是打开一个已注册的文件、 打开一个目录、打印一个文件等等) ,并对外部程序有一定的控制。特别是该函数的 参数比较简单易用的。将windows的办公工具(记事本)集成到自己的应用程序中, 利用windows api函数调用该应用程序。 下面的命令描述如何使用调用 notepad shellexecute(this-m_hwnd,open,notepad, 结果如图 3.2 所示,用户可以按照 fortran 编程语言格式来编辑源文件了。 图图 3.2 源文件的编辑环境 源文件的编辑环境 与实现 18 任务文件的设计思路:为了方便用户管理,创建一个任务文件管理窗口,用户可 以很 示项目列表的任务窗口,任 务窗 表 3.1 成员函数名及说明表 3.1 成员函数名及说明 函数名 方便的修改任务文件的属性,包含源文件名、子程序以及仿真时间等信息;利用 mfc 中的列表视图控件提供一个用来安排和显示项目列表的窗口,将任务文件名和 源文件名等详细信息显示给用户,以便用户管理任务。 实现过程:利用 mfc 中的列表视图控件创建一个显 口中包含 3 列信息:源文件名、调度子程序和仿真时间等。从添加新文件窗口中 得到要添加的源文件和程序名等,添加到任务窗口中,以便用户管理。编程实现过程 中成员函数说明见表 3.1: 说明 clistctrl:insertcolumn()在列表视控件中增加一个新项 clistctrl:setitemtext() 修改列表视项或子项的文本 clistctrl:deleteitem() 从控件中删除一项 clistbox:addstring() 在列表框中增加一个串 clistbox:gettext() 将一列表框拷贝到一缓冲区中 cedit:getline() 从编辑控件中检取一行文本 cedit:linelength() 检取编辑控件中某一行文本行的长度 在任务文以在加任务文件,件管理中,用户可任务管理窗口中删除源文件或者添 如图 3.3 和图 3.4 所示。 图图 3.3 管理任务 管理任务 19 图图 3.4 添加新任务 添加新任务 3.2 变量扫描和变量入库 任何一个仿真系统开发成功后象。 尤其对于培训用仿真系统, ,对计算机系统不具备专门的知识。对于被培训人 员而 对变量实现管理功能, 例如添加, 删除 序, visual c+.net提供了cstdiofile类对文本文件进行操作, 入。 一个变量; ar: 据库中的地址索引; : 享内存中的地址索引; , 都应有一个使用对 其使用对象一般都是运行技术人员 言,数学模型是完全不可见的,所看到的仅仅是计算机和仿真硬件设备,再一个 就是仿真支撑系统所提过的用户界面。在仿真支撑环境的支持下,将用户对仿真硬件 的操作信息传递给后台运行的数学模型, 并将数学模型运行后的结果及时地反映在计 算机显示器和硬件仪表上显示出来反馈给用户1。 在仿真系统中,存在着大量的变量,在模型程序运行前,需要将这些变量从源程 序中扫描出来, 然后添加到变量数据库中, 这样才能 ,修改和查询。 3.2.1 变量扫描的设计和实现 对文本文件的源程 而且提供了丰富的函数来整行读取写 变量数据库中的变量具有如下的数据结构: vartype: 变量类型; name: 变量名称,用来唯一标识 unit: 变量单位; remark:变量说明; indexv变量在变量数 indexvalue变量数据在共 isconst: 变量是否为常数标志; 20 hwarnenable:高限报警是否允许标志; le: 这个数据结构是整个系统的变量数据库中变量的数据结构,利用它可以描述一个 变量的基本特性,并实现变量的检索和将变量放入变量数据库中。 stdiofile 类的特 点给 存在一个相同的变量名,但是不是同一个变量。为了方便识别变量 的来 ; utine); +11,30); /得到程序名称 3=strtemp; 及变量初始值; (以整型变量为例) str1.find(integer); /变量定义 lwarnenab低限报警是否允许标志; hwarnvalue: 高限报警值; lwarnvalue: 低限报警值; 在对源程序进行扫描,变量按照一定格式放在变量批处理文件中,包括变量名、 变量的数据类型,变量的初始值。变量批处理文件的形成,并结合 c 生成映射文件和变量入库提供了方便。 目标源程序是在对源文件扫描后生成的一 个文本文件。 变量扫描的基本思路:由于在 fortran 源文件中存在大量的变量,不同的 subroutine 中可能 源, 在扫描过程中, 首先得到 subroutine 的名字, 然后继续在源文件中扫描变量, 并将扫描到的变量的名字和 subroutine 的名字组合到一起,作为这个变量的名字。在 整个扫描过程中,我们需要得到变量名、变量属性、变量初始值等一些信息。利用 c+中对文件的操作和 cstring 类,可以很方便的将我们所需要的字符串取出来。当 然,变量的数据类型包含多种,例如整型(integer) 、实型(real) 、布尔型(bool) 等等。数组作为一种特别的使用内存的方法,可以用来配置一大块内存空间。要特别 注意 fortran 语言中的二维数组或者多维数组元素是按列来设置数组的初始值的。 下面的代码实现了变量的扫描: 1)按行读取源文件; f1.readstring(str1); 2)获取 subroutine 名称 i=str1.find(subro if(i+1) cstring strtemp(str1.mid(i str 3)获取扫描变量名、变量类型 j= if(j+1) / 21 k=str1.find(); d(=); 1) p(str1.mid(m1,10); /读取变量初始值 m1=strtemp; um1.format(0);/无给定初始值,将其设置为0 按行将变量名、变量类型、变量初始值写入变量文件中 变量 ); ,); /变量定义 -m-4; id(m2-1,1); id(m2+1,1); ); =); +) if(!(k+1) m1=str1.fin if(m1+ cstring strtem strnu else strn cstring strtemp1(str1.mid(j+7,10); / else /处理数组 m=str1.find(: m2=str1.find( if(m2+1) k=m2 cstring s1(str1.m cstring s2(str1.m cstring strtemp1(str1.mid(m+2,k i=atoi(s1); j=atoi(s2); m3=str1.find( for(p=0;popen(select * from one, m_pconnection.getinterfaceptr(),adopendynami adcmdtext); catc 26 while(f1.readstring(str1) _variant_t recordsaffected; trsql2,strsql3,strsql4; 1); 1); lect * from one where name!=%s,strsql1); strsql4.format(insert into one(name,attribute,value) ql3); m_pconnecti text); /关闭连接 ; 由运行结果可以看出,扫描的变量添加到数据库中,运行结果如图 3.9 所示: cstring strsql; cstring strsql1,s strsql1=str1; f1.readstring(str strsql2=str1; f1.readstring(str strsql3=str1; strsql.format(se if(m_pconnection-execute(strsql.allocsysstring(), ; y ; %s,str3); 行 md.exe,str3,null,sw_shownormal); 命令行方式编译 fortran 源程序 2 api 的 shellexecute()函数,可以将其命令行参数包含在一个字符串中,实现对 源程序的编译。 在 windows 2 cmd /s /c | /k string /c /k 执行字符串指定的命令但保留 /s 在 /c 或 /k 后修改字符串处理 如果指定了 /c 或 /k,命令选项后的命令 串命令行格式“/k df” ,在“/k”之后的“df”就是在 dos 环境下运行的命令行。 为了给用户提供一个方便的操作,在执行编译与链接的过程中,将 shellexecute 的窗口显示格式参数 nshowcmd 设置为 sw_shownormal,这样就可以显示 源程序的编译之后的信息了。 1)源程序“编译”的程序清 void cbianyiview:onduowenjian() ofn_filemustexist| ofn_hideread sources files (*.f90), this); /选定要编译的源程序 if(filedlg.domodal()=idok ) cstring pathname = file cstring str1,str2,str3,str; str1=/k df ; str2=pathname str=/compile_onl str3=str1+str; str3+=str2; str3.format( /执行传给的字符串命令 :shellexecute(null,open,c 29 2)源程序“链接”的程序清单如下: filedlg (true, obj, *.obj, only, cstring pathname = filedlg.getpathname(); ; %s,str3); 行 d.exe,str3,null,sw_showhide); void cbianyiview:onlianjie() cfiledialog ofn_filemustexist| ofn_hideread sources files (*.obj), this); if(filedlg.domodal()idok ) cstring str1,str2,str3,str; str1=/k df ; str2=pathname str3+=str2; str= /link; str3+=str; str3.format( /执行传给的字符串命令 :shellexecute(null,open,cm 30 4 任务管理 一个任务的管理,包括运行、停止、暂停及继续等。使用任务管理,将对任务实 现如下操作:在“运行”状态时可以“暂停”或者“停止” 任务;在“停止”状态 下可以“运行”任务;在“暂停”状态下可以“继续”运行任务。从而达到管理任务 的目的。 在链接目标文件生成可执行文件的过程中,可能发现错误,可以根据编译与链接 过程中出现的错误对源文件进行修改,改正后再进行源程序的扫描、编译和链接,直 到正确为止,生成可执行文件(*.exe) 。 4.1 进程 15 一个进程,简单可以理解为一个正在执行的应用程序。一个或多个线程在这个进 程中运行。线程是操作系统分配时间片的基本单位,它可以执行进程中的任何一部分 代码,包括正在被其他线程执行的代码。windows提供了基于应用的多进程、多线程 支持16。 进程和线程是操作系统级的核心对象。 大多数现代操作系统都提供了对它们的支 持,windows 自然也不例外。 进程是正在执行的程序,程序是静态的代码和数据。同一个程序,可由多个进程 执行。在操作系统内部,进程是位于核心区的一块内存结构,其中包含了虚拟地址空 间、可执行代码、数据、对象句柄、环境变量、基本优先级、最小和最大工作集等有 关信息。 进程是操作系统分配资源的基本单位。典型的程序资源包括打开的文件、信号灯 和动态分配的内存。这些资源的标志都保存在进程的对象句柄表中。 操作系统创建了进程后,会创建一个线程执行进程中的代码。通常把这个线程称 为该进程的主线程。主线程在运行过程中,可能会创建其他线程。由主线程创建的线 程也可以创建其他的线程。这样就使得多个线程在同一个进程中执行。一般将主线程 以外的线程称为该进程的辅助线程。 4.1.1 线程 线程是程序中的一个程序执行路径,它在进程上下文中执行。进程中的每个线程 都独立运行。它们共享进程提供的各种资源:如代码、数据、虚拟地址空间等。每个 线程可以执行进程中的不同代码,进程中的同一段代码也可以由多个线程执行。可以 同时被多个线程访问的代码、数据等资源叫做临界资源。 除非采取特别的措施, 一个线程并不会了解到同时还有其他线程也在访问临界资 源。但是,可以通过信号灯或其他线程间通信的措施保证临界资源的访问安全。 虽然各个线程共享进程提供的公共资源,但他们也有自己的状态和私有资源。每 31 个线程都有一个私有堆栈,并维持一个指向该堆栈的堆栈指针。操作系统为进程的每 个线程在核心区分配一块内存,以记录线程的状态、私有堆栈的大小、起始地址、栈 顶指针等信息。操作系统还为每个线程提供了一块叫做线程局部存储的私有的存储 区,以容纳线程特定的数据。线程还有一组寄存器,用来指示当前正在访问的代码或 数据。这组寄存器的状态构成了线程上下文。 支持抢先多任务处理的操作系统,例如 windows 在需要处理器时间的线程之间 分割可用处理器时间,并依据线程的优先级轮流为每个线程分配处理器时间片。时间 片结束。当前执行的线程被挂起,调度发生,另一个线程继续运行。在切换线程时, 操作系统将保存抢占的线程上下文及重新被调度的线程的上下文。上下文恢复后,线 程就从上次被抢占的位置继续执行。 4.1.2 进程地址空间 每个进程都有线性的虚拟地址空间。在 32 位 intel 上,这个虚拟地址空间的大小 为也就是 4gb。在这个虚拟空间中, “存放”着进程本身的代码、数据以及操作 系统的核心部分。操作系统一般占据了虚拟空间固定部分
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025 年大学智能建造(智能建筑技术)试题及答案
- 景区消防安全试题及答案
- 村级防疫员考试模拟试题及答案
- 叉车卸车专项应急预案(3篇)
- 2025年上海市中考综合测试(物理、化学)试卷真题(含答案解析)
- 如何做好监控管理工作
- 细菌性食物中毒病人的护理课件
- 2025年电大婚姻家庭法学形成性考核册模拟试题及答案
- 初探绩效考核在人力资源管理中的作用-图文
- 天津中考默写填空真题及答案
- T-CHATA 023-2022 结核病定点医疗机构结核感染预防与控制规范
- 2025年中国素描本行业市场分析及投资价值评估前景预测报告
- 婴幼儿心肺复苏课件
- 中职创意美术课件
- 2025年时事政治热点题库道及参考答案
- GB/T 17219-2025生活饮用水输配水设备、防护材料及水处理材料卫生安全评价
- DB6110T 007-2021 天麻大田种植技术规程
- GB/T 46141-2025智慧城市基础设施智慧交通数字化支付应用指南
- 知道智慧树我们身边的知识产权满分测试答案
- 2025 年小升初成都市初一新生分班考试语文试卷(带答案解析)-(部编版)
- 化学信息学考核试卷
评论
0/150
提交评论