biz_pop2.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using System.Drawing;
  7. using System.Drawing.Imaging;
  8. using NTwain;
  9. using NTwain.Data;
  10. using HXX.Scanner.Common;
  11. using HXX.Scanner.Biz.Socket;
  12. namespace HXX.Scanner.Biz
  13. {
  14. public class biz_pop2
  15. {
  16. private DataSource source = null;
  17. private TwainSession session = null;
  18. private bool flag = false;
  19. public void scan(Device_Scanner scanner,System.Windows.Forms.Form main_window)
  20. {
  21. session = new TwainSession(DataGroups.Image);
  22. session.DataTransferred += Session_DataTransferred;
  23. session.DeviceEvent += Session_DeviceEvent;
  24. session.SourceChanged += Session_SourceChanged;
  25. session.TransferCanceled += Session_TransferCanceled;
  26. session.TransferError += Session_TransferError;
  27. session.TransferReady += Session_TransferReady;
  28. session.PropertyChanged += Session_PropertyChanged;
  29. session.SourceDisabled += Session_SourceDisabled;
  30. session.StateChanged += Session_StateChanged;
  31. session.Open();
  32. // 2. 获取设备列表(3.7.6 官方唯一方式)
  33. var sources = session.GetSources();
  34. //source = sources[index];
  35. foreach(var ss in sources)
  36. {
  37. if (ss.Name == scanner.deviceName)
  38. {
  39. source = ss;
  40. }
  41. }
  42. // 3. 选择设备(用默认扫描仪,不弹选择框)
  43. //DataSource source = sources.FirstOrDefault();
  44. if (source == null)
  45. {
  46. //MessageBox.Show("未找到扫描仪");
  47. session.Close();
  48. return;
  49. }
  50. biz_engine_prepare.prepare();
  51. // 4. 打开设备
  52. source.Open();
  53. // 5. 弹出驱动设置窗口
  54. source.Enable(SourceEnableMode.ShowUI, false, main_window.Handle);
  55. // 6. 关闭
  56. //source.Close();
  57. //session.Close();
  58. }
  59. private void Session_StateChanged(object sender, EventArgs e)
  60. {
  61. if (session.State >= 5)
  62. {
  63. flag = true;
  64. }
  65. if (flag)
  66. {
  67. if (session.State == 4)
  68. {
  69. try
  70. {
  71. source.Close();
  72. session.Close();
  73. }
  74. catch (Exception ee)
  75. {
  76. }
  77. }
  78. }
  79. }
  80. private void Session_SourceDisabled(object sender, EventArgs e)
  81. {
  82. twain32_events._twain32_AcquireCompleted(null, null);
  83. //this.close();
  84. }
  85. private void Session_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
  86. {
  87. var nn = e.PropertyName;
  88. var aa = 1;
  89. }
  90. private void Session_TransferReady(object sender, TransferReadyEventArgs e)
  91. {
  92. var aa = 1;
  93. }
  94. private void Session_TransferError(object sender, TransferErrorEventArgs e)
  95. {
  96. config_environment.scan_state = false;
  97. biz_scanHistory.end_new();
  98. biz_scanFinish.Work(null, new ResponseEntity<response_http_uploadImg2>() { Status = 0, Message = "发生错误" });
  99. biz_scanFinishBatch.Work(3, true);
  100. }
  101. private void Session_TransferCanceled(object sender, TransferCanceledEventArgs e)
  102. {
  103. var aa = 1;
  104. }
  105. private void Session_SourceChanged(object sender, EventArgs e)
  106. {
  107. var aa = 1;
  108. }
  109. private void Session_DeviceEvent(object sender, DeviceEventArgs e)
  110. {
  111. var aa = 1;
  112. }
  113. private void Session_DataTransferred(object sender, DataTransferredEventArgs e)
  114. {
  115. try
  116. {
  117. var stream = e.GetNativeImageStream();
  118. Image img = Image.FromStream(stream);
  119. var fileInfo = file_manager.get_file_info2();
  120. var file = fileInfo.file_full_name.Replace("bmp", "jpeg");
  121. img.Save(file, ImageFormat.Jpeg);
  122. //if (config_environment.scan_state)
  123. {
  124. biz_scanHistory.add_history();
  125. file_manager.save(file);
  126. }
  127. }
  128. catch (Exception ex)
  129. {
  130. LogManager.WriteLog(ex);
  131. }
  132. }
  133. public void close()
  134. {
  135. try
  136. {
  137. source.Close();
  138. session.Close();
  139. }
  140. catch (Exception ee)
  141. {
  142. LogManager.WriteLog(ee);
  143. }
  144. }
  145. }
  146. }