Twain翻譯第一章二章_第1頁
Twain翻譯第一章二章_第2頁
Twain翻譯第一章二章_第3頁
Twain翻譯第一章二章_第4頁
Twain翻譯第一章二章_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第一章需要的一致性通過引入掃描儀、數(shù)碼相機(jī)、和其他圖像采集設(shè)備,userseagerly發(fā)現(xiàn)的值將圖像納入他們的文件和其他工作。然而,支持這個(gè)柵格數(shù)據(jù)的顯示和操作放在一個(gè)高成本onapplication開發(fā)者。他們需要?jiǎng)?chuàng)建用戶界面和構(gòu)建在設(shè)備控制設(shè)備為各種各樣的形象。一旦他們的應(yīng)用程序準(zhǔn)備支持給定的設(shè)備,他們面對(duì)令人沮喪的現(xiàn)實(shí),設(shè)備繼續(xù)beupgraded新的功能和特性。應(yīng)用程序開發(fā)人員發(fā)現(xiàn)themselvescontinually修改他們的產(chǎn)品保持電流。開發(fā)人員的圖像采集設(shè)備和軟件應(yīng)用程序承認(rèn)需要一個(gè)標(biāo)準(zhǔn)的圖像設(shè)備和應(yīng)用程序之間的通信。一個(gè)標(biāo)準(zhǔn)將有利于兩組的用戶以及他們的產(chǎn)品。將允許設(shè)備供應(yīng)

2、商的產(chǎn)品被更多的應(yīng)用程序和應(yīng)用程序供應(yīng)商couldaccess訪問數(shù)據(jù)從沒有關(guān)心哪種類型的設(shè)備,這些設(shè)備或特定設(shè)備,它提供.TWAIN開發(fā),因?yàn)檫@需要一致性和簡(jiǎn)化。吐溫的元素吐溫定義了一個(gè)標(biāo)準(zhǔn)的軟件協(xié)議和API(應(yīng)用程序編程接口)forcommunication軟件應(yīng)用程序和圖像采集設(shè)備之間數(shù)據(jù)的來源。吐溫的三要素是:應(yīng)用軟件,應(yīng)用程序必須使用吐溫被修改。源代碼管理軟件,該軟件管理應(yīng)用和源之間的交互。這段代碼提供的吐溫開發(fā)者Toolkitand應(yīng)該與每個(gè)吐溫應(yīng)用程序和源代碼免費(fèi)運(yùn)送。源軟件,這個(gè)軟件控制圖像采集設(shè)備,writtenby設(shè)備開發(fā)人員遵守吐溫規(guī)范。傳統(tǒng)devicedrivers現(xiàn)在

3、包含在源代碼軟件,不需要byapplications運(yùn)來。使用吐溫的好處Benefits of Using TWAIN為應(yīng)用程序開發(fā)人員允許您應(yīng)用程序的用戶提供一個(gè)簡(jiǎn)單的方法將圖像從任何兼容的光柵設(shè)備無需離開您的應(yīng)用程序。節(jié)省時(shí)間和金錢。如果你目前為掃描儀提供底層設(shè)備驅(qū)動(dòng)程序,等等,你不再需要編寫、支持或船這些驅(qū)動(dòng)程序。TWAIN-compliant形象采集設(shè)備將提供源碼軟件模塊,消除對(duì)你的需要?jiǎng)?chuàng)建和船舶設(shè)備驅(qū)動(dòng)程序。允許應(yīng)用程序訪問數(shù)據(jù)從任何TWAIN-compliant外圍簡(jiǎn)單形象通過修改應(yīng)用程序代碼一旦使用吐溫高層應(yīng)用程序編程接口。不需要定制的產(chǎn)品。吐溫形象外圍設(shè)備圖像、應(yīng)用程序、數(shù)據(jù)源

4、、經(jīng)理、傳真、應(yīng)用程序、文字處理器、應(yīng)用程序、數(shù)碼相機(jī)、數(shù)據(jù)源、掃描儀、數(shù)據(jù)源、圖像數(shù)據(jù)庫、數(shù)據(jù)源、生產(chǎn)商、圖像數(shù)據(jù);的消費(fèi)者、圖像數(shù)據(jù)、HW依賴I / O層、(SCSI、并行、串行等)。源管理器、軟件、數(shù)據(jù)源、軟件、應(yīng)用程序、軟件吐溫接口吐溫2.3規(guī)范1 - 3可以包括桌面掃描儀,掃描儀,數(shù)碼相機(jī)、框架的吸引力,形象嗎數(shù)據(jù)庫,或任何其他光柵圖像來源符合吐溫協(xié)議和API。允許你確定一個(gè)圖像采集設(shè)備的特性和功能提供的。您的應(yīng)用程序可以限制源只提供這些功能兼容應(yīng)用程序的需求和能力。消除了需要為應(yīng)用程序提供一個(gè)用戶界面來控制圖像收購的過程。有一個(gè)每TWAINcompliant附帶軟件用戶界面模塊源設(shè)

5、備來處理這一過程。當(dāng)然,您可以提供自己的用戶接口,用于收購,如果需要的話For the Source Developer源開發(fā)人員增加你的產(chǎn)品的使用和支持。更多的應(yīng)用將成為形象消費(fèi)者的結(jié)果易于實(shí)現(xiàn)和廣度的設(shè)備集成吐溫提供。允許您為您的設(shè)備提供一個(gè)專有的用戶界面。這允許您呈現(xiàn)最新功能,用戶無需等待應(yīng)用程序?qū)⑺麄兗{入接口。降低您的實(shí)現(xiàn)成本,因此節(jié)省了資金。而不是創(chuàng)建和支持各種版本的設(shè)備控制軟件集成各種應(yīng)用程序中,您將創(chuàng)建一個(gè)TWAIN-compliant來源。For the End User對(duì)于終端用戶給用戶一個(gè)簡(jiǎn)單的方法將圖像文件。他們可以訪問圖像在更少的步驟,因?yàn)樗麄儚牟恍枰x開您的應(yīng)用程序。

