資源描述:
《并行接口程序設(shè)計(jì)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、第5章并行接口程序設(shè)計(jì)123第5章并行接口程序設(shè)計(jì)本章介紹在Windows2000/XP下的并行接口的程序設(shè)計(jì)方法,分析一下目前進(jìn)行并行接口編程的方法,可以歸納為幾種:?DLL直接I/O方式:應(yīng)用程序通過一個(gè)可以進(jìn)行端口I/O訪問的DLL接口軟件實(shí)現(xiàn)對并行接口的訪問,即通過調(diào)用第三方DLL接口軟件中的I/O端口讀寫函數(shù)實(shí)現(xiàn)對并行口的寄存器的讀寫。這樣的軟件很多,像WinIo、Inpout32、TVicPort等;?ActiveX控件直接I/O方式:通過一個(gè)提供ActiveX控件實(shí)現(xiàn)對端口的直接I/O訪問,一般控件的方式采用VB編程比較簡單。這樣的軟件包括Inpout32、TV
2、icPort等;?并行接口專用接口軟件:使用這一類軟件對并行接口編程要比上2種方法簡單,有些軟件支持中斷。這樣的軟件如TVicLPT。?自己編寫驅(qū)動程序:直接在VC++環(huán)境下通過Windows2000DDK或WindowsXPDDK編寫驅(qū)動程序,這是一種最靈活的方法,但編程的難度比較大。5.1實(shí)現(xiàn)直接I/O方式的軟件并行接口的編程在不同的操作系統(tǒng)下采取不同的方法,在DOS和Windows95之前的操作系統(tǒng)下,可以直接對端口進(jìn)行讀寫,根據(jù)并行接口的不同模式的寄存器進(jìn)行讀寫操作就可以完成各種模式的接口編程。在目前的Windows2000/XP操作系統(tǒng)下,不能直接對端口寄存器進(jìn)行訪
3、問,這是由于Windows2000/XP對系統(tǒng)底層操作采取了屏蔽的策略,對用戶而言,系統(tǒng)變得更為安全,但這卻給接口和接口軟件開發(fā)人員帶來了不小的困難,因?yàn)橹灰獞?yīng)用程序中涉及到底層的操作,開發(fā)人員就不得不深入到Windows的內(nèi)核去編寫屬于系統(tǒng)級的設(shè)備驅(qū)動程序。對并行口的讀寫操作就是如此,由于Windows對系統(tǒng)的保護(hù),應(yīng)用程序不允許直接I/O操作。在Windows2000/XP操作系統(tǒng)下,正規(guī)的接口程序的編程方法是采取驅(qū)動程序的開發(fā)方法。由于驅(qū)動程序需要與操作系統(tǒng)最底層進(jìn)行交互,因此不同的操作系統(tǒng)的底層結(jié)構(gòu)對應(yīng)不同的設(shè)備驅(qū)動程序模型。Windows2000/XP與Window
4、s9x的內(nèi)部結(jié)構(gòu)不同,這兩類操作系統(tǒng)的設(shè)備驅(qū)動程序是不兼容的,為了解決不同的操作系統(tǒng)的結(jié)構(gòu)的差異帶來的設(shè)備驅(qū)動程序的不兼容的問題,微軟公司在1997年提出了Windows操作系統(tǒng)的驅(qū)動程序模型,即WDM(WindowsDriverModel)。WDM設(shè)備驅(qū)動程序的開發(fā)是在VC++下通過DDK(DeviceDevelopmentKit:設(shè)備驅(qū)動程序開發(fā)包)才能完成的,這種方法的編程是比較復(fù)雜的,需要了解操作系統(tǒng)的內(nèi)部結(jié)構(gòu),并需要熟練的VC++開發(fā)經(jīng)驗(yàn)。如果不采用WDM的方法,一個(gè)簡單實(shí)用的方法是使用間接的I/O方式,就是在應(yīng)用程序調(diào)用一個(gè)第三方提供的直接I/O接口程序,由這個(gè)間
5、接的I/O程序模塊實(shí)現(xiàn)對端口的讀寫。下面介紹幾種這樣的軟件產(chǎn)品。5.1.1Inpout32第5章并行接口程序設(shè)計(jì)123Inpout32:由LOGIX4U提供的免費(fèi)軟件,可以在http://www.logix4u.net/網(wǎng)站下載。Inpout32提供了以DLL文件和AxtiveX的OCX文件兩形式提供了直接訪問I/O端口的函數(shù),在文件中只封裝了2個(gè)函數(shù),Inp32()和Out32()。支持從Windows95/98/Me到WindowsNT/2000/XP的多種操作系統(tǒng)。Inpout32只提供對I/O端口的訪問,不針對具體的接口類型,原則上可以完成所有面向寄存器訪問編程的應(yīng)用
6、程序。但I(xiàn)npout32沒有提供中斷的支持,所以只能完成以查詢控制方式的程序,不能實(shí)現(xiàn)中斷控制方式的程序設(shè)計(jì)。這可能會影響接口的傳輸速度,同時(shí)也使得軟件的CPU占用率很高。很可貴的是,在下載的軟件包中提供了DLL和OCX文件的VC++源程序代碼,這對于開發(fā)接口相關(guān)的DLL程序和OCX控件程序很有參考價(jià)值。5.1.1TVicPortEnTech提供了用于接口編程的多個(gè)軟件產(chǎn)品,包括TVicTW32、TVicLPT和TVicPort等,這些軟件可以在EnTech的網(wǎng)站http://www.entechtaiwan.com/dev/index.shtm上獲得,其中TVicPort是
7、一個(gè)免費(fèi)的軟件,是TVicHW32的簡化版。TVicPort是需要安裝的,默認(rèn)的目錄是C:TVicPortPersonal,在該目錄下有Docs和Samples兩個(gè)目錄,分別是說明文件和程序例子源文件。核心模塊被安裝到了系統(tǒng)目錄。1.TVicPort功能說明TVicPort的功能包括:直接I/O訪問;通過一個(gè)指針將物理存儲器影射用戶程序的存儲空間;增強(qiáng)對并行接口的支持,可以直接控制和檢測并行端口的信號線;提供獲得IDE硬盤的制造商信息的函數(shù),如硬盤序列號,可以實(shí)現(xiàn)軟件的硬盤邦定;支持WindowsXP