資源描述:
《用vb和fortran混合編程開發(fā)科學計算軟件》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、萬方數(shù)據(jù)第23卷計算機應用V01.232003年6月C伽puterAppljcati徹sJune,2003一———————————————————————————————————————————————————————————————————————————————一文章編號:100l一9081(2003)06Z一0012一02用VB和Fortran混合編程開發(fā)科學計算軟件張學勝(北京工業(yè)大學機電學院,北京100022)摘要:用VB和Fonran混合編程技術(shù)開發(fā)出的科學計算軟件,既能解決復雜的大型計算問題,又具有良好的人機交互界面。對
2、Windows環(huán)境下運行DOS外殼程序遇到的問題提出了新的解決方案,并將計算結(jié)果在VB中顯示出來。關鍵詞:混合編程;外殼程序;動態(tài)鏈接庫中圖分類號:TP314文獻標識碼:A1實現(xiàn)F0nmn外殼程序的同步運行用FonnaJl和VB兩種語言混合開發(fā)科學計算軟件,一般有兩種方法:一是用VB設計界面和控制程序,將Fortr蛐程序編譯為動態(tài)鏈接庫,并由VB程序調(diào)用它。數(shù)據(jù)交換由參數(shù)傳遞實現(xiàn),對于交換海量數(shù)據(jù)是不經(jīng)濟的、且處理困難。二是用VB設計界面,將Fonm程序編譯成可執(zhí)行程序,在適當時由VB程序啟動它。計算結(jié)束后,結(jié)果顯示在VB界面上。整個
3、運行過程中,F(xiàn)ort隨n程序都在后臺運行。VB和FoItE螄間的所有數(shù)據(jù)都通過磁盤文件進行交換,交換海量數(shù)據(jù)非常經(jīng)濟,效率也非常高?。利用VB中的sheu函數(shù)來啟動Fortran應用程序,存在兩個問題:一是sheu函數(shù)以異步方式執(zhí)行,該方式不能等待Fortran程序結(jié)束麗將繼續(xù)執(zhí)行后續(xù)VB程序,使VB得不到Fortmn程序運行結(jié)果而出錯。二是VB運行于聊ND0ws平臺上,而Fortmn應用程序基于DOs平臺。在WIND0ws平臺上運行DOs應用程序時,會退出唧ND0ws而進人D0s界面,從而出現(xiàn)“黑屏”現(xiàn)象。因此必須解決這些問題¨o。
4、2用API函數(shù)對外殼程序同步調(diào)用win32API提供了一些有關進程的操作函數(shù)㈨,可以解決上述外殼程序的異步運行問題。用0penProce8s函數(shù)建立外殼進程句柄,然后通過waitForsindeObject函數(shù)等待外殼進程終止,外殼進程終止后用closeHandle函數(shù)關閉打開的進程對象。這種方法比文獻[1]、文獻[2]所介紹的方法更簡單、更方便、程序移植性更好。這些API函數(shù)在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])函數(shù)中windowstyle命名參數(shù)取vbHide時,隱藏了外殼應用程序的窗口,從而避免了“黑屏”現(xiàn)象。在waitF0rSindeObject函數(shù)中,dwMiⅡiseconds參數(shù)取一1,表示可以進行無限長時間的等待,一直到外殼應用程序結(jié)束,再執(zhí)行后續(xù)VB程序,從而解決了外殼程序的異步運行問題。啟動并等待外殼程序終止的實現(xiàn)代碼如下:DimiT鵲kAsLong,retA8Long,pHandleA8Lo“gi7ra8k=Shell(FilePath&”、80rt.e
7、xe”,vbHide)pHandIe=OpenP■ocess(SYNCHRONIZE,F(xiàn)al8e,iTask)收稿日期:2002一09一08作者簡介:張學勝(1972一)。男,河南南陽人,博士研究生,主要研究方向:結(jié)構(gòu)優(yōu)化與智能控制、cAD、計算機圖形學、人機工程學分區(qū)。一般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至此系統(tǒng)安裝和優(yōu)化基本完成。5結(jié)語無論是x86機器還是其它機器,抑或是安裝其它的多個系統(tǒng),原理都是一樣的。在MBR中安裝的可以