6、注意:吐溫是支持所有版本的Microsoft Windows和蘋果的Mac OS X。吐溫2。x和更高的支持Linux和64位操作系統(tǒng)。信息支持吐溫16位操作系統(tǒng)和老版本的蘋果的Macintosh操作系統(tǒng)不再是當(dāng)前的吐溫規(guī)范中描述。請(qǐng)參考規(guī)范的版本1.9支持舊的操作系統(tǒng)。Creation of TWAIN創(chuàng)建吐溫吐溫是由一小群軟件和硬件公司為了應(yīng)對(duì)需要提出了成像行業(yè)規(guī)范。工作小組的目標(biāo)是提供一個(gè)開放的、多平臺(tái)解決互連光柵輸入設(shè)備的需求應(yīng)用程序軟件。最初的工作組是由代表5人公司:阿爾杜斯,Caere,柯達(dá)腋生的,惠普,羅技。其他三個(gè)公司,Adobe Howtek,軟件架構(gòu)師也作出了重要貢獻(xiàn)。在1

7、991年1月,馬克·吐溫的設(shè)計(jì)開始。審查原始吐溫的開發(fā)人員工具包從1991年4月,發(fā)生在1991年1月,。最初的工具箱是由吐溫聯(lián)盟。聯(lián)盟包括大約300個(gè)人代表200個(gè)公司繼續(xù)影響和指導(dǎo)吐溫的未來方向。當(dāng)前版本的吐溫是吐溫工作小組的成員包括寫的Adobe,柯達(dá)腋生的,Inc .,富士通計(jì)算機(jī)產(chǎn)品美國惠普公司,JFL外圍Solutions Inc .,理光公司、施樂公司、蜥蜴科技公司。1998年5月,微軟宣布一項(xiàng)協(xié)議,吐溫工作組提供的包含吐溫?cái)?shù)據(jù)源管理器在Microsoft Windows 98和微軟Windows NT 5.0。在吐溫的創(chuàng)建,以下架構(gòu)目標(biāo)是堅(jiān)持:易于采用TWAINcom

8、pliant允許應(yīng)用程序供應(yīng)商讓他們的應(yīng)用程序合理的開發(fā)和測(cè)試工作。的基本特征吐溫應(yīng)該實(shí)現(xiàn)只是通過適度調(diào)整應(yīng)用程序。采取利用一套更完整的功能更多的發(fā)展工作應(yīng)該預(yù)期??蓴U(kuò)展性體系結(jié)構(gòu)必須包括靈活地接受多個(gè)窗口環(huán)境中生成各種主機(jī)平臺(tái)(Mac OS X,微軟Windows、LinuxKDE和Gnome等),促進(jìn)源設(shè)備之間交換的各種數(shù)據(jù)類型和目標(biāo)應(yīng)用程序。目前,只有光柵圖像數(shù)據(jù)類型的支持建議未來的擴(kuò)展包括文本、傳真、矢量圖形等等。集成-吐溫實(shí)現(xiàn)的關(guān)鍵元素“屬于”操作系統(tǒng)。微軟和吐溫工作組之間的協(xié)議表明這一點(diǎn)集成到操作系統(tǒng)開始。吐溫必須實(shí)現(xiàn)鼓勵(lì)向后兼容性(擴(kuò)展)和平滑遷移到操作系統(tǒng)。一個(gè)最小化使用特定于

9、平臺(tái)的實(shí)現(xiàn)機(jī)制增強(qiáng)的長壽和被領(lǐng)養(yǎng)。簡(jiǎn)單應(yīng)用< - >源互連-識(shí)別和直接來源選擇機(jī)制將提供。通過一個(gè)應(yīng)用程序?qū)⑼苿?dòng)這一機(jī)制簡(jiǎn)單的API。這種機(jī)制也將建立數(shù)據(jù)和控制之間的聯(lián)系應(yīng)用程序和源代碼。它將支持能力和溝通和配置應(yīng)用程序和源之間的談判。封裝人機(jī)界面,需要一個(gè)設(shè)備本機(jī)的用戶界面源。應(yīng)用程序可以選擇覆蓋這個(gè)本地用戶界面,同時(shí)仍然使用源控制物理設(shè)備。第二章技術(shù)概況TWAIN Specification吐溫架構(gòu)數(shù)據(jù)傳輸是通過三個(gè)軟件元素一起工作在吐溫:源管理器應(yīng)用程序,源代碼。這些元素使用吐溫通信的體系結(jié)構(gòu)。吐溫架構(gòu)包括四層:應(yīng)用程序協(xié)議收購設(shè)備吐溫軟件元素層次如下圖所示。每一層中描述接下

10、來的小節(jié)。應(yīng)用程序用戶的軟件應(yīng)用程序執(zhí)行在這一層。吐溫描述用戶界面指南關(guān)于用戶如何應(yīng)用程序開發(fā)人員吐溫功能的訪問以及如何選擇一個(gè)特定的源。吐溫并不關(guān)心應(yīng)用程序是如何實(shí)現(xiàn)的。吐溫對(duì)任何沒有影響應(yīng)用程序可能使用的應(yīng)用程序之間的通信方案。協(xié)議協(xié)議是馬克·吐溫所使用的“語言”口語和語法。它實(shí)現(xiàn)了精確的指令和通信所需的數(shù)據(jù)傳輸。協(xié)議層包括:應(yīng)用軟件的一部分,它提供了應(yīng)用程序和之間的界面吐溫吐溫源經(jīng)理馬克·吐溫所提供的軟件中包含的源設(shè)備接收指令從源經(jīng)理和傳輸數(shù)據(jù)和返回代碼協(xié)議層的內(nèi)容將更詳細(xì)地討論在“之間的通信吐溫“2 - 5頁的元素。收購采集設(shè)備可能是物理(如掃描儀或數(shù)碼相機(jī))或邏輯

