亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于TWAIN協(xié)議的銀行票據(jù)掃描系統(tǒng)實現(xiàn)

        2019-12-24 01:12:18趙嘉樂孫夢夏明潔王大偉
        價值工程 2019年35期

        趙嘉樂 孫夢 夏明潔 王大偉

        摘要:為了解決部分瀏覽器不支持NPAPI的問題,在web和TWAIN應(yīng)用程序之間采用WebSocket協(xié)議進行通信。通過監(jiān)聽對應(yīng)端口號,對不同的消息觸發(fā)不同的操作,包括選擇數(shù)據(jù)源、設(shè)置參數(shù)、啟動掃描,在應(yīng)用程序和數(shù)據(jù)源管理、數(shù)據(jù)源之間選擇TWAIN協(xié)議進行通信,優(yōu)點是屏蔽了不同硬件設(shè)備廠商和操作系統(tǒng)的差異,TWAIN應(yīng)用程序不做任何修改就可以驅(qū)動各種圖形獲取設(shè)備?;谏鲜龇桨?,通過VC++6.0開發(fā)環(huán)境進行代碼實現(xiàn),使用HP M226掃描儀進行測試,并取得成功,表明該方案的可行性。

        Abstract: In order to solve the problem that some web browsers do not support the NPAPI ,WebSocket protocol is used for communication between the web and the twain application. Different operations are triggered for different messages by monitoring the corresponding port number, including selecting data source, setting parameters, and scanning. The twain protocol is selected between the application and the data source management and the data source to communicate, because it can shield the differences between different hardware device manufacturers and operating systems, so that the twain application can drive various graphics acquisition devices without any modification. Based on the program, the code is implemented by the VC++ development environment, and the HP M226 scanner is used for testing and success, the feasibility of the program is proved.

        關(guān)鍵詞:WebSocket;TWAIN協(xié)議;圖像掃描

        Key words: WebSocket;TWAIN protocol;image scanning

        中圖分類號:TP311.5? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識碼:A? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文章編號:1006-4311(2019)35-0223-04

        0? 引言

        隨著掃描儀等圖像獲取設(shè)備的出現(xiàn),很多業(yè)務(wù)系統(tǒng)都逐漸引入這些設(shè)備。然而,市場上掃描儀的設(shè)備種類、生產(chǎn)廠家眾多,而應(yīng)用程序如何驅(qū)動這些設(shè)備是所有需要完成掃描功能項目的關(guān)鍵環(huán)節(jié)。如果應(yīng)用程序?qū)γ糠N圖像獲取設(shè)備單獨開發(fā)界面和其對應(yīng)的驅(qū)動程序,那么其軟件維護的成本太大。TWAIN(Toolkit Without An Interesting Name)協(xié)議就是在這樣的背景下產(chǎn)生的,TWAIN協(xié)議[1]是應(yīng)用程序和設(shè)備之間的一個標(biāo)準(zhǔn)通信協(xié)議,用以規(guī)避系統(tǒng)及設(shè)備之間不兼容的問題,大部分的掃描儀和數(shù)碼相機等圖像獲取設(shè)備都提供了TWAIN驅(qū)動程序,利用統(tǒng)一的TWAIN接口,應(yīng)用程序可以方便得從這些設(shè)備中獲取圖像。

        但是目前互聯(lián)網(wǎng)上關(guān)于TWAIN的中文資料非常少,只能通過閱讀TWAIN官方網(wǎng)站上提供的TWAIN白皮書即TWAIN-2.4-Specification之后實現(xiàn)了應(yīng)用程序驅(qū)動掃描儀的功能。WebSocket協(xié)議是一種基于TCP(Transmission Control Protocol)連接的網(wǎng)絡(luò)協(xié)議[2]。實現(xiàn)了瀏覽器與服務(wù)器全雙工(full-duplex)通信,允許服務(wù)器主動發(fā)送信息給客戶端。本方案采用WebSocket協(xié)議進行通信[3],可以有效得解決不是所有瀏覽器都支持NPAPI(Netscape Plugin Application Programming Interface)功能的問題。

        1? TWAIN的組成

        TWAIN是一組標(biāo)準(zhǔn)協(xié)議和API接口,它為應(yīng)用程序和掃描儀、數(shù)碼相機等圖像采集設(shè)備之間定義了統(tǒng)一的規(guī)范,其主要由三部分構(gòu)成,具體包括應(yīng)用程序(Application)、數(shù)據(jù)源管理器(Source Manager)和數(shù)據(jù)源(Source)。應(yīng)用程序指使用TWAIN協(xié)議開發(fā)的軟件,比如word、Photoshop等程序,本文設(shè)計的系統(tǒng)是基于TWAIN協(xié)議開發(fā)的銀行票據(jù)掃描系統(tǒng),應(yīng)用程序不必關(guān)心數(shù)據(jù)源管理器和數(shù)據(jù)源內(nèi)部的實現(xiàn)細(xì)節(jié)。由TWAIN組織開發(fā)的數(shù)據(jù)源管理器,其主要功能是管理應(yīng)用程序和數(shù)據(jù)源之間的信息交互,承擔(dān)著應(yīng)用程序和數(shù)據(jù)源之間通信和數(shù)據(jù)傳輸?shù)娜蝿?wù)。所以,在開發(fā)應(yīng)用程序的時候,必須先裝載數(shù)據(jù)源管理器。數(shù)據(jù)源直接與硬件交互,是設(shè)備開發(fā)商開發(fā)的符合TWAIN協(xié)議標(biāo)準(zhǔn)的驅(qū)動程序。TWAIN組成結(jié)構(gòu)如圖1所示。

        2? TWAIN的工作原理

        2.1 通信方式

        應(yīng)用程序、數(shù)據(jù)源管理器和數(shù)據(jù)源三者之間的通信,僅僅可以通過DSM-Entry()和DS-Entry()兩個接口來實現(xiàn)。應(yīng)用程序在獲取圖像的過程中,不能和數(shù)據(jù)源直接通信,所有參數(shù)設(shè)置和數(shù)據(jù)獲取的請求都要通過數(shù)據(jù)源管理器來處理。當(dāng)來自應(yīng)用程序的信息到達(dá)源管理器的入口點DSM_Entry()時,源管理器的處理方式有兩種:如果DSM_Entry()調(diào)用的目的地是數(shù)據(jù)源管理器,則數(shù)據(jù)源管理器直接處理接收過來的操作;如果 DSM_Entry()調(diào)用的目的地是數(shù)據(jù)源,數(shù)據(jù)源管理器將調(diào)用相應(yīng)數(shù)據(jù)源的入口點函數(shù)DS_Entry()。

        TWAIN協(xié)議要求每個數(shù)據(jù)源都必須提供一個 DS_Entry()入口點函數(shù),TWAIN定義了100多種操作,應(yīng)用程序可以根據(jù)自己的實際需求選擇不同的參數(shù)組合來實現(xiàn)不同的功能。應(yīng)用程序?qū)⑦@些操作發(fā)送給源管理器,然后由源管理器分析并執(zhí)行這些操作。

        2.2 TWAIN狀態(tài)機

        應(yīng)用程序、數(shù)據(jù)源管理器和數(shù)據(jù)源相互通信以管理圖像數(shù)據(jù)的采集。這個過程必須是合乎邏輯的,按照定義的時序切換TWAIN狀態(tài)。例如,在加載源管理器并準(zhǔn)備好發(fā)送請求之前,應(yīng)用程序無法成功請求從數(shù)據(jù)源獲取數(shù)據(jù)。

        為了確保TWAIN狀態(tài)正確執(zhí)行,TWAIN協(xié)議定義了會話中存在的七種狀態(tài)。會話是應(yīng)用程序通過數(shù)據(jù)源管理器連接到特定數(shù)據(jù)源的過程,或者是應(yīng)用程序連接到數(shù)據(jù)源管理器的過程。狀態(tài)機的轉(zhuǎn)換是由應(yīng)用程序或數(shù)據(jù)源請求的操作引起的,可以是前向或向后的方向轉(zhuǎn)換。一般情況,狀態(tài)的切換是連續(xù)的,例如從狀態(tài)1切換到狀態(tài)2,而不能從狀態(tài)1切換到狀態(tài)3[5]。

        狀態(tài)1、2和3:僅由源管理器占用,數(shù)據(jù)源管理器不會占用大于3的狀態(tài)。

        狀態(tài)4、5、6和7:僅由數(shù)據(jù)源占用,如果數(shù)據(jù)源處于打開狀態(tài),則其狀態(tài)不會小于4,如果應(yīng)用程序使用多個源,則每個會話都是相互獨立的。TWAIN狀態(tài)切換如圖2所示。

        2.3 TWAIN工作流程

        應(yīng)用程序、數(shù)據(jù)源管理器和數(shù)據(jù)源,三者必須遵循一個操作流程才可以正確傳輸數(shù)據(jù)。操作應(yīng)該按照流程規(guī)定的邏輯順序去執(zhí)行,具體的操作流程見圖3。

        在沒有加載數(shù)據(jù)源管理器之前,應(yīng)用程序是不能要求數(shù)據(jù)源傳輸數(shù)據(jù)的。應(yīng)用程序可以使用多個數(shù)據(jù)源,每個數(shù)據(jù)源的連接都會單獨建立會話,對于打開的每個數(shù)據(jù)源,都是獨立的,相互之間無關(guān)聯(lián)。

        3? 票據(jù)掃描系統(tǒng)實現(xiàn)方案

        3.1 系統(tǒng)方案設(shè)計

        出于通用性考慮,解決不是所有瀏覽器都支持NPAPI的問題,本方案采用WebSocket技術(shù)在瀏覽器和TWAIN應(yīng)用程序之間進行通信,而TWAIN應(yīng)用程序和數(shù)據(jù)源管理器、數(shù)據(jù)源之間則采用TWAIN協(xié)議進行通信,如圖4所示。采用該方案可以保證用戶在web端驅(qū)動掃描儀的操作無需關(guān)注太多細(xì)節(jié)即可完成設(shè)計,如用戶使用的瀏覽器的種類、打印機的廠家和型號等,都可以通過該方案實現(xiàn)細(xì)節(jié)的屏蔽。

        瀏覽器和TWAIN應(yīng)用程序之間采用WebSocket技術(shù)進行通信,瀏覽器啟動TCP 客戶端,而TWAIN應(yīng)用程序啟動TCP服務(wù)端,監(jiān)聽相應(yīng)的服務(wù)端口。瀏覽器上布局三個按鈕,對應(yīng)的功能分別是選擇源、設(shè)置參數(shù)和啟動掃描,分別對應(yīng)三個不同消息。TWAIN應(yīng)用程序除了負(fù)責(zé)解析消息參數(shù),還要根據(jù)不同參數(shù)執(zhí)行不同的本地操作。

        選擇源按鈕對應(yīng)的功能是當(dāng)TWAIN應(yīng)用程序收到選擇源按鈕被點擊消息后,可以選擇使用參數(shù)MSG_USERSELECT調(diào)用TWAIN接口,數(shù)據(jù)源管理器就會彈出界面,讓用戶選擇需要的數(shù)據(jù)源(掃描儀)。如用戶無需手動選擇數(shù)據(jù)源,可以選擇使用參數(shù)MSG_GETDEFAULT,即選擇默認(rèn)數(shù)據(jù)源。

        設(shè)置參數(shù)按鈕對應(yīng)的功能是彈出參數(shù)設(shè)置的界面,此界面由設(shè)備驅(qū)動提供,用于設(shè)置一些常用參數(shù),如尺寸、分辨率等。

        當(dāng)啟動掃描按鈕被點擊時,不顯示參數(shù)設(shè)置的界面,而是直接驅(qū)動掃描儀開始啟動掃描程序。當(dāng)TW_USERINTERFACE.ShowUI為True時,會彈出參數(shù)設(shè)置對話框,用戶根據(jù)需求設(shè)置對應(yīng)參數(shù)。當(dāng)TW_USERINTERFACE.ShowUI為False時,不顯示參數(shù)設(shè)置對話框,直接啟動掃描程序,顯示掃描進度條。

        3.2 程序?qū)崿F(xiàn)步驟

        3.2.1 庫的加載

        TWAIN協(xié)議提供的所有API接口都可以通過動態(tài)庫twain_32.dll來訪問,該庫文件隨同windows操作系統(tǒng)一起發(fā)布。通過LoadLibrary()載入TWAIN庫文件,然后通過函數(shù)GetProcAddress()獲取數(shù)據(jù)源管理器入口函數(shù)地址,后續(xù)所有操作都是基于這個函數(shù)實現(xiàn)的,不同的參數(shù)序列的組合對應(yīng)不同的操作,具體實現(xiàn)方式如下。

        htwain = LoadLibrary(TEXT("TWAIN_32"));

        pEntry= (DSMENTRYPROC) GetProcAddress(

        htwain, "DSM_Entry");

        3.2.2 打開數(shù)據(jù)源管理器

        TWAIN是一個數(shù)據(jù)源管理程序,應(yīng)用程序通過設(shè)置入口函數(shù)的參數(shù)為MSG_OPENDSM,打開數(shù)據(jù)源管理器,同時需要指定一個窗口句柄,應(yīng)用程序應(yīng)該在此窗口的消息循環(huán)中處理TWAIN消息(MSG_PROCESSEVENT)。具體實現(xiàn)方式如下。

        DsmEntry(NULL, DG_CONTROL,

        DAT_PARENT,MSG_OPENDSM, &hParent);

        3.2.3 選擇數(shù)據(jù)源

        系統(tǒng)可能存在多個設(shè)備,用戶需要根據(jù)需求選擇一個數(shù)據(jù)源。選擇數(shù)據(jù)源通常有兩種方法:①選擇默認(rèn)數(shù)據(jù)源,系統(tǒng)自動選擇默認(rèn)數(shù)據(jù)源,無需用戶關(guān)心(MSG_GETDEFAULT);②彈出選擇數(shù)據(jù)源對話框,將由用戶來決定選擇其中一個數(shù)據(jù)源(MSG_USERSELECT)。彈出選擇數(shù)據(jù)源對話框如圖5所示。

        精品国产亚欧无码久久久| 蜜桃一区二区三区自拍视频| 国产丝袜在线福利观看| 蜜桃视频网站在线观看一区 | 亚洲综合网在线观看首页| 果冻国产一区二区三区| 一本久久综合亚洲鲁鲁五月夫| 一区二区国产视频在线| 青青草视频在线观看入口| 日韩肥臀人妻中文字幕一区| 国产xxx69麻豆国语对白| 国产精品视频一区二区噜噜| 天天中文字幕av天天爽| 亚洲国产成人av毛片大全| 国产成人精品一区二区三区| 久久精品国产自清天天线| 久久久精品中文无码字幕| 中文字幕亚洲在线第一页| 无码人妻少妇久久中文字幕蜜桃| 豆国产95在线 | 亚洲| 中文字幕在线久热精品| 99视频偷拍视频一区二区三区| 国产精品久久久福利| 亚洲成aⅴ人片久青草影院| 久久久久无码国产精品不卡| 国产精品亚洲一区二区极品| 国产女同舌吻1区2区| 日本最大色倩网站www| 人妻丰满熟妇av无码区hd| 亚洲精品一区二区三区日韩 | 一本久道视频无线视频试看| 丝袜美腿制服诱惑一区二区| 无码专区一ⅴa亚洲v天堂 | 国产特级全黄一级毛片不卡| 久久久精品国产亚洲av网| 偷拍一区二区视频播放器| 国产成人精品午夜二三区波多野| 久久精品波多野结衣中文字幕| 国产在线观看免费不卡视频| 丁香五月亚洲综合在线| 少妇被爽到高潮动态图|