为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > 升级FORTRAN源代码——FORTRAN与VB混合编程

升级FORTRAN源代码——FORTRAN与VB混合编程

2010-12-30 3页 pdf 116KB 29阅读

用户头像

is_637250

暂无简介

举报
升级FORTRAN源代码——FORTRAN与VB混合编程 2(x】5年3月 中南水力发电 第1期 升级 FORTRAN源代码 .FORTRAN与 VB混合编 蒋椰林 (中南勘测设计研究院,湖南 长沙 410014) 程 摘 要 介绍了用 Microsoft FORTRAN PowerStation 4.0(FPS4.0)和 Microsoft Visual Basic 6.0(VB6.0)建 32位 Windows FORTRAN应用程序的方法和技巧。并编写演示程序加以说明,为 DOS环境下运行的 FORTRAN应用程 序升级至 WINDOWS环境下运行...
升级FORTRAN源代码——FORTRAN与VB混合编程
2(x】5年3月 中南水力发电 第1期 升级 FORTRAN源代码 .FORTRAN与 VB混合编 蒋椰林 (中南勘测研究院,湖南 长沙 410014) 程 摘 要 介绍了用 Microsoft FORTRAN PowerStation 4.0(FPS4.0)和 Microsoft Visual Basic 6.0(VB6.0)建 32位 Windows FORTRAN应用程序的方法和技巧。并编写演示程序加以说明,为 DOS环境下运行的 FORTRAN应用程 序升级至 WINDOWS环境下运行,提供一种方便快捷的方法。 关键词 动态链接库 声明 参数传递 l 引 言 FORTRAN是一种适用于数值计算的语言 ,在科 学计算和工程领域 ,目前该语言效率最高。在 DOS时代 ,许多水电专业程序用 FORTRAN语言编 写 ,这些源代码 由于经历 了时间的考验 ,因此是成 熟 、稳定的代码。如何继承前人的 FORTRAN程序资 源 ,扩充数值计算以外的数据成图等功能,并使得应 用程序同时具有 Windows环境图形用户界面的友好 性呢?面向对象的编程语言 VB作为基于 WindoWS 平台的开发工具 ,以其灵活简便 、易学易用的特点 , 成为广大水电工作者的首选编程工具。因此较好的 解决办法是 FORTRAN与 VB混合语言编程,这样就 能 充 分 发 挥 VB 强 大 的 图 形 界 面 开 发 功 能 和 FORTRAN的高效数值计算特点,设计出具有专业水 准的软件。 本文以笔者的编程实践 ,介绍通过动态链接库 的方法实现 FORTRAN与 VB混合编程。具体做法 是 :用 Microsofl FORTRAN PowerStation 4.0,将 FORTRAN 程 序 编 译 成 Windows的 动 态 链 接 库 (DLL), 以 供 Microsoft Visual Basic 6.0调 用 。 FORTRAN源代码主要采用带参数的子例子程序,以 这种方法创建 DLL文件 ,不用改动 FORTRAN源程 序 ,十分方便快捷。在 VB中完成程序界面设计及程 序功能整合。 2 用 FOR] AN PowerStation 4.0建 立动 态 链接 库 2.1编写 FORTRAN源文件 可用任何编辑器建立 FORTRAN源文件 ,文件由 函数和子程序构成 ,由于 FORTRAN只与VB交换数 据,因此,要去掉针对键盘和屏幕的交互式输入输出语 句。对于每一个 VB将直接调用的子程序,在说明语句 之前 ,要加一条 FO RTRAN PowerStation的编译元命令: ! MS$ATTRIBUTES DLLEXPORT ::mysub 其中: !MS$ATrRIBUTES 编译元命令 ,对指定的变 量声明 Microsoft F0RTRAN的扩展属性 ,用于简化 FORTRAN与 VB之间的过程与数据传递 DIJ,EXPORT Microsofi FORTRAN的扩展属性 ,用此属性声明过 程 ,意味着该过程会出现在动态链接库的接 口函数 中 mysub要调用的 FORTRAN子程序。 2.2建立动态链接库的项目文件 在 Microsofl FORTRAN PowerStation 4.0开发 环境 中 ,选 择菜单 File—New⋯ ;在 选择 Project Workspace后 ,单击 OK;在弹出的对话框中,选择 Dynamic--~Link Library,并指定项 目名和所在位置, 然后单击 Create,就建立了动态链接库的项 目文件。 2.3创建动态链接库 通过 Insert--~Files in Project⋯将 FORTRAN源 文件加入项 目中。 通过 Build---~build .dll将项 目编译连接为动态 链接库,其中 .dll代表动态链接库。并将 .dll文件 拷贝到 C:\WINDOWSkSYSTEM子目录下。 3 在 Visual Basic 中使 用动 态链接库 由于 DLL过程存在于 Visual Basic应用程序之 维普资讯 http://www.cqvip.com 56 中南水力发电 第 l期 外的文件 中,故必须用 Declare语句声 明外部过程 后,方可把它当作 Visual Basic过程来使用。 3.1声明动态链接库 在代码窗口的“声明”部分增加一个 Declare语 句。完整的语法如下: Public Delcare Sub subname Lib “libname’’ Alias“aliasname”(arglist、 Delcare语句的各组成部分说明如下: Public:用于声明在所有模块中对所有其他过程 均合法的过程; Sub subname:指明该过程无返回值 ; Lib“libname”:指明 DLL文件及其路径; Alias“aliasname”:指明被调用过程在 DLL中的 别名,这一属性是必须的; 别名的命名有一定的规律可循 ,即如果子程序 名为 subname,则别名为 一subname@n ,其中 n为一 整数,n等于子程序的参数个数乘以 4。特别的,若子 程序的参数个数为 0,那么 n也为 0。 3.2使用动态链接库 在声 明 了过 程之 后 ,调 用 它 的方 式 与标 准 Visual Basic过程相同:Call subname(arglist) 4 参数传递 要使 VB正确调用 FortranDLL,必须解决子程序 参数传递问题。由于不同的语言对于不同的数据类 型 的处理方式不 同,故表 1列出 了 FORTRAN与 Visual Basic对等的数据类型。 表 1 FORTRAN与 Visual Basic对等的数据类型 FORTRAN Visual Basic Integer 2 Integer Integer 2 Long Real*4 Single Real*8 Double Character(n) String n 如果所传递的参数是数组类型,按照 FORTRAN PowerStation的,则在 VB中调用 FORTRAN子 程序时,应在相应位置放上该数组的第一个元素,而 不是通常的数组名(参见示例 5.1)。 对于字符串的传递 ,考虑到实际应用中,VB 与 FORTRAN间传递的字符串主要是数据文件名,解决 的方法是用“辅助数组 ”实现字符 串的传递(参见示 例 5.1)思路如下: ●在 VB中,将字符串转换为大写,用 ASC函数 将字符 串中的每个字母转换为 ASCII码值 ,从而得 到一个对应于字符串的 ASCII码值数组。 ●将数组传到 FORTRAN子程序; ●在 FORTRAN中,用 CHAR函数将 ASCII码 值数组还原为字符串。 5 应用举例 5.1数组传递示例 !FORTRAN子程序 SUBROUTINE mysub 1(n,a) !MS@ATTRIBUTES DLLEXPORT::mysubl INTEGER n,i REAL(4)a(3) DO i=l,3 a(i)=n ENDDO RETURN END SIIBR0IITINE !VB中作如下声明(模块级) Public Delcare Sub mysubl Lib “EXAM1.dll” Alias “ 一 mysubl@8”(ByRef X AS L0ng, ByRef Y AS Single) !VB中调用 FORTRAN子程序 Dim a As L0ng Dim b(1 To 3)As Single a=10 CALL mysub1(a,b(1)) 5.2字符串传递示例 本例在 VB主程序 中选择一 个原始数据文件 , 将该文件传给 FORTRAN子程序进行计算。 !FORTRAN子程序 SUBROUTINE mysub2(a,n) !MS@ATI’RIBUTES DLLEXPORT::mysub2 IMPLICT REAI 8(a—h,O--Z) CHARACTER(n)cstr DIMENSION k(n) DO 10 i=l,n cstr(i:i)=char(k(i)) 10 continue RETURN END SIJBROI ITINE 维普资讯 http://www.cqvip.com 2005年3月 中南 水 力发 电 第l期 一 种引起机组振动与噪音的原因及其影响 何今盛 (永州市涔天河水利水电管理局,湖南 永州 425500) 摘 要 因在消缺改造中定子端部接线失误,造成发电机磁路不对称,引起机组振动和噪音 ,并产生负序电流,对 发电机造成不 良影响。 关键词 接线失误 振动和噪音 不良影响 为消除发电机的缺限,提高机组的健康水平 ,在 成功地进行了某水电站 2号发电机消缺改造的基础 上,2003年 8月我们又与原承接单位 (xx电机有限 责任公司,以下简称公司)签订了与 2号发电机技术 要求相同的 3号发电机的消缺改造。3号发电 机改造后的主要数据如下: 额定容量:l0.56MVA; 额定电压 :10500V; 额定电流:580.4A; 额定转速 :187.5r/min; 额定频率:50Hz; 额定励磁电流 :440A 额定励磁电压 :178.8V; 相数 :3; 接 法:2Y。 l 振动、噪音的基本情况及原因 公司于 2003年 9月 26日完成发电机定子的消 缺改造工作。电站于 1O月 20日完成发电机组其它 部件_的装复 、调试 ,当 日开机试运行 ,机组空载状 态下无异常振动和噪音,各部位的摆度 、振动均在 规程允许范围内。空运 3-5min后加励磁电流升压, 当加上励磁 电流发电机即产生振动和噪音。人站在 发电机盖板上感到振动十分明显 ,站在距发电机定 子外壳约 3m远的中控室门边 ,也感到脚板发麻 , 噪音沉闷;在+Y、X和 Y、+X方位的振动和噪音 业 业 业 !VB中作如下声明(模块级) f$=Right(f$,al—i) Public Delcare Sub mysub2 Lib “EXAM2.dll” Alias next i% “ _ mysub2@8”(ByRef X AS long, ByRef Y AS CALL mysub2(a(1),a1) long) ··· !VB中调用 FORTRAN子程序 Private Sub Command 1 — Click0 Dim a0 As I ng Dim al As lo ng CommonDialog1.ShowOpen f$=UCase(CommonDialog1.filename) al=Len(Trim(f$)) REDIM a(1 TO a1)As long For i%=l TO al a(i)=Asc(Left(f$,1)) 6 结束语 本文 探讨 了 Windows环 境 下 Visual Basic和 FORTRAN PowerStation4.0通过 DLL实现混合语言 编程的方法。编程实践证明,只要掌握了两种语言混 合编程中过程名 、参数的传递方法 ,就可以充分利用 VB和 FPS4.O各 自的优势 ,编制出在 WIND0WS操 作系统下运行的用户界面友好的 FORTRAN应用程 序。 收稿 ¨期 :2004-03-29 维普资讯 http://www.cqvip.com
/
本文档为【升级FORTRAN源代码——FORTRAN与VB混合编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索