biz_pop.cs 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8. using System.Runtime.InteropServices;
  9. using System.Threading;
  10. using System.Drawing.Imaging;
  11. using System.IO;
  12. using Dynamsoft.Barcode;
  13. using Dynamsoft.TWAIN;
  14. using Dynamsoft.Core;
  15. using Dynamsoft.UVC;
  16. using Dynamsoft.OCR;
  17. using Dynamsoft.PDF;
  18. using Dynamsoft.Core.Annotation;
  19. using Dynamsoft.TWAIN.Interface;
  20. using Dynamsoft.Core.Enums;
  21. using Dynamsoft.Common;
  22. using HXX.Scanner.Common;
  23. using HXX.Scanner.Biz.Socket;
  24. namespace HXX.Scanner.Biz
  25. {
  26. /*
  27. * 第三方组件,注意product key有过期的问题,倘若过期,扫描出来的图片将带有水印
  28. */
  29. /// <summary>
  30. /// 第三方弹出框扫描
  31. /// </summary>
  32. public class biz_pop : IAcquireCallback
  33. {
  34. public biz_pop()
  35. {
  36. //m_StrProductKey = m_StrProductKey + ";" + LicenseLoader.ReadLocalLicense();
  37. m_StrProductKey = "123";
  38. m_TwainManager = new TwainManager(m_StrProductKey);
  39. }
  40. //private string m_StrProductKey = "t0068MgAAAGoy8bTO6r8g5EB109cYYCRpr5Ug/nABLQcqkWLVjqs85l2Qa7pNIa/TQDq+d9RHDc7MVYR+5AEiDrFJsUOcqlI=";
  41. private string m_StrProductKey = "123";
  42. private TwainManager m_TwainManager = null;
  43. /// <summary>
  44. /// 主扫描方法
  45. /// </summary>
  46. /// <param name="index"></param>
  47. public void scan(int index)
  48. {
  49. m_TwainManager.CloseSource();
  50. m_TwainManager.SelectSourceByIndex(index);
  51. m_TwainManager.OpenSource();
  52. m_TwainManager.IfShowUI = false;
  53. m_TwainManager.IfFeederEnabled = true;
  54. m_TwainManager.IfDuplexEnabled = config_environment.scan_ab;
  55. m_TwainManager.IfDisableSourceAfterAcquire = true;
  56. m_TwainManager.XferCount = get_xferCount();
  57. m_TwainManager.PixelType = Dynamsoft.TWAIN.Enums.TWICapPixelType.TWPT_GRAY;
  58. m_TwainManager.BitDepth = 8;
  59. m_TwainManager.Resolution = 150;
  60. m_TwainManager.AcquireImage(this as IAcquireCallback);
  61. }
  62. /// <summary>
  63. /// 主动关闭自己,方便其他TW组件再次连接
  64. /// </summary>
  65. public void close()
  66. {
  67. try
  68. {
  69. m_TwainManager.CloseSource();
  70. }
  71. catch (Exception ee)
  72. {
  73. LogManager.WriteLog(ee);
  74. }
  75. }
  76. public bool IfGetImageInfo
  77. {
  78. get
  79. {
  80. return true;
  81. }
  82. }
  83. public bool IfGetExtImageInfo
  84. {
  85. get
  86. {
  87. return true;
  88. }
  89. }
  90. /// <summary>
  91. /// 批次扫描结束事件
  92. /// </summary>
  93. public void OnPostAllTransfers()
  94. {
  95. twain32_events._twain32_AcquireCompleted(null, null);
  96. }
  97. /// <summary>
  98. /// 单张扫描结束事件
  99. /// </summary>
  100. public bool OnPostTransfer(Bitmap bit, string info)
  101. {
  102. try
  103. {
  104. var fileInfo = file_manager.get_file_info2();
  105. var file = fileInfo.file_full_name.Replace("bmp", "jpeg");
  106. bit.Save(file, ImageFormat.Jpeg);
  107. if (config_environment.scan_state)
  108. {
  109. biz_scanHistory.add_history();
  110. file_manager.save(file);
  111. }
  112. }
  113. catch (Exception ex)
  114. {
  115. LogManager.WriteLog(ex);
  116. }
  117. return true;
  118. }
  119. /// <summary>
  120. /// 批次扫描开始前事件
  121. /// </summary>
  122. public void OnPreAllTransfers()
  123. {
  124. var nn = m_TwainManager.Duplex;
  125. biz_engine_prepare.prepare();
  126. }
  127. /// <summary>
  128. /// 单张扫描开始前事件
  129. /// </summary>
  130. public bool OnPreTransfer()
  131. {
  132. return true;
  133. }
  134. /// <summary>
  135. /// 弹框被关闭事件
  136. /// </summary>
  137. public void OnSourceUIClose()
  138. {
  139. }
  140. /// <summary>
  141. /// 弹框点取消后事件
  142. /// </summary>
  143. public void OnTransferCancelled()
  144. {
  145. biz_scanHistory.end_new();
  146. biz_scanFinishBatch.Work(2, true);
  147. //config_environment.stop_status = 2;
  148. biz_scanFinish.Work(null, new ResponseEntity<response_http_uploadImg2>() { Status = 0, Message = "扫描被中止" });
  149. biz_scanFinishBatch.Work(7, false);
  150. biz_scanFinishBatch.Work(1, false);
  151. }
  152. /// <summary>
  153. /// 数据传输错误事件
  154. /// </summary>
  155. public void OnTransferError()
  156. {
  157. config_environment.scan_state = false;
  158. biz_scanHistory.end_new();
  159. biz_scanFinish.Work(null, new ResponseEntity<response_http_uploadImg2>() { Status = 0, Message = "发生错误" });
  160. biz_scanFinishBatch.Work(3, true);
  161. }
  162. /// <summary>
  163. /// 获取扫描数量上限 1:1张 2:2张 -1:无限
  164. /// </summary>
  165. private static short get_xferCount()
  166. {
  167. if (config_environment.scan_type == ScanType.Formal)
  168. {
  169. return -1;
  170. }
  171. else
  172. {
  173. if (config_environment.scan_ab)
  174. {
  175. return 2;
  176. }
  177. else
  178. {
  179. return 1;
  180. }
  181. }
  182. }
  183. }
  184. }