淺談 TWAIN 標(biāo)準(zhǔn) 文 倪志權(quán) 如果你是一個(gè)掃描儀用戶,你可能會(huì)為說(shuō)明書(shū)中出現(xiàn)的“TWAIN標(biāo)準(zhǔn)”字樣而困惑,,什么是TWAIN呢,?本文希望通過(guò)對(duì)TWAIN標(biāo)準(zhǔn)的一些介紹,起到拋磚引玉的作用,,對(duì)大家使用掃描儀有所幫助,。
一、什么是TWAIN TWAIN組織成立于1990年,,是由Aldus,、Caere、Kodak,、HP,、Logitech、Adobe,、Howtek和Software Architechs八家國(guó)際知名公司發(fā)起成立的,。TWAIN是專(zhuān)門(mén)研究并實(shí)施圖像掃描儀軟件接口的組織,由它推出的掃描儀接口標(biāo)準(zhǔn),,就稱(chēng)為T(mén)WAIN標(biāo)準(zhǔn)?,F(xiàn)在市場(chǎng)上絕大部分出售的掃描儀都符合TWAIN標(biāo)準(zhǔn),目前的TWAIN標(biāo)準(zhǔn)版本號(hào)為1.8,,其PDF格式文本可從TWAIN網(wǎng)站下載,。
二、為什么要使用TWAIN標(biāo)準(zhǔn) TWAIN標(biāo)準(zhǔn)的產(chǎn)生和發(fā)展是實(shí)際應(yīng)用的需要,,它為掃描設(shè)備和應(yīng)用程序之間提供了一個(gè)標(biāo)準(zhǔn)化的接口,。通過(guò)該接口,,掃描儀能很方便地被更多的程序所使用,而程序編制人員在編程過(guò)程中也無(wú)須考慮具體的掃描儀型號(hào),。 采用TWAIN標(biāo)準(zhǔn),,對(duì)編程人員來(lái)說(shuō),可以編制出直接使用掃描儀的軟件,。使用戶在使用軟件時(shí),,無(wú)須離開(kāi)界面去使用特定的掃描軟件;也無(wú)須為軟件指定特定的掃描儀型號(hào)或?yàn)椴煌膾呙鑳x編制不同的程序,;編程人員還可在程序中直接設(shè)定掃描儀的相關(guān)參數(shù),。 采用TWAIN標(biāo)準(zhǔn),對(duì)設(shè)備制造商來(lái)說(shuō),,能大大增加與產(chǎn)品配套的軟件數(shù)量,,為產(chǎn)品的升級(jí)提供方便。而對(duì)掃描儀用戶來(lái)說(shuō),,這就使復(fù)雜的操作得到了簡(jiǎn)化,。因此用戶也不必為了要掃描圖形,而離開(kāi)正在使用的軟件,。
三,、TWAIN的基本原理 為實(shí)現(xiàn)應(yīng)用軟件和圖像獲得設(shè)備(即掃描儀等)之間的通訊,TWAIN定義了一套標(biāo)準(zhǔn)軟件協(xié)議和程序接口(API),,主要包括三個(gè)部分:即應(yīng)用軟件(The application software),、源管理軟件(The Source Manager software)和源軟件(The Source software)。應(yīng)用軟件中必須含有使用TWAIN的程序段,;源軟件直接控制圖像獲得設(shè)備,,它一般是由設(shè)備制造商提供的,現(xiàn)在市場(chǎng)上出售的符合TWAIN標(biāo)準(zhǔn)的設(shè)備基本都配有該類(lèi)軟件,;源管理軟件起到管理應(yīng)用軟件,,并與源軟件間聯(lián)系的作用,它由TWAIN發(fā)展工具(TWAIN Developer Toolkit)提供,,用戶可由TWAIN的主頁(yè)下載,。它們之間的相互聯(lián)系見(jiàn)圖1。 從用戶界面上簡(jiǎn)單直觀地說(shuō),,應(yīng)用軟件必須含有兩個(gè)菜單項(xiàng),,即“選擇設(shè)備”項(xiàng)(Select Source)和“獲得掃描”(Acquire)項(xiàng);源管理軟件則提供了當(dāng)用戶選擇“選擇設(shè)備”菜單時(shí),,出現(xiàn)的“選擇設(shè)備(Select Source)”對(duì)話框等,;源軟件提供了我們使用掃描儀時(shí)所見(jiàn)到的掃描儀用戶界面。 三部分之間的通訊是通過(guò)兩個(gè)入口函數(shù):DSM_Entry()和DS_Entry()來(lái)實(shí)現(xiàn)的,,見(jiàn)圖2。應(yīng)用(Application)的最終目標(biāo)是從源(Source)獲得數(shù)據(jù),但應(yīng)用不能直接與源聯(lián)系,,所有的數(shù)據(jù)獲得,、屬性信息、錯(cuò)誤信息等都必須通過(guò)源管理器(Source Manager)來(lái)傳遞,。TWAIN定義了大約140種操作,,應(yīng)用程序必須通過(guò)DSM_Entry()函數(shù)將這些操作請(qǐng)求傳遞給源管理器,源管理器收到這些請(qǐng)求后,,如發(fā)現(xiàn)這些操作的目標(biāo)是源,,則調(diào)用DS_Entry()函數(shù)將請(qǐng)求發(fā)給源。
DSM_Entry()的函數(shù)原型如下: TW_UINT16 FAR PASCAL DSM_Entry (pTW_IDENTITY pOrigin,,//source of message pTW_IDENTITY pDest,,//destination of message TW_UINT32 DG,//data group ID:DG_xxx TW_UINT16 DAT,,//Data argument type:DAT_xxx TW_UINT16 MSG,,//message ID:MSG_xxx TW_MEMREF pData,//Pointer to data),;
注:其類(lèi)型說(shuō)明在TWAIN.H文件中 其中data group ID(DG_xxx),、Data argument type(DAT_xxx)、Message ID(MSG_xxx)的不同組合唯一標(biāo)志出DSM_Entry()的一種操作,。舉例如下:打開(kāi)源管理器的操作組合是:DG_CONTROL/DAT_PARENT/MSG_OPENDSM,;從源獲得數(shù)據(jù)到一個(gè)文件的操作組合是:DG_IMAGE/DAT_IMAGEFILEXFER/MSG_GET等,所有的操作組合說(shuō)明都可以從TWAIN標(biāo)準(zhǔn)中找到,。 應(yīng)用程序通過(guò)源管理器從源獲得數(shù)據(jù)時(shí),,有一定的先后順序。為了確保這一順序的正常執(zhí)行,,TWAIN定義了7種狀態(tài)(state),,這7種狀態(tài)的先后和相互間的轉(zhuǎn)換見(jiàn)圖3。需要注意的是,,狀態(tài)1,、2和3只能由源管理器所占有,源管理器永遠(yuǎn)不會(huì)出現(xiàn)在一個(gè)大于3的狀態(tài)中,;狀態(tài)4,、5、6和7只能由源占用,,一個(gè)源如果是打開(kāi)的,,則不會(huì)有小于4的狀態(tài),如果是關(guān)閉的則無(wú)狀態(tài),。編寫(xiě)能驅(qū)動(dòng)掃描儀的程序,,實(shí)質(zhì)就是編寫(xiě)能完成這7種狀態(tài)間相互轉(zhuǎn)換的使用DSM_Entry()函數(shù)的調(diào)用代碼段,。 以上簡(jiǎn)單地介紹了TWAIN的基本原理,如真正進(jìn)行編程,,還必須認(rèn)真閱讀TWAIN 1.8標(biāo)準(zhǔn)的文本,,該文本有詳細(xì)的說(shuō)明和示例。希望本文能對(duì)你閱讀該文本有所幫助,。關(guān)于TWAIN的最新發(fā)展和詳細(xì)情況可以訪問(wèn)該組織的網(wǎng)站 |
|
來(lái)自: ctbtcol > 《待分類(lèi)1》