Twain问题:是否可以从送纸器中只扫描一个文件?我正在使用来自http://www.codeproject.com/KB/dotnet/twaindotnet.aspx的代码我遇到了一个问题,因为twain在扫描了馈线中的所有文件之前不会返回控制权。如果我扫描20个或更多文档,这会导致内存使用率过高。我想一次只从进纸器扫描一个文件并保存图像并再次循环调用api。我将cap_xfercount设置为1,但这似乎没有帮助:TwCapabilitycap=newTwCapability(TwCap.XferCount,1);rc=DScap(appid,srcds,TwDG.Control,TwDAT.Capability,TwMSG.Set,cap);从我需要做什么才能从进纸器扫描文档?任何建议表示赞赏。抱歉,我不熟悉twaindotnet项目,但我对通过TWAIN进行文档扫描有很多经验。首先注意:并非所有文档进纸器都可以在单页模式下进纸;一些重要的扫描仪系列在启动后将始终扫描进纸器中的所有内容,并且无论标准如何,相当多的TWAIN驱动程序都不会遵守XFERCOUNT=1。如果您试图通过强制扫描仪扫描“单页作业”来解决问题,您将被限制在碰巧支持该扫描仪的(不确定的)扫描仪集合。TWAIN标准不需要此功能。(但是-CAP_AUTOSCAN=FALSE,XFERCOUNT=1将是一个可以尝试的组合。)有一个更好的解决方案(时间和耐心允许)-听起来你想要做的是在每个图像到达时处理和处理它,而不是将它们全部收集在内存中。弄清楚如何让TWAIN库在每个图像到达时将其写入(或写入文件),而不是将它们堆叠在内存中,您将拥有适用于所有文档进纸扫描仪的解决方案。大多数扫描仪的扫描速度也会更快……这是一个附带问题。您是否尝试过将启用馈线的功能设置为false?编辑:看起来CAP_AUTOFEED是要走的路。根据TWAIN2.0规范:CAP_AUTOFEED说明如果为TRUE,源将在获得从每页捕获的协商帧数后自动从文档进纸器送入下一页。CAP_FEEDERENABLED必须为TRUE才能使用此功能。应用程序将功能设置为TRUE以启用源的自动馈送过程,或设置为FALSE以禁用它。请在每次转帐后检查TW_PENDINGXFERS。计数以确定源是否有更多图像要传输。-1表示有更多图像要传输,但确切数量未知。CAP_FEEDERLOADED指示源的馈线是否已加载。(只要这个函数为TRUE,自动喂食过程就会继续。)可操作的顺序很重要,看这个文档www.twain.org/docs/CapOrderForWeb。编辑:这些是解决方案中的一些代码片段SetAutofeedcapFeederEnabled=_twEntities.GetCapability(TwCap.FeederEnabled,(short)1);TwRCrc=DScap(_applicationId,_sourceId,TwDG.Control,TwDAT.Capability,TwMSG.Set,capFeederEnabled);TwCapabilitycap=_twEntities.GetCapability(TwCap.XferCount,1);rc=DScap(_applicationId,_sourceId,TwDG.Control,TwDAT.Capability,TwMSG.Set,cap);然后发送Tween窗口消息时rc=DSixfer(_applicationId,_sourceId,TwDG.Image,TwDAT.ImageNativeXfer,TwMSG.Get,refhbitmap);rc=DSpxfer(_applicationId,_sourceId,TwDG.Control,TwDAT.PendingXfers,TwMSG.EndXfer,pxfr);finalreset下面扫描仪的文档在C#学习教程上面:Twain问题:是否可以从feeder中只扫描一个文件?如果分享的内容对你有用,需要了解更多C#学习教程,希望你多多关注——rc=DSpxfer(_applicationId,_sourceId,TwDG.Control,TwDAT.PendingXfers,TwMSG.Reset,pxfr);本文整理自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
