C# Twain协议调用扫描仪,设置多图像输出模式(Multi image output) (2)

C# Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

State 1 to 2 -加载source manager 获取 DSM_Entry接口
State 2 to 3 - 打开source manager
State 3 - 选择 Source
State 3 to 4 - 打开 Source
State 4 - 设置source的Capabilities
State 4 to 5 - 请求从source获取数据
State 5 to 6 - 数据可以准备消息
State 6 to 7 - 开始数据传输
State 7 to 6 to 5 - 完成传输
State 5 to 1 - 断开连接

C# 调用

应用程序调用Source Manager,使用NTwain进行操作,在nuget里面添加引用。

C# Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

对应的github地址,里面有源码和demo: https://github.com/soukoku/ntwain/tree/v3
添加引用后打开source manager,然后可以选择Source 或者加载默认Source。

C# Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

打开Source后状态为4 则我们可以对设备进行设置,而设置这些功能存在于许多种类中,但都有默认值、当前值和可能的值
其他可选的可支持的值。这些种类可以在协议里面查到,也就是驱动里面对应的各种设置。在Twain协议里面把这些功能叫做Capabilities ,对应的NTwain包里面也封装了,比如设置扫描仪双面扫描

_twain.CurrentSource.Capabilities.CapDuplexEnabled.SetValue(BoolType.True);

C# Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

关于富士通fujitsu设置图像模式:多图像输出

这里有个大坑,在使用NTwain设置的时候通过CapPixelType设置图像模式只能设置黑白灰度彩色三种,通过如下代码:

_twain.CurrentSource.Capabilities.ICapPixelType.SetValue(PixelType.RGB)

不能设置多图输出,在驱动里面找看到图片确实只支持这几种方式,然后我一直以为是我看掉了哪个功能,看完了Twain协议,然后去网上各种找没有这方面的资料,大部分都是很简单的介绍,纠结了一周没有搞清楚。然后搜到vintasoft 这个网站的时候看到一个提问才恍然大悟,原来这个设置Twain标准协议里面确实没有这个,我估计是富士通厂家自己搞的一个。因为上面Twain通讯过程说了各种操作只能通过DSM_Entry()函数,并且只要你传入的三元组的( TW_UINT16 DAT,// data argument type: DAT_xxxx) Id正确且支持就行了。

C# Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

使用如下代码new一个多图像输出功能对象,然后像其它一样设置即可。

new CapWrapper<MutilImageOutPutType>(dataSource, (CapabilityId)0x80f2, ValueExtensions.ConvertToEnum<MutilImageOutPutType>, value => new TWOneValue { Item = (uint)value, ItemType = ItemType.UInt16 }); public enum MutilImageOutPutType : ushort { Disabled = 0, RGBAndBW = 1, BWAndRGB = 2, Enabled = 3, Auto = 4, }

最后扫描获取图片

C# Twain协议调用扫描仪,设置多图像输出模式(Multi image output)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpzjfp.html