找回密码
 立即注册

QQ登录

只需一步,快速开始

330771295

注册会员

3

主题

14

帖子

103

积分

注册会员

积分
103
最新发帖
330771295
注册会员   /  发表于:2020-3-4 11:09  /   查看:9961  /  回复:20
用TwainSession中的StopFeeder方法在扫描仪启动后,还没用扫描时,停止扫描仪是正常工作的,但是如果一旦启动扫描仪扫描了纸张后,再调用该方法就会报错,报错如下图:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

20 个回复

倒序浏览
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-3-4 11:30:28
沙发
您好,请上传一个可以重现问题的demo过来,我在我这边验证一下看看是通用的问题还是特定设备才会出现
回复 使用道具 举报
330771295
注册会员   /  发表于:2020-3-4 14:34:42
板凳
版主你好,由于集成了比较多东西,工程文件大,我这里把启动扫描的代码发出来,你新建工程粘贴下就:在窗体的Load事件里执行:
twnSession= twnSession = new TwainSession();

在开始扫描按钮执行:
Action action = new Action(StartScan);
action.BeginInvoke(ScanFinishCallBack, null);

private void StartScan()
        {
            try
            {
                ScanConfigInfo config = ScanConfigInfo.GetActivityScanConfig();
                session.Startup(IntPtr.Zero, "Qs Technologies, Inc.", "QsScanApp", "Version 1.0", "QsScanApp", TwainStartupFlags.None);
                session.SelectSource(config.ScanDevice);
                InitTwainSessionByConfig(config);
                session.AcquirePage += TwainSession_AcquirePage;
                session.Acquire(TwainUserInterfaceFlags.None);
                session.AcquirePage -= TwainSession_AcquirePage;
                session.Shutdown();
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show("启动扫描仪出错(" + ex.Message + ")", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
            finally
            {
                SetBtnEnableForStartOrStop(false);
            }
        }

private void ScanFinishCallBack(IAsyncResult result)
        {
            if (result.IsCompleted)
            {
                //SetBtnEnableForStartOrStop(false);
            }
        }

在停止按钮中执行:
session.StopFeeder();

回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-3-4 14:51:41
地板
好的,我测试一下
回复 使用道具 举报
330771295
注册会员   /  发表于:2020-3-4 15:08:15
5#
麻烦 拜托版主了!!搞了2天多了!!没法解决!!
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-3-4 15:57:58
6#
参考下面的链接中的示例,在AcquirePage事件中获取影像后就调用试试,此时session.Shutdown()尚未调用

https://www.leadtools.com/help/s ... ession-acquire.html
回复 使用道具 举报
330771295
注册会员   /  发表于:2020-3-4 16:14:49
7#
版主是这样的,放在AcquirePage事件中确实是没用问题!!但是,我们不能扫一张就停了一次扫描设备啊!!我们一般是扫了一份档案后,才会停止一次,而档案的页数是不固定的!!,所以我们才考虑把停止扫描仪放在一个按钮,由扫描人员自己决定何时关闭扫描仪
回复 使用道具 举报
330771295
注册会员   /  发表于:2020-3-4 16:24:35
8#
版主,能告诉我为啥这样调用会错嘛
回复 使用道具 举报
Richard.Ma讲师达人认证 悬赏达人认证 SpreadJS 开发认证
超级版主   /  发表于:2020-3-4 16:40:07
9#
主要是  session.Shutdown();不能先于这个来调用,倒不是说关闭设备必须要在AcquirePage事件中

session.Shutdown()请在关闭程序时再调用
回复 使用道具 举报
330771295
注册会员   /  发表于:2020-3-5 11:59:04
10#
版主,我把  session.Shutdown(); 这句话注释了!!一样是这样!!(启动扫描仪不扫纸张的情况下可以关闭扫描仪,一旦扫描了一页纸,再去关闭就报错!)麻烦版主再看看
回复 使用道具 举报
123下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部