问题描述
现在用C#写了控制twain.dll的方法,借鉴了大神的代码,但现在出现了一个问题,现在数据的回传方式是通过windows监听系统消息来完成,在扫描仪完成一次扫描之后(不管是一张,2张,还是更多),扫描仪没有待扫描的文件后,才返回可以接受信息的信号,大大的延迟了有没有办法,实现扫描仪扫描完一张就即使返回数据,也就是每扫描完一张返回一次数据,跪求大神帮忙解惑,现有的代码如何boolIMessageFilter.PreFilterMessage(refMessagem){TwainCommandcmd=tw.PassMessage(refm);if(cmd==TwainCommand.Not)returnfalse;switch(cmd){caseTwainCommand.CloseRequest:{EndingScan();tw.CloseSrc();break;}caseTwainCommand.CloseOk:{EndingScan();tw.CloseSrc();break;}caseTwainCommand.DeviceEvent:{break;}caseTwainCommand.TransferReady:{ArrayListpics=tw.TransferPictures();picnumber++;//图像处理方法}break;}}returnfalse;}///<summary>///传递消息///</summary>///<paramname="m"></param>///<returns></returns>publicTwainCommandPassMessage(refMessagem){if(srcds.Id==IntPtr.Zero)returnTwainCommand.Not;intpos=GetMessagePos();winmsg.hwnd=m.HWnd;winmsg.message=m.Msg;winmsg.wParam=m.WParam;winmsg.lParam=m.LParam;winmsg.time=GetMessageTime();winmsg.x=(short)pos;winmsg.y=(short)(pos>>16);Marshal.StructureToPtr(winmsg,evtmsg.EventPtr,false);evtmsg.Message=0;TwRCrc=DSevent(appid,srcds,TwDG.Control,TwDAT.Event,TwMSG.ProcessEvent,refevtmsg);if(rc==TwRC.NotDSEvent)returnTwainCommand.Not;if(evtmsg.Message==(short)TwMSG.XFerReady)returnTwainCommand.TransferReady;if(evtmsg.Message==(short)TwMSG.CloseDSReq)returnTwainCommand.CloseRequest;if(evtmsg.Message==(short)TwMSG.CloseDSOK)returnTwainCommand.CloseOk;if(evtmsg.Message==(short)TwMSG.DeviceEvent)returnTwainCommand.DeviceEvent;returnTwainCommand.Null;}
解决方案
解决方案二:
怎么没人,求大神,求帮顶,自己顶
解决方案三:
怎么没人,求大神,求帮顶,自己顶
解决方案四:
晕.扫描仪扫描完,不是保存成PDF格式吗每扫描一张就去获取文件是要闹哪样,文件根本不完整啊
解决方案五:
即使不是PDF格式,而是tif图片格式你通信的时候也是要把图片都弄出来,再比对哪些曾经读取过了,哪些没有读取过难道有方法只读取刚刚扫描的文件?等文件完整了一次性读取不是更有效率吗
解决方案六:
引用4楼Z65443344的回复:
即使不是PDF格式,而是tif图片格式你通信的时候也是要把图片都弄出来,再比对哪些曾经读取过了,哪些没有读取过难道有方法只读取刚刚扫描的文件?等文件完整了一次性读取不是更有效率吗
现在是要做一个,试卷扫描系统,扫描仪上放置一沓试卷,扫描完一张,程序接收数据,对接收的数据进行处理,这样扫描到有问题的试卷可以及时处理,而不用等待所有扫描完了再处理
解决方案七:
这个问题很值得解决啊,工作效率能够大大的提升,同样求解,现金答谢,请私信我
解决方案八:
从你贴出的代码,什么主要逻辑都看不出。既然你贴不出主要的逻辑,我就知道你为什么会提出这个问题了。建议你找会调用这个代码的、当初的程序员来重新设计程序。你贴出的代码根本没有你的问题所涉及的部分的逻辑。我给你打一个比方,你就明白我给你的是什么提示。比如说有一个土石方工程需要3个拖拉机操作,你现在问“请问怎样才能让3个拖垃圾合理安排工作进度而不相互影响使用?”,然后你就贴出了3台拖拉机的操作说明书。你贴出这种说明书,说明你根本不是能够负责土石方工程的那几个人之一,而只是临时找来的。
解决方案九:
这个我曾经使用过,本来就是扫描一张保存一张图片的。
解决方案十:
你能共享一下代码吗,我现在也在做twain扫描仪,你有找到那个twain扫描仪控件吗,你用的是那个dll文件啊?
解决方案十一:
你现在能不显示用户界面来设置扫描仪的参数?比如分辨率和扫描的是彩色,黑白还是灰度?
解决方案十二:
这个不需要采用windows监听吧twain都是扫描一张保存一张的