欢迎来到天天文库
浏览记录
ID:34510118
大小:308.10 KB
页数:4页
时间:2019-03-07
《用vb和fortran混合编程开发科学计算软件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、万方数据第23卷计算机应用V01.232003年6月C伽puterAppljcati彻sJune,2003一———————————————————————————————————————————————————————————————————————————————一文章编号:100l一9081(2003)06Z一0012一02用VB和Fortran混合编程开发科学计算软件张学胜(北京工业大学机电学院,北京100022)摘要:用VB和Fonran混合编程技术开发出的科学计算软件,既能解决复杂的大型计算问题,又具有良好的人机交互界面。对
2、Windows环境下运行DOS外壳程序遇到的问题提出了新的解决方案,并将计算结果在VB中显示出来。关键词:混合编程;外壳程序;动态链接库中图分类号:TP314文献标识码:A1实现F0nmn外壳程序的同步运行用FonnaJl和VB两种语言混合开发科学计算软件,一般有两种方法:一是用VB设计界面和控制程序,将Fortr蛐程序编译为动态链接库,并由VB程序调用它。数据交换由参数传递实现,对于交换海量数据是不经济的、且处理困难。二是用VB设计界面,将Fonm程序编译成可执行程序,在适当时由VB程序启动它。计算结束后,结果显示在VB界面上。整个
3、运行过程中,Fort随n程序都在后台运行。VB和FoItE蛳间的所有数据都通过磁盘文件进行交换,交换海量数据非常经济,效率也非常高⋯。利用VB中的sheu函数来启动Fortran应用程序,存在两个问题:一是sheu函数以异步方式执行,该方式不能等待Fortran程序结束丽将继续执行后续VB程序,使VB得不到Fortmn程序运行结果而出错。二是VB运行于聊ND0ws平台上,而Fortmn应用程序基于DOs平台。在WIND0ws平台上运行DOs应用程序时,会退出唧ND0ws而进人D0s界面,从而出现“黑屏”现象。因此必须解决这些问题¨o。
4、2用API函数对外壳程序同步调用win32API提供了一些有关进程的操作函数㈨,可以解决上述外壳程序的异步运行问题。用0penProce8s函数建立外壳进程句柄,然后通过waitForsindeObject函数等待外壳进程终止,外壳进程终止后用closeHandle函数关闭打开的进程对象。这种方法比文献[1]、文献[2]所介绍的方法更简单、更方便、程序移植性更好。这些API函数在VB中声明如下:PrivateDeclareFunctionwaitForSindeobjectLib”kemel32”(ByValhH肌dleAskng,B
5、yValdwMillisecond8Askn曲Asb“gPrivateDeclareFunctionC108eHandle“b”kemel32”(ByValhObjectA8Lan曲A8kmgPdvateDeclareFunction0penProcess¨b”kemel32’’(ByValdwDesiredAcce88Asl旬ng,ByValblnheritHandleA8I旬ng,ByValdwProce8sIdA8bng)AsLongPdvateConstINFINl7rE=一1&PrivateConstSYNCHRONIZE=
6、&H100000当sheⅡ(pathn咖e,[windowstyle])函数中windowstyle命名参数取vbHide时,隐藏了外壳应用程序的窗口,从而避免了“黑屏”现象。在waitF0rSindeObject函数中,dwMiⅡiseconds参数取一1,表示可以进行无限长时间的等待,一直到外壳应用程序结束,再执行后续VB程序,从而解决了外壳程序的异步运行问题。启动并等待外壳程序终止的实现代码如下:DimiT鹊kAsLong,retA8Long,pHandleA8Lo“gi7ra8k=Shell(FilePath&”、80rt.e
7、xe”,vbHide)pHandIe=OpenP■ocess(SYNCHRONIZE,Fal8e,iTask)收稿日期:2002一09一08作者简介:张学胜(1972一)。男,河南南阳人,博士研究生,主要研究方向:结构优化与智能控制、cAD、计算机图形学、人机工程学分区。一般FreeBSD的第二分片和sol撕s的S1分片是交换分片。修改Linux的/etc/rc.d里的配置文件,在swapon前加:mksw8p/dev/hda?鹕ol鲥s的s1分片mk8w叩/dev/hda?#FreeBSD的交换分片修改Linux的/etc/fsta
8、b,增加或修改:/dev/hda?nonesw印swO/dev/hda?none8w印8w0O至此系统安装和优化基本完成。5结语无论是x86机器还是其它机器,抑或是安装其它的多个系统,原理都是一样的。在MBR中安装的可以
此文档下载收益归作者所有