11、(比如一個(gè)映像數(shù)據(jù)庫)。軟件元素寫入控制收購被稱為源和駐留主要是在這一層。為應(yīng)用程序源傳輸數(shù)據(jù)。它使用的格式和傳輸機(jī)制達(dá)成一致經(jīng)源和應(yīng)用程序。源總是提供了一個(gè)內(nèi)置的用戶界面控制設(shè)備(s)來源寫入驅(qū)動(dòng)器。應(yīng)用程序可以覆蓋這個(gè)和現(xiàn)在自己的用戶界面收購,如果需要的話。設(shè)備這是傳統(tǒng)的底層設(shè)備驅(qū)動(dòng)程序的位置。他們將特定于設(shè)備的命令到特定于特定設(shè)備的硬件指令和操作司機(jī)被寫入伴隨。使用吐溫的應(yīng)用程序不再需要船設(shè)備驅(qū)動(dòng)程序,因?yàn)樗鼈儊碓吹囊徊糠?。吐溫不關(guān)心設(shè)備層。源隱藏的設(shè)備層應(yīng)用程序。源提供了翻譯從吐溫操作和交互源的用戶界面等效命令導(dǎo)致的設(shè)備驅(qū)動(dòng)程序設(shè)備的行為。注意:協(xié)議層是最徹底和嚴(yán)格定義為允許精確應(yīng)用程

12、序和資源之間的通信。本文檔中的信息集中在協(xié)議和采集層。吐溫的用戶界面當(dāng)一個(gè)應(yīng)用程序使用吐溫獲取數(shù)據(jù),采集過程可能是可見的應(yīng)用程序的用戶在以下三個(gè)方面:應(yīng)用程序用戶需要選擇他們想要的設(shè)備獲取數(shù)據(jù)。他們也需要信號(hào),當(dāng)他們準(zhǔn)備傳輸數(shù)據(jù)。允許,吐溫強(qiáng)烈建議應(yīng)用程序開發(fā)人員兩個(gè)選項(xiàng)添加到文件菜單:選擇源-選擇設(shè)備收購開始轉(zhuǎn)移過程源管理器當(dāng)用戶選擇選擇源選項(xiàng)時(shí),源的應(yīng)用程序請(qǐng)求管理器對(duì)話框顯示其選擇來源。這列出了所有可用的設(shè)備和允許用戶突出并選擇一個(gè)設(shè)備。如果需要,應(yīng)用程序可以編寫自己的版本的用戶界面。源每個(gè)TWAIN-compliant源提供了一個(gè)特定于特定設(shè)備的用戶界面。當(dāng)應(yīng)用程序用戶選擇購買選項(xiàng),源

13、的用戶界面可以顯示出來。如果需要,該接口的應(yīng)用程序可以編寫自己的版本,。吐溫的元素之間的溝通吐溫的元素之間的通信通過兩個(gè)入口點(diǎn)是可能的。他們是叫DSM_Entry()和DS_Entry()。DSM意味著數(shù)據(jù)源管理器和DS意味著數(shù)據(jù)源。圖2 - 3入口點(diǎn)元素之間的交流應(yīng)用程序應(yīng)用程序的目的是獲得來自一個(gè)源的數(shù)據(jù)。然而,應(yīng)用程序不能接觸直接來源。所有請(qǐng)求數(shù)據(jù)、功能信息、錯(cuò)誤信息等通過源代碼管理器處理。大約140操作是由馬克·吐溫。應(yīng)用程序?qū)⑺鼈儼l(fā)送給源經(jīng)理的傳播。應(yīng)用程序指定的元素,經(jīng)理或來源,來源每個(gè)請(qǐng)求操作的最終目的地。應(yīng)用程序通信源經(jīng)理通過源代碼管理器的唯一入口點(diǎn),DSM_Entr

14、y()函數(shù)。DSM_Entry函數(shù)的參數(shù)列表包含:一個(gè)標(biāo)識(shí)符結(jié)構(gòu)提供關(guān)于應(yīng)用程序的信息,起源函數(shù)調(diào)用這個(gè)請(qǐng)求的目的地(源經(jīng)理或源)三聯(lián)體描述所請(qǐng)求的操作。三聯(lián)體指定:數(shù)據(jù)組的操作(DG_)數(shù)據(jù)參數(shù)類型的操作(DAT_)消息操作(MSG_)第二章2 - 6吐溫2.3規(guī)范(這些更多的章節(jié)描述了三胞胎坐落在稍后使用操作章)。一個(gè)指針字段允許傳輸數(shù)據(jù)函數(shù)調(diào)用返回值(返回代碼)表示的成功或失敗操作。TW_UINT16 TW_CALLINGSTYLE DSM_Entry(pTW_IDENTITY pOrigin,/ /消息的來源pTW_IDENTITY pd,/ /目的地的消息TW_UINT32 DG,/

15、 /數(shù)據(jù)組ID:DG_xxxxTW_UINT16 DAT,/ /數(shù)據(jù)參數(shù)類型:DAT_xxxx/ /消息ID:MSG_xxxx TW_UINT16味精TW_MEMREF pData / /指向數(shù)據(jù)的指針);注:數(shù)據(jù)類型定義都包含在第八章,數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu),并在文件名為吐溫。H可下載的吐溫工作組網(wǎng)絡(luò)網(wǎng)站)。源管理器源管理器提供了應(yīng)用程序和源之間的通信路徑,支持用戶的選擇一個(gè)源,并加載訪問應(yīng)用程序的源代碼。從應(yīng)用程序源通信經(jīng)理抵達(dá)DSM_Entry()切入點(diǎn)。如果目的地DSM_Entry調(diào)用源經(jīng)理源管理器流程操作本身。如果目的地在DSM_Entry調(diào)用源源管

16、理器將參數(shù)列表的信息,消除了目的地參數(shù)并調(diào)用適當(dāng)?shù)膩碓础__(dá)到源代碼,源代碼管理器調(diào)用源的DS_Entry()函數(shù)。吐溫需要每個(gè)源入口點(diǎn)。用C編寫的代碼形式,DS_Entry函數(shù)調(diào)用是這樣的:TW_UINT16 TW_CALLINGSTYLE DSM_Entry(pTW_IDENTITY pOrigin,/ /消息的來源TW_UINT32 DG,/ /數(shù)據(jù)組ID:DG_xxxxTW_UINT16 DAT,/ /數(shù)據(jù)參數(shù)類型:DAT_xxxx/ /消息ID:MSG_xxxx TW_UINT16味精TW_MEMREF pData / /指向數(shù)據(jù)的指針);此外,資源管理器可以啟動(dòng)三個(gè)操作,沒有起源的應(yīng)

