biz_pop2.cs 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using NTwain;
  7. using NTwain.Data;
  8. using HXX.Scanner.Common;
  9. using HXX.Scanner.Biz.Socket;
  10. namespace HXX.Scanner.Biz
  11. {
  12. public class biz_pop2
  13. {
  14. private DataSource source = null;
  15. private TwainSession session = null;
  16. private bool flag = false;
  17. public void scan(Device_Scanner scanner,System.Windows.Forms.Form main_window)
  18. {
  19. session = new TwainSession(DataGroups.Image);
  20. session.DataTransferred += Session_DataTransferred;
  21. session.DeviceEvent += Session_DeviceEvent;
  22. session.SourceChanged += Session_SourceChanged;
  23. session.TransferCanceled += Session_TransferCanceled;
  24. session.TransferError += Session_TransferError;
  25. session.TransferReady += Session_TransferReady;
  26. session.PropertyChanged += Session_PropertyChanged;
  27. session.SourceDisabled += Session_SourceDisabled;
  28. session.StateChanged += Session_StateChanged;
  29. session.Open();
  30. // 2. 获取设备列表(3.7.6 官方唯一方式)
  31. var sources = session.GetSources();
  32. //source = sources[index];
  33. foreach(var ss in sources)
  34. {
  35. if (ss.Name == scanner.deviceName)
  36. {
  37. source = ss;
  38. }
  39. }
  40. // 3. 选择设备(用默认扫描仪,不弹选择框)
  41. //DataSource source = sources.FirstOrDefault();
  42. if (source == null)
  43. {
  44. //MessageBox.Show("未找到扫描仪");
  45. session.Close();
  46. return;
  47. }
  48. // 4. 打开设备
  49. source.Open();
  50. // 5. 弹出驱动设置窗口(你要的功能!)
  51. source.Enable(SourceEnableMode.ShowUI, false, main_window.Handle);
  52. // 6. 关闭
  53. //source.Close();
  54. //session.Close();
  55. }
  56. private void Session_StateChanged(object sender, EventArgs e)
  57. {
  58. if (session.State >= 5)
  59. {
  60. flag = true;
  61. }
  62. if (flag)
  63. {
  64. if (session.State == 4)
  65. {
  66. try
  67. {
  68. source.Close();
  69. session.Close();
  70. }
  71. catch (Exception ee)
  72. {
  73. }
  74. }
  75. }
  76. }
  77. private void Session_SourceDisabled(object sender, EventArgs e)
  78. {
  79. var aa = 1;
  80. }
  81. private void Session_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
  82. {
  83. var nn = e.PropertyName;
  84. var aa = 1;
  85. }
  86. private void Session_TransferReady(object sender, TransferReadyEventArgs e)
  87. {
  88. var aa = 1;
  89. }
  90. private void Session_TransferError(object sender, TransferErrorEventArgs e)
  91. {
  92. var aa = 1;
  93. }
  94. private void Session_TransferCanceled(object sender, TransferCanceledEventArgs e)
  95. {
  96. var aa = 1;
  97. }
  98. private void Session_SourceChanged(object sender, EventArgs e)
  99. {
  100. var aa = 1;
  101. }
  102. private void Session_DeviceEvent(object sender, DeviceEventArgs e)
  103. {
  104. var aa = 1;
  105. }
  106. private void Session_DataTransferred(object sender, DataTransferredEventArgs e)
  107. {
  108. var aa = 1;
  109. }
  110. public void close()
  111. {
  112. try
  113. {
  114. source.Close();
  115. session.Close();
  116. }
  117. catch (Exception ee)
  118. {
  119. LogManager.WriteLog(ee);
  120. }
  121. }
  122. }
  123. }