《.NET中扫描仪控制的实现》


《.NET中扫描仪控制的实现》_第1张图片

源码及应用实例我放入我的资源中

摘要

windows图象应用程序中,用于扫描的主要APITWAIN www.twain.org .不幸的,是新的.NET Freamework框架没有内置支持TWAIN.因此,我们必须去写一个方法去使.NET下可以使用这个API。这个简单的代码包含的不是最终的功能介绍,只是一些并于.NET应用开发的TWAIN编程基本的步骤

祥细设计

第一步是最重要的部分,设置TWAIN.H端口,这部分代码在TwainDefs.cs中可以找到。主要的逻辑代码在TwainLib.csTwain 类中。TWAIN API 存在于Windows DLLTwain_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调用)

你可能感兴趣的:(《.NET中扫描仪控制的实现》)