1. 程式人生 > >《.NET中掃描器控制的實現》

《.NET中掃描器控制的實現》

原始碼及應用例項我放入我的資源中

摘要

windows圖象應用程式中,用於掃描的主要API是不幸的,是新的.NET Freamework框架沒有內建支援TWAIN.因此,我們必須去寫一個方法去使.NET下可以使用這個API。這個簡單的程式碼包含的不是最終的功能介紹,只是一些並於.NET應用開發的TWAIN程式設計基本的步驟

祥細設計<?xml:namespace prefix = o />

第一步是最重要的部分,設定TWAIN.H埠,這部分程式碼在TwainDefs.cs中可以找到。主要的邏輯程式碼在TwainLib.csTwain 類中。TWAIN API 存在於Windows DLL

Twain_32.dll中,我們必須用.NET DLL 輸入機制來實現互動性程式碼。這個DLL的中樞是DSM_Entry(),序數1#方法輸出TWAIN的入口指標。它呼叫一些許多引數,最後一個是可變型別!如果在宣告多個變數去呼叫,這是最好的,像如下:

[DllImport("twain_32.dll", EntryPoint="#1")]

private static extern TwRC DSMparent(

[In, Out] TwIdentity origin,

IntPtr zeroptr,

TwDG dg, TwDAT dat, TwMSG msg,

ref IntPtr refptr );

Twain 類的第5步如下:

class Twain

{

Init();

Select();

Acquire();

PassMessage();

TransferPictures();

}

對於某些“回叫訊號”,TWAIN呼叫特殊Windows通訊,並且捕獲應用環路資訊。在.NET中,唯一的捕獲方式是呼叫IMessageFilter.PreFilterMessage(),過濾器將在呼叫Application.AddMessageFilter()時被啟用。在過濾器的方法中,我們將轉送每一個資訊給Twain.PassMessage(),並顯示操作提示(Twain命令選單).

例項應用

這個例子是Windows

視窗MDI-style應用。它有兩個TWAIN-related選單選項 Select Source… Acquire …,一個是影象掃描,我們可以把掃描的影象儲存成任何的GDI+支援的檔案格式(BMPGIFTIFFJPEF…

侷限性

程式碼除錯環境是:windows 2000/SP2,日本愛普生科技公司 USB掃描器 。

掃描影象埠:Windows DIB(TWAIN spec呼叫)