从连接到USB端口或串行端口的扫描仪获取输入.net
我正在研究应用程序,其中我的应用程序需要以图像格式从扫描仪获取输入。从连接到USB端口或串行端口的扫描仪获取输入.net
这是一个wpf应用程序,扫描仪连接到系统,用户将文档放入扫描仪并在应用程序中打印按钮以扫描文档,然后应用程序必须将扫描的文档保存为系统中的图像。
我不想使用任何付费组件,我相信必须有一些内置的方式来从端口读取输入。
我在哪里工作,我们为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.
}
}
我希望这有助于。
它的工作原理。谢谢。但还有一件事是我想要的,那就是用一些我不想要的对话框来提示。选择扫描仪并选择图像类型等。我如何从代码中设置它。 – MegaMind
添加了关于如何在没有对话框的情况下进行文章链接。它非常优雅和可重用的代码。 –
我清理了我的回应,使其更适用于普通观众以及您的问题。 –
您acctually有几个选项:
1)TWAIN
这是一个API下LGPL许可证是 “调节软件和数字成像设备之间的通信” 并运行, 看到Wikipedia 看Homepage
2)Windows图像采集
这是微软专有的。 “WIA平台使成像/图形应用程序能够与成像硬件交互,并标准化不同应用程序和扫描仪之间的交互。”
3)图像和扫描仪接口规范(ISIS)
它提供了一个完整的SDK用于.NET应用程序,所以可能是最有用的一个给你,但支付解决方案, 看到Wikipedia 看到Homepage
4)做你自己
如果您想自己创建通信层,则必须确保至少该设备具有有效的USB驱动程序。要访问任何硬件,您必须引入非托管代码(即C++),因为大多数这些设备驱动程序都提供了C++ API,这意味着要为基本的IO操作创建一个库,然后为您的应用程序创建一个c#封装器。
检出http:// stackoverflow。com/questions/8925763/wia-scanning-in-a-wpf-application – Rachel