Ejemplo n.º 1
0
        /// <summary>
        /// 扫描仪设置
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Setting_Click(object sender, RoutedEventArgs e)
        {
            if (!initFlag)
            {
                InitDataSrcList();
                configFlag = false;
            }

            bool failedFlag = false;//函数执行错误标志

            try
            {
                //查询用户选择的扫描仪名称
                string selectedName = GetSelectedScannerName();
                if (selectedName == null)
                {
                    MessageBox.Show("在进行参数配置前请先选择扫描仪");
                    failedFlag = true;
                    return;
                }
                else
                {
                    //将扫描仪选择当前DSM管理的扫描仪
                    if (!twSession.SelectAsCurrentDS(selectedName))
                    {
                        MessageBox.Show("设置扫描仪失败,扫描仪可能不存在");
                        failedFlag = true;
                        return;
                    }

                    //调用扫描仪自带界面
                    if (UISelected.IsChecked == true)
                    {
                        //弹出扫描仪自带的参数设置界面
                        string info = null;
                        twSession.PrepareDS(out info, false);

                        twSession.EnableDSUIOnly(out info);
                        //检查控件是否加载了消息处理函数
                        if (!msgfilter)
                        {
                            msgfilter = true;
                            ComponentDispatcher.ThreadFilterMessage
                                += new ThreadMessageEventHandler(MessageFilter);
                            messageLogger.Debug("加载消息处理函数。");
                        }
                    }

                    //调用参数设置统一界面
                    else if (UISelected.IsChecked == false)
                    {
                        //生成并初始化参数配置界面
                        ScanConfig scanConfig = new ScanConfig();
                        if (!scanConfig.Init(twSession, capList))
                        {
                            scanConfig.Close();
                            MessageBox.Show("初始化扫描仪失败,请确定扫描仪与计算机连接正常");
                            failedFlag = true;
                            return;
                        }
                        scanConfig.ShowDialog();
                        configFlag = (bool)scanConfig.DialogResult;
                    }
                    else
                    {
                        logger.Debug("UISelected.IsChecked = ?");
                    }
                }
            }
            catch (Exception exp)
            {
                logger.Error("在与扫描仪交互过程中发生异常,异常信息: " + exp.Message);
                MessageBox.Show("在与扫描仪交互过程中发生异常,详细信息请查看日志");
                failedFlag = true;
            }
            finally
            {
                if (failedFlag)
                {
                    if (twSession.State >= TwState.OpenDS)
                    {
                        twSession.DisableDS();
                    }
                    EndingScan();
                }
            }
        }