2014-02-18 52 views
4

我正在研究應用程序,其中我的應用程序需要以圖像格式從掃描儀獲取輸入。從連接到USB端口或串行端口的掃描儀獲取輸入.net

這是一個wpf應用程序,掃描儀連接到系統,用戶將文檔放入掃描儀並在應用程序中打印按鈕以掃描文檔,然後應用程序必須將掃描的文檔保存爲系統中的圖像。

我不想使用任何付費組件,我相信必須有一些內置的方式來從端口讀取輸入。

+0

檢出http:// stackoverflow。com/questions/8925763/wia-scanning-in-a-wpf-application – Rachel

回答

4

我在哪裏工作,我們爲Windows圖像採集編寫了一個自定義包裝。這是一個非常簡單的例子,應該從用戶選擇的掃描儀中捕獲它。

//Reference "Windows Image Acquisition Library v2.0" on the COM tab. 

private void Button1_Click(object sender, EventArgs e) 
{ 
    var dialog = new WIA.CommonDialog(); 
    var file = dialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType); 
    file.SaveFile("C:\Temp\WIA." + file.FileExtension); 
} 

如果你想這樣做,而不顯示任何對話框,這裏有整齊地舉辦了名爲WIAScanner一類的靜態函數的一些代碼真棒文章:http://miljenkobarbir.com/using-a-scanner-without-dialogs-in-net/

從物品使用的代碼,假設你有一臺掃描儀,並希望只使用一個,或者你只是想使用該系統第一臺掃描儀,你可以這樣做:

private void Button1_Click(object sender, EventArgs e) 
{ 
    var scannerIds = WIAScanner.GetDevices(); 

    if(scannerIds.Count > 0) { 
     var images = WIAScanner.Scan(scannerIds[0]); 

     //Process the images here. 
    } 
} 

我希望這有助於。

+0

它的工作原理。謝謝。但還有一件事是我想要的,那就是用一些我不想要的對話框來提示。選擇掃描儀並選擇圖像類型等。我如何從代碼中設置它。 – MegaMind

+0

添加了關於如何在沒有對話框的情況下進行文章鏈接。它非常優雅和可重用的代碼。 –

+0

我清理了我的迴應,使其更適用於普通觀衆以及您的問題。 –

0

您acctually有幾個選項:

1)TWAIN

這是一個API下LGPL許可證是 「調節軟件和數字成像設備之間的通信」 並運行, 看到WikipediaHomepage

2)Windows圖像採集

這是微軟專有的。 「WIA平臺使成像/圖形應用程序能夠與成像硬件交互,並標準化不同應用程序和掃描儀之間的交互。」

看到Wikipedia 看到Homepage

3)圖像和掃描儀接口規範(ISIS)

它提供了一個完整的SDK用於.NET應用程序,所以可能是最有用的一個給你,但支付解決方案, 看到Wikipedia 看到Homepage

4)做你自己

如果您想自己創建通信層,則必須確保至少該設備具有有效的USB驅動程序。要訪問任何硬件,您必須引入非託管代碼(即C++),因爲大多數這些設備驅動程序都提供了C++ API,這意味着要爲基本的IO操作創建一個庫,然後爲您的應用程序創建一個c#封裝器。