C#使用Twain协议开发一个高扫仪对接功能

 更新时间:2024年02月03日 09:31:12   作者:搬砖的诗人Z  
这篇文章主要为大家详细介绍了C#如何使用Twain协议开发一个高扫仪对接功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

请先安装TwainDotNet

实现代码

        private static AreaSettings AreaSettings = new AreaSettings(Units.Centimeters, 0.1f, 5.7f, 0.1F + 2.6f, 5.7f + 2.6f);

        Twain _twain;
        ScanSettings _settings;

  public ScanForm(string tName, string cNumber, List<string> names, CaseSelectForm form)
  {
      InitializeComponent();

      try
      {
          SelectForm = form;

          this.DoubleBuffered = true;//设置本窗体
          SetStyle(ControlStyles.UserPaint, true);
          SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
          SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲

          myNames = names;
          _typeName = tName;
          _caseNumber = cNumber;
          this.Text = "扫描文件 - " + tName + " - " + cNumber;

          _twain = new Twain(new WinFormsWindowMessageHook(this));
          _twain.TransferImage += delegate (Object sender, TransferImageEventArgs args)
          {
              if (args.Image != null)
              {
                  Bitmap image = new Bitmap(args.Image);

                  string temp = DateTime.Now.ToString("yyyyMMddHHmmssffff") + ".jpg";
                  //缓存图片到磁盘
                  string path = tempPath + temp;
                  image.Save(path, ImageFormat.Jpeg);
                  tempPicUrl.Add(path);

                  var resizeImg = ImageHelper.KiResizeImage(image, 0.2f);
                  //缓存图片到磁盘
                  string path2 = resizePath + temp;
                  resizeImg.Save(path2, ImageFormat.Jpeg);

                  //scanImages.Add(image);
                  imageList1.Images.Add(image);

                  image.Dispose();
              }
              args.Image.Dispose();
          };
          _twain.ScanningComplete += delegate
          {
              for (int i = LastScanCount; i < imageList1.Images.Count; i++)
              {
                  ListViewItem li = new ListViewItem();

                  li.Text = i.ToString();
                  li.ImageIndex = i;
                  mlistview_Image.Items.Add(li);
                  ImageStateModels.Add(new ImageStateModel
                  {
                      Checked = false,
                      Person = "无",
                      tempPicUrl = tempPicUrl[i],
                      Name = i.ToString()
                  });
              }
              LastScanCount = ImageStateModels.Count;
              mlbl_PageCount.Text = string.Format("本次扫描 {0} 页", ImageStateModels.Count);
              Enabled = true;
              this.Activate();
              this.WindowState = FormWindowState.Maximized;
          };
          // ocr = new TesseractEngine("./tessdata", "chi_sim");

          InitInfo();
          InitCut();
          InitSearch();
          InitWords();
          DeleteFileByDir();
          InitMatchImg();
      }
      catch (Exception ex)
      {
          log4netHelper.Error("---报错方法--ScanForm");
          log4netHelper.Error(ex.Message);
          log4netHelper.Error(ex.StackTrace);
          log4netHelper.Error(ex.ToString());
          log4netHelper.Error("---end---");
          MessageBox.Show("请检查设备是否开启或者链接!");
      }
  }
   private void Init()
   {
       try
       {
           mcb_userName.DataSource = myNames;

           mtbPage_Set.SelectedIndex = 0;

           string savetype = ConfigHelper.ReadConfigPath("savetype.txt");
           if (savetype.Trim() == "1")
           {
               mcBox_savetype.Text = ".jpg";
           }
           else if (savetype.Trim() == "0")
           {
               mcBox_savetype.Text = ".PDF";
           }
           _saveType = savetype;
       }
       catch (Exception ex)
       {
           log4netHelper.Error("---报错方法--Init");
           log4netHelper.Error(ex.Message);
           log4netHelper.Error(ex.StackTrace);
           log4netHelper.Error(ex.ToString());
           log4netHelper.Error("---end---");
       }
   }

到此这篇关于C#使用Twain协议开发一个高扫仪对接功能的文章就介绍到这了,更多相关C# Twain开发高扫仪对接内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C#中timer类的用法总结

    C#中timer类的用法总结

    System.Windows.Forms.Timer是应用于WinForm中的,它是通过Windows消息机制实现的,类似于VB或Delphi中的Timer控件,内部使用API SetTimer实现的。它的主要缺点是计时不精确,而且必须有消息循环
    2013-10-10
  • C# DataSet查看返回结果集的实现

    C# DataSet查看返回结果集的实现

    这篇文章主要介绍了C# DataSet查看返回结果集的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • C#简单爬虫案例分享

    C#简单爬虫案例分享

    这篇文章主要为大家分享了C#简单爬虫案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • c#利用system.net发送html格式邮件

    c#利用system.net发送html格式邮件

    这篇文章主要介绍了c#利用system.net发送html格式邮件的示例,带有抄送、密送、附件功能,需要的朋友可以参考下
    2014-02-02
  • WinForm之BindingSource基础操作实例教程

    WinForm之BindingSource基础操作实例教程

    这篇文章主要介绍了WinForm之BindingSource基础操作,对BindingSource组建的用法进行较为深入的实例分析,需要的朋友可以参考下
    2014-08-08
  • Unity UGUI的RectMask2D遮罩组件的介绍使用

    Unity UGUI的RectMask2D遮罩组件的介绍使用

    这篇文章主要为大家介绍了Unity UGUI的RectMask2D遮罩组件的介绍使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-07-07
  • C# 表达式树Expression Trees的知识梳理

    C# 表达式树Expression Trees的知识梳理

    本篇文章主要介绍了表达式树 Expression Trees的基础知识:Lambda 表达式创建表达式树;API 创建表达式树;编译表达式树;执行表达式树;修改表达式树等等,具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • c#批量整理xml格式示例

    c#批量整理xml格式示例

    这篇文章主要介绍了c#批量整理xml格式示例,win7的x64和x86系统下已验证通过,需要的朋友可以参考下
    2014-03-03
  • 如何使用C#获取windows系统资源使用情况

    如何使用C#获取windows系统资源使用情况

    这篇文章主要为大家详细介绍了如何使用C#语言获取windows系统资源使用情况,文中的示例代码讲解详细, 感兴趣的小伙伴可以跟随小编一起学习一下
    2025-07-07
  • C#异步绑定数据实现方法

    C#异步绑定数据实现方法

    这篇文章主要介绍了C#异步绑定数据实现方法,实例分析了C#操作数据库及异步绑定的相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-09-09

最新评论