17、用程序。這些操作三胞胎的存在只是為了經(jīng)理源通信和來源源管理器執(zhí)行時(shí)顯示其選擇源對(duì)話框。的操作是用來識(shí)別可用的來源和打開或關(guān)閉資源。源管理器的實(shí)現(xiàn)支持系統(tǒng)之間的不同:在Windows上源Manager是一個(gè)動(dòng)態(tài)鏈接庫(TWAINDSM.DLL)。源之間的并發(fā)會(huì)話管理器可以管理應(yīng)用程序和許多來源。在麥金托什源經(jīng)理是一個(gè)Mach-O框架(TWAIN.framework)。在Linux上源Manager是一個(gè)共享庫(/ usr /地方/ lib / libtwaindsm.so)。源管理器可以管理應(yīng)用程序之間的同步會(huì)話和許多來源。源源接收操作的應(yīng)用程序,或直接通過源代碼管理器從源經(jīng)理。它處理請(qǐng)求并返回

18、適當(dāng)?shù)姆祷卮a(代碼與TWRC_前綴)指示操作的結(jié)果到源代碼管理器。如果發(fā)起人操作的應(yīng)用程序,則傳回返回代碼應(yīng)用程序的返回值DSM_Entry()函數(shù)調(diào)用。如果操作是成功,一個(gè)條件代碼(代碼與TWCC_前綴)包含更具體設(shè)置的信息來源。盡管條件代碼設(shè)置,它不是自動(dòng)傳遞回來。應(yīng)用程序必須調(diào)用一個(gè)操作來詢問情況的內(nèi)容代碼。源的實(shí)現(xiàn)是一樣的實(shí)現(xiàn)源經(jīng)理:在Windows上源是一個(gè)動(dòng)態(tài)鏈接庫(DLL)。ds擴(kuò)展。在麥金托什源被實(shí)現(xiàn)為一個(gè)包(最好是Mach-O)。ds擴(kuò)展。在Linux上源是一個(gè)共享庫(所以)。ds擴(kuò)展。通信流從源應(yīng)用程序大多數(shù)的操作請(qǐng)求是由應(yīng)用程序和流動(dòng)源經(jīng)理和源。源,通過源代碼管理器,可

19、以通過數(shù)據(jù)和返回代碼。然而,有四次當(dāng)源需要中斷應(yīng)用程序和要求一個(gè)動(dòng)作發(fā)生。這些情況是:通知應(yīng)用程序數(shù)據(jù)傳輸準(zhǔn)備發(fā)生。所需的時(shí)間源準(zhǔn)備數(shù)據(jù)傳輸會(huì)有所不同。而不是應(yīng)用程序等準(zhǔn)備工作完成,只是通知當(dāng)一切都準(zhǔn)備好了。的MSG_XFERREADY注意用于這一目的。要求源的用戶界面被禁用。這種通知應(yīng)發(fā)送的源應(yīng)用程序,當(dāng)用戶點(diǎn)擊“關(guān)閉”按鈕的用戶來源接口。MSG_CLOSEDSREQ通知用于這一目的。通知應(yīng)用程序OK按鈕被按下,接受用戶的更改了。這只是與DG_CONTROL /如果源打開使用DAT_USERINTERFACE / MSG_ENABLEDSUIONLY。用于MSG_CLOSEDSOK通知這一目

20、的。設(shè)備事件發(fā)生。這個(gè)通知發(fā)送源應(yīng)用程序時(shí)具體的事件發(fā)生,但只有在應(yīng)用程序指令之前給源傳遞這樣的事件。MSG_DEVICEEVENT通知用于這一目的。這些通知給應(yīng)用程序的事件(或消息)循環(huán)。使用的過程在第十二章,這些通知覆蓋更全面”的操作系統(tǒng)依賴關(guān)系”討論應(yīng)用程序的事件循環(huán)。識(shí)別吐溫2.0元素測(cè)試TW_IDENTITY是不夠的。ProtocolMajor字段可以確定一個(gè)應(yīng)用程序,一個(gè)數(shù)據(jù)源管理器或一個(gè)來源是吐溫2.0兼容。檢查TW_IDENTITY。SupportedGroups字段為應(yīng)用程序或源,尋找后:DF_APP2,表明應(yīng)用程序2.0兼容DF_DSM2,表明數(shù)據(jù)源管理器2.0兼容DF_D

21、S2,表明數(shù)據(jù)源是2.0兼容應(yīng)用程序所有吐溫DF_APP2在2.0兼容應(yīng)用程序必須報(bào)告TW_IDENTITY。SupportedGroups字段。所有吐溫2.0兼容應(yīng)用程序都必須測(cè)試的DF_DSM2國旗TW_IDENTITY。SupportedGroups領(lǐng)域,后調(diào)用DG_CONTROL / DAT_PARENT /MSG_OPENDSM。如果沒有找到這個(gè)標(biāo)志,然后按照傳統(tǒng)行為1。x應(yīng)用程序,在吐溫使用內(nèi)存管理函數(shù)的詳細(xì)規(guī)范。如果國旗被發(fā)現(xiàn),那么應(yīng)用程序必須調(diào)用DG_CONTROL / DAT_ENTRYPOINT /MSG_GET狀態(tài)3,在執(zhí)行任何其他操作之前,獲得指針指向的內(nèi)存管理功能。來

22、源吐溫2.0兼容所有必須報(bào)告DF_DS2在他們的來源TW_IDENTITY。SupportedGroups字段。所有吐溫2.0兼容來源必須準(zhǔn)備好接收DG_CONTROL /DAT_ENTRYPOINT / MSG_SET調(diào)用狀態(tài)3,之前DG_CONTROL / DAT_IDENTITY /MSG_OPENDS。如果這個(gè)操作是不叫,然后1. x的遺產(chǎn)的行為源,使用內(nèi)存管理函數(shù)在吐溫的規(guī)范,詳細(xì)定位顯示數(shù)據(jù)源管理器。吐溫2.3規(guī)范2 - 9如果操作被稱為源必須使用指針指向的內(nèi)存管理功能,必須使用訪問DSM_Entry提供的入口點(diǎn)。使用DAT_CALLBACK消息從源應(yīng)用程序應(yīng)用程序吐溫在Linux

23、上運(yùn)行的應(yīng)用程序或蘋果Macintosh OS X必須使用DG_CONTROL /DAT_CALLBACK / MSG_REGISTER_CALLBACK登記接收異步通知MSG_XFERREADY等事件。吐溫來源使用舊版本的數(shù)據(jù)源管理器(未檢測(cè)到DF_DSM2國旗)必須使用遺留的行為。請(qǐng)參閱第12章,“操作系統(tǒng)依賴關(guān)系”信息。請(qǐng)注意,吐溫建議的應(yīng)用程序從一個(gè)回調(diào)返回盡快函數(shù)。事件像MSG_XFERREADY應(yīng)該啟動(dòng)圖像轉(zhuǎn)移在同一線程做MSG_ENABLEDS這樣回調(diào)可以立即返回。來源吐溫源檢測(cè)DF_DSM2標(biāo)記內(nèi)的存在TW_IDENTITY。SupportedGroups必須使用DG_CONT

24、ROL / DAT_NULL與適當(dāng)?shù)南⒎祷豈SG_XFERREADY之類的事件。吐溫源使用舊版本的數(shù)據(jù)源管理器(未檢測(cè)到DF_DSM2國旗)使用傳統(tǒng)的行為。請(qǐng)參閱第12章,“操作系統(tǒng)依賴關(guān)系”數(shù)據(jù)源管理器的安裝吐溫應(yīng)該安裝最新版本的應(yīng)用程序和資源數(shù)據(jù)源管理器。請(qǐng)檢查吐溫網(wǎng)站,看看你的操作系統(tǒng)或發(fā)行版表示,如果不是,請(qǐng)考慮提交吐溫工作組。指第十二章,“操作系統(tǒng)依賴關(guān)系”。在吐溫2.0和更高版本的內(nèi)存管理吐溫需要的應(yīng)用程序和資源管理彼此的記憶。主要的問題是保證協(xié)議API的使用。吐溫2.0引入了四個(gè)新函數(shù),得到了從源經(jīng)理通過DAT_ENTRYPOINT。TW_

25、HANDLE TW_CALLINGSTYLE DSM_MemAllocate(TW_UINT32)空白TW_CALLINGSTYLE DSM_MemFree(TW_HANDLE)TW_MEMREF TW_CALLINGSTYLE DSM_MemLock(TW_HANDLE)空白TW_CALLINGSTYLE DSM_MemUnlock(TW_HANDLE)源經(jīng)理負(fù)責(zé)確保所有組件都使用相同的內(nèi)存管理的API。第二章2 - 10吐溫2.3規(guī)范如果DAT_ENTRYPOINT不是從源經(jīng)理然后獲得應(yīng)用程序和資源必須使用傳統(tǒng)電話。指第十二章,“操作系統(tǒng)依賴關(guān)系”。也看到DSMInterface。cpp樣

26、本來源:http:/twain-使用操作三胞胎DSM_Entry()和DS_Entry()函數(shù)是用來溝通操作。一個(gè)操作管理器調(diào)用一個(gè)操作應(yīng)用程序或來源。通常,但并非總是如此涉及到使用數(shù)據(jù)或修改數(shù)據(jù)所顯示的最后一個(gè)參數(shù)(pData)函數(shù)調(diào)用。請(qǐng)求行為發(fā)生在其中的一個(gè)方法:應(yīng)用程序源經(jīng)理DSM_Entry pd參數(shù)集零應(yīng)用程序源(通過源管理器)DSM_Entry與pd參數(shù)集指向一個(gè)有效的結(jié)構(gòu),確定了源源經(jīng)理DS_Entry來源所需的行動(dòng)是由一個(gè)操作三聯(lián)體作為三個(gè)參數(shù)的傳遞函數(shù)調(diào)用。每個(gè)三聯(lián)體獨(dú)特,沒有歧義,指定一個(gè)特定的行動(dòng)。沒有操作指定超過一個(gè)單一的三聯(lián)體。這三個(gè)參數(shù)構(gòu)成三重?cái)?shù)據(jù)組、數(shù)據(jù)參數(shù)類型

27、和消息ID,每個(gè)參數(shù)傳遞特定的信息。數(shù)據(jù)組(DG_xxxx)操作分為大類別的數(shù)據(jù)組標(biāo)識(shí)符。以下是吐溫的當(dāng)前定義數(shù)據(jù)組:控制(標(biāo)識(shí)符是DG_CONTROL。):這些操作涉及的控制吐溫會(huì)話。一個(gè)例子,DG_CONTROL用作數(shù)據(jù)組標(biāo)識(shí)符操作打開源代碼管理器。圖像(標(biāo)識(shí)符是DG_IMAGE。):這些操作處理圖像數(shù)據(jù)。一個(gè)例子DG_IMAGE作為數(shù)據(jù)組是一個(gè)請(qǐng)求的操作傳輸?shù)膱D像數(shù)據(jù)。音頻(DG_AUDIO標(biāo)識(shí)符):這些操作處理音頻數(shù)據(jù)(支持一些數(shù)碼相機(jī))。一個(gè)例子,DG_AUDIO作為數(shù)據(jù)組是一個(gè)音頻數(shù)據(jù)的轉(zhuǎn)移操作請(qǐng)求。數(shù)據(jù)參數(shù)類型(DAT_xxxx)這個(gè)參數(shù)的三聯(lián)體標(biāo)識(shí)的數(shù)據(jù)類型被傳遞或操作。參數(shù)類

28、型可以引用一個(gè)數(shù)據(jù)結(jié)構(gòu)或一個(gè)變量。有很多數(shù)據(jù)參數(shù)類型。DAT_IDENTITY就是一個(gè)例子。DAT_IDENTITY類型是用來識(shí)別一個(gè)吐溫來源等因素。數(shù)據(jù)是通常通過或通過DSM_Entry pData參數(shù)和修改DSM_Entry。在這種情況下,pData參數(shù)指向一個(gè)數(shù)據(jù)結(jié)構(gòu)的類型TW_IDENTITY。參數(shù)的數(shù)據(jù)類型始于DAT_xxxx和相關(guān)的數(shù)據(jù)結(jié)構(gòu)始于TW_xxxx和副本的第二部分的名字。這種模式是之后一直對(duì)大多數(shù)數(shù)據(jù)參數(shù)類型及其數(shù)據(jù)結(jié)構(gòu)。任何異常指出在參考頁第七章,第八章,“操作三胞胎數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)”。消息ID(MSG_xxxx)這個(gè)參數(shù)標(biāo)識(shí)應(yīng)用程序或源經(jīng)理的行動(dòng)的愿望拍攝的。有很多

29、不同的消息MSG_GET或MSG_SET等。他們都開始MSG_的前綴。操作的例子三胞胎三聯(lián)體應(yīng)用程序發(fā)送給源經(jīng)理打開源經(jīng)理模塊:DG_CONTROL / DAT_PARENT / MSG_OPENDSM應(yīng)用程序發(fā)送的三聯(lián)體指示源代碼管理器顯示其選擇源對(duì)話框,從而允許用戶選擇他們計(jì)劃獲得數(shù)據(jù)來源的是:DG_CONTROL / DAT_IDENTITY / MSG_USERSELECT三聯(lián)體應(yīng)用程序發(fā)送給從源傳輸數(shù)據(jù)到一個(gè)文件中是:DG_IMAGE / DAT_IMAGEFILEXFER / MSG_GET基于狀態(tài)的協(xié)議應(yīng)用程序、源代碼管理器和源必須溝通管理收購數(shù)據(jù)。這是合乎邏輯的,這一過程必須發(fā)

30、生在一個(gè)特定的序列。例如,應(yīng)用程序不能成功地請(qǐng)求前的從源傳輸數(shù)據(jù)來源管理器加載和準(zhǔn)備溝通請(qǐng)求。確保正確執(zhí)行序列,吐溫協(xié)議定義中存在的七個(gè)州吐溫會(huì)話。會(huì)話期間,應(yīng)用程序連接到一個(gè)特定的來源通過源代碼管理器。而應(yīng)用程序連接到源管理器另一個(gè)獨(dú)特的會(huì)話。在一個(gè)給定的點(diǎn)在一個(gè)會(huì)話,吐溫經(jīng)理和元素的來源源每占領(lǐng)一個(gè)特定的狀態(tài)。轉(zhuǎn)換到一個(gè)新的狀態(tài)是由操作引起的請(qǐng)求的應(yīng)用程序或來源。可以向前或向后的方向轉(zhuǎn)變。大多數(shù)轉(zhuǎn)換國家過渡。例如,一個(gè)操作移動(dòng)源經(jīng)理從1到狀態(tài)2不是從1到狀態(tài)3。(有兩個(gè)過渡的情況可能發(fā)生。第三章中討論,“應(yīng)用程序?qū)崿F(xiàn)”。)當(dāng)查看基于狀態(tài)的協(xié)議,它有助于記住:州1、2和3僅由資源管理器被占用

31、。源經(jīng)理從不占用狀態(tài)大于3。州4、5、6和7完全占據(jù)的來源。一個(gè)源從來沒有少于4如果是打開狀態(tài)。如果它是封閉的,它沒有狀態(tài)。如果一個(gè)應(yīng)用程序使用多個(gè)來源,每個(gè)連接都是一個(gè)獨(dú)立的會(huì)話,每個(gè)開源“駐留”在自己的國家不顧國家的其他來源是什么在。狀態(tài)轉(zhuǎn)換圖看起來像這樣:美國的描述以下部分描述。州1 -拉伸源經(jīng)理駐留在狀態(tài)1應(yīng)用程序建立一個(gè)會(huì)話。此時(shí),經(jīng)理源代碼已經(jīng)安裝在磁盤上但通常不是加載到內(nèi)存中。唯一的情況下,源管理器可能已經(jīng)加載并運(yùn)行Windows,因?yàn)閷?shí)現(xiàn)一個(gè)DLL(因此,同一來源的實(shí)例經(jīng)理可以由多個(gè)應(yīng)用程序共享)。如果這種情況存在,源經(jīng)理將在狀態(tài)2或3的應(yīng)用程序加載它。狀態(tài)2 -源管理器加載源

32、經(jīng)理現(xiàn)在被加載到內(nèi)存中。現(xiàn)在還沒有開放。這時(shí),源經(jīng)理準(zhǔn)備接受其他操作的三胞胎應(yīng)用程序。3 -源碼經(jīng)理開放狀態(tài)源管理器打開并準(zhǔn)備管理資源。源經(jīng)理現(xiàn)在準(zhǔn)備提供資源的列表,打開來源,關(guān)閉來源。源管理器將留在狀態(tài)3為剩余的會(huì)話,直到關(guān)閉。源管理器拒絕被關(guān)閉而應(yīng)用程序有任何公開來源。4 -源開放狀態(tài)源已經(jīng)裝載和打開資源管理器來響應(yīng)一個(gè)操作從應(yīng)用程序。它準(zhǔn)備接收操作。源應(yīng)該驗(yàn)證,足夠的資源(如內(nèi)存、設(shè)備可用,它運(yùn)行等)存在。應(yīng)用程序可以查詢?cè)吹哪芰?即水平分辨率,支持彩色或黑白圖像,自動(dòng)文檔送料器,等等)。應(yīng)用程序還可以設(shè)置這些功能所需的設(shè)置。例如,它可能會(huì)限制一個(gè)源能提供彩色圖像傳輸只有黑色和白色。注意

33、:詢問能力可能發(fā)生在源州4、5、6、7。但是,一個(gè)應(yīng)用程序可以設(shè)置一個(gè)功能只有在國家4除非特別許可談判應(yīng)用程序和源之間的關(guān)系。5 -源啟用狀態(tài)源已經(jīng)被從應(yīng)用程序通過一個(gè)操作啟用源經(jīng)理和準(zhǔn)備user-enabled轉(zhuǎn)移。如果應(yīng)用程序允許源顯示其用戶界面,源將這樣做當(dāng)它進(jìn)入狀態(tài)5。國家6 -轉(zhuǎn)移已經(jīng)準(zhǔn)備好了源準(zhǔn)備轉(zhuǎn)移一個(gè)或多個(gè)數(shù)據(jù)項(xiàng)(圖像)應(yīng)用程序。第二章2 - 14吐溫2.3規(guī)范的的過渡狀態(tài)5到6是由源通知應(yīng)用程序轉(zhuǎn)讓已經(jīng)準(zhǔn)備好了。在初始轉(zhuǎn)移之前,應(yīng)用程序必須查詢圖像的信息(分辨率,圖像大小,等等)。如果源支持音頻,然后將圖像之前,應(yīng)用程序必須的所有音頻片段轉(zhuǎn)移相關(guān)的圖片。有可能不止一個(gè)連續(xù)圖像

34、傳輸。這個(gè)話題被在第四章,“高級(jí)應(yīng)用程序?qū)崿F(xiàn)”。國家7 -轉(zhuǎn)移源圖像轉(zhuǎn)移到應(yīng)用程序。所使用的傳輸機(jī)制是協(xié)商在國家4。轉(zhuǎn)讓將成功完成或提前終止。源發(fā)送適當(dāng)?shù)姆祷卮a顯示結(jié)果。源表示轉(zhuǎn)讓完成后,應(yīng)用程序必須承認(rèn)轉(zhuǎn)移結(jié)束。其TW_IDENTITY吐溫2.0兼容的應(yīng)用程序測(cè)試。SupportedGroups DF_DSM2之后調(diào)用DG_CONTROL / DAT_PARENT MSG_OPENDSM調(diào)用DG_CONTROL如果發(fā)現(xiàn)問題/ DAT_ENTRYPOINT / MSG_GET。吐溫2.0兼容源發(fā)送DG_CONTROL / DAT_ENTRYPOINT / MSG_SET;測(cè)試應(yīng)用程序的TW_

35、IDENTITY。SupportedGroups DF_DSM2和DF_APP2。功能吐溫的好處之一是它允許應(yīng)用程序方便地與各種各樣的收購設(shè)備。設(shè)備可以提供圖片或音頻數(shù)據(jù)。例如,有些設(shè)備文檔自動(dòng)喂食器。有些設(shè)備不限于一個(gè)圖像但可以傳遞多個(gè)圖像。一些設(shè)備支持彩色圖像。有些設(shè)備提供各種各樣的半色調(diào)模式。一些設(shè)備支持一系列決議,而其他人可能提供不同的選擇。一些設(shè)備允許錄音的音頻數(shù)據(jù)與圖像相關(guān)聯(lián)。應(yīng)用程序的開發(fā)人員需要注意的一個(gè)源的功能和可能影響功能源提供了應(yīng)用程序的用戶。要做到這一點(diǎn),應(yīng)用程序可以執(zhí)行談判能力。應(yīng)用程序通常遵循這一過程:確定所選源支持一個(gè)特定的功能。詢問的當(dāng)前值的能力。同時(shí),查詢功能

36、的默認(rèn)值和一組可用的值所支持的來源能力。要求源將當(dāng)前值設(shè)置為應(yīng)用程序的期望值。當(dāng)前的值將被顯示為當(dāng)前選擇源的用戶界面。限制,如果需要,可用的源的值通常是提供的一個(gè)子集。例如,如果應(yīng)用程序希望只有黑色和白色的數(shù)據(jù),它可以限制源僅傳輸。如果限制影響源的用戶界面,源應(yīng)該修改接口,以反映這些變化。例如,它不可能灰色選項(xiàng)可用的,因?yàn)閼?yīng)用程序的限制。驗(yàn)證新值已經(jīng)接受的來源。吐溫能力分為三組:CAP_xxxx:功能的名字開始帽是可以適用于任何的功能一般來源。這些功能包括使用文檔的自動(dòng)喂食器,識(shí)別數(shù)據(jù)的創(chuàng)造者,等等。ICAP_xxxx:功能的名字開始ICAP功能,適用于圖像設(shè)備。“我”代表形象。(當(dāng)吐溫?cái)U(kuò)展到

37、支持其他數(shù)據(jù)傳輸如文本或傳真數(shù)據(jù),會(huì)有tcap和FCAPs以類似的風(fēng)格)。ACAP_xxxx:功能的名字開始ACAP是適用于功能支持音頻的設(shè)備。“A”代表音頻。功能的容器功能存在于許多品種,但都有一個(gè)默認(rèn)值,當(dāng)前值和可能如果選擇其他值可以被支持。幫助支持的值進(jìn)行分類清晰的結(jié)構(gòu),吐溫為功能定義了四種類型的容器。名字的數(shù)據(jù) 結(jié)構(gòu)的容器 類型的內(nèi)容TW_ONEVALUE 一個(gè)值的當(dāng)前和默認(rèn)值重合。這種類型的可用的范圍值能力就是單一值。例如,一個(gè)能力,表明存在一個(gè)文檔給料機(jī)可能是這種類型的。TW_ARRAY數(shù)組的值來描述當(dāng)前的邏輯項(xiàng)??捎玫闹悼赡苁且粋€(gè)更大的數(shù)組值。例如,名稱的列表,例如支持功能返回的

38、列表CAP_SUPPORTEDCAPS能力,會(huì)使用這種類型的容器中。TW_RANGE允許用戶選擇他們當(dāng)前的許多功能值從一個(gè)范圍均勻間隔的值。的能力可以指定最小值和最大值可接受的值和之間的增量步長值。例如,決議可能被支持從100年到600年,50步(100,150,200,、550、600)。TW_ENUMERATION這是最普遍的類型,因?yàn)樗x的列表可以選擇值的當(dāng)前值。的值不一致通過一系列和進(jìn)步?jīng)]有一個(gè)一致的價(jià)值觀之間的步長。為例子,如果一個(gè)源的決議選項(xiàng)沒有發(fā)生甚至步驟大小然后將(用于枚舉150年,400年和600年)。一般來說,大部分功能可以有一個(gè)以上的這些容器適用于他們這取決于特定的來源

39、,實(shí)現(xiàn)功能。為每個(gè)數(shù)據(jù)結(jié)構(gòu)這些容器是在第八章中定義,數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)。一個(gè)完整的表所有定義功能位于第十章,“功能”。必須的一些功能支持的應(yīng)用程序和源代碼。剩下的功能是可選的。談判和容器類型的能力是非常重要的應(yīng)用程序和數(shù)據(jù)源開發(fā)人員注意,容器類型由數(shù)據(jù)源查詢?cè)谒星闆r下,一個(gè)值。也允許容器類型的每個(gè)能力顯然是在第十章中定義,“功能”,馬克·吐溫規(guī)范。這是唯一一次適合調(diào)用應(yīng)用程序指定一個(gè)容器類型是在MSG_SET操作。那時(shí),還必須考慮允許的應(yīng)用程序容器和類型的特定功能。建議應(yīng)用程序使用MSG_SET它收到的容器MSG_GET。容器和字符串值的能力唯一的容器,可以舉辦一個(gè)字符串如下:TW

40、_ENUMERATIONTW_ARRAYTW_ONEVALUE是不可能的或有用的TW_RANGE使用這種類型。事實(shí)上,沒有情況能力被定義在第十章,“功能”,馬克·吐溫規(guī)范的一個(gè)地方TW_RANGE TW_STRxxxx類型的值是允許的。從版本1.7開始,只有以下功能接受字符串:CAP_AUTHOR、TW_ONEVALUE TW_STR128TW_ENUMERATION這是最普遍的類型,因?yàn)樗x的列表可以選擇值的當(dāng)前值。的值不一致通過一系列和進(jìn)步?jīng)]有一個(gè)一致的價(jià)值觀之間的步長。為例子,如果一個(gè)源的決議選項(xiàng)沒有發(fā)生甚至步驟大小然后將(用于枚舉150年,400年和600年)。名字的數(shù)據(jù)結(jié)

41、構(gòu)的容器類型的內(nèi)容吐溫2.3規(guī)范2-17CAP_CAPTION、TW_ONEVALUE TW_STR255CAP_TIMEDATE、TW_ONEVALUE TW_STR32ICAP_HALFTONES TW_ONEVALUE / TW_ENUMERATION / TW_ARRAY TW_STR32不同容器類型的定義可能會(huì)讓人困惑。例如,的定義TW_ONEVALUE如下:/ * TWON_ONEVALUE。一個(gè)值的容器。* /typedef struct TW_UINT16 ItemType;TW_UINT32項(xiàng)目; TW_ONEVALUE,遠(yuǎn)* pTW_ONEVALUE;乍一看,它很容易嘗試將

42、字符串到這個(gè)容器分配“項(xiàng)目”一個(gè)指針。這是不符合其他結(jié)構(gòu)的實(shí)現(xiàn)規(guī)范,介紹了一系列問題管理的內(nèi)存占用的字符串。(見TW_IDENTITY一致的吐溫字符串使用)正確的和一致的方法的字符串在吐溫容器是確保字符串是嵌在容器本身。定義一個(gè)新結(jié)構(gòu)在開發(fā)人員的代碼,或添加的大小被認(rèn)為是在分配容器。下面的例子是為了證明可能使用吐溫字符串的方法容器。這些例子是適合演示,需要細(xì)化真正的使用。示例1:TW_ONEVALUE結(jié)構(gòu)為持有TW_STR32定義價(jià)值/ * TWON_ONEVALUESTR32。一個(gè)值控股TW_STR32的容器。* /typedef struct TW_UINT16 ItemType;TW_S

43、TR32項(xiàng)目; TW_ONEVALUESTR32,遠(yuǎn)* pTW_ONEVALUESTR32;注意:包裝時(shí)注意兩字節(jié)結(jié)構(gòu)定義定制容器結(jié)構(gòu)。這清楚地顯示內(nèi)存分配和字符串所在。的數(shù)據(jù)源不需要關(guān)心本地字符串是如何管理的,和應(yīng)用不需要關(guān)心管理字符串內(nèi)存或內(nèi)容。示例2:TW_ONEVALUE結(jié)構(gòu)分配和充滿考慮持有TW_STR32價(jià)值(Windows)HGLOBAL AllocateAndFillOneValueStr32(const pTW_STR32 pInString)DWORD dwContainerSize = 0 l;第二章最近馬克·吐溫2.3規(guī)范HGLOBAL hContainer

44、=零;pTW_ONEVALUE pOneValue =零;pTW_STR32 pString =零;斷言(pInString);dwContainerSize = sizeof(TW_ONEVALUE) + sizeof(TW_STR32);hContainer = GlobalAlloc( GPTR, dwContainerSize );if(hContainer)pOneValue = (pTW_ONEVALUE)GlobalLock(hContainer);if(pOneValue)pOneValue->ItemType = TWTY_STR32;pString = (pTW_ST

45、R32)&pOneValue->Item;memcpy(pString, pInString, sizeof(TW_STR32);GlobalUnlock(hContainer);pOneValue = NULL;pString = NULL;return hContainer;Example 3:TW_ENUMERATION structure allocated with consideration of holding TW_STR32 values (WindowsExample)HGLOBAL AllocateEnumerationStr32( TW_UINT32 unNumItems )DWORD dwContainerSize = 0l;HGLOBAL hContainer = NULL;pTW_ENUMERATION pEnum = NULL;/ Note: This calculation will yield a size approximately/ one pointer larger than that required for thi

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論