USB.cs 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. //using LibUsbDotNet;
  2. //using LibUsbDotNet.Main;
  3. using System;
  4. using System.Text;
  5. using System.Windows.Forms;
  6. namespace BaseLibComm
  7. {
  8. //public class LibUsbDotNetOper
  9. //{
  10. // //public static LibUsbDotNetOper usbOperIns = new LibUsbDotNetOper();
  11. // public static int vid = 0x0483; //厂商VID号
  12. // public static int pid = 0x9999; //厂商PID号
  13. // public static string epNumStr = "1";//Open,writeEndpointReader设定
  14. // public static bool AsHex = false;//接收数据类型为16进制
  15. // public string readData; //接收的数据
  16. // private UsbEndpointReader mEpReader;
  17. // public bool autoRead = true;//是否自动接收数据。
  18. // private UsbEndpointWriter mEpWriter;
  19. // public UsbDevice MyUsbDevice;
  20. // public static UsbDeviceFinder MyUsbFinder = new UsbDeviceFinder(vid, pid);
  21. // /// <summary>
  22. // /// 打开USB设备
  23. // /// </summary>
  24. // /// <returns></returns>
  25. // public bool OpenDevice()
  26. // {
  27. // CloseDevice();
  28. // MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder);
  29. // if (MyUsbDevice == null)
  30. // {
  31. // MessageBox.Show("打开指定USB设备失败");
  32. // return false;
  33. // }
  34. // else
  35. // {
  36. // try
  37. // {
  38. // IUsbDevice wholeUsbDevice = MyUsbDevice as IUsbDevice;
  39. // if (!ReferenceEquals(wholeUsbDevice, null))
  40. // {
  41. // //这是一个“完整的”USB设备。在使用之前,
  42. // //必须选择所需的配置和接口。
  43. // //选择config #1
  44. // wholeUsbDevice.SetConfiguration(1);
  45. // // 接口地址重置 #0
  46. // wholeUsbDevice.ClaimInterface(0);
  47. // }
  48. // byte epNum = byte.Parse(epNumStr);
  49. // mEpReader = MyUsbDevice.OpenEndpointReader((ReadEndpointID)(epNum | 0x80));
  50. // mEpWriter = MyUsbDevice.OpenEndpointWriter((WriteEndpointID)epNum);
  51. // if (autoRead)
  52. // {
  53. // mEpReader.DataReceivedEnabled = true;//自动收数据
  54. // mEpReader.DataReceived += new EventHandler<EndpointDataEventArgs>(mEp_DataReceived);
  55. // }
  56. // mEpReader.Flush();
  57. // return true;
  58. // }
  59. // catch (Exception ex)
  60. // {
  61. // MessageBox.Show(ex.ToString());
  62. // if (MyUsbDevice.IsOpen) MyUsbDevice.Close();
  63. // MyUsbDevice = null;
  64. // return false;
  65. // }
  66. // }
  67. // }
  68. // /// <summary>
  69. // /// 自动接收数据
  70. // /// </summary>
  71. // /// <param name="sender"></param>
  72. // /// <param name="e"></param>
  73. // private void mEp_DataReceived(object sender, EndpointDataEventArgs e)
  74. // {
  75. // ShowBytes(e.Buffer, e.Count);
  76. // }
  77. // private void ShowBytes(byte[] readBuffer, int uiTransmitted)
  78. // {
  79. // if (AsHex)
  80. // {
  81. // // Convert the data to a hex string before displaying
  82. // readData = GetHexString(readBuffer, 0, uiTransmitted).ToString();
  83. // }
  84. // else
  85. // {
  86. // //readData= Encoding.UTF8.GetString(readBuffer, 0, uiTransmitted);
  87. // StringBuilder strRead = new StringBuilder();
  88. // for (int i = 0; i < uiTransmitted; i++)
  89. // {
  90. // strRead.Append(readBuffer[i]);
  91. // }
  92. // readData = strRead.ToString();
  93. // }
  94. // }
  95. // private StringBuilder GetHexString(byte[] data, int offset, int length)
  96. // {
  97. // StringBuilder sb = new StringBuilder(length * 3);
  98. // for (int i = offset; i < (offset + length); i++)
  99. // {
  100. // sb.Append(data[i].ToString("X2") + " ");
  101. // }
  102. // return sb;
  103. // }
  104. // /// <summary>
  105. // /// 关闭端口
  106. // /// </summary>
  107. // public void CloseDevice()
  108. // {
  109. // if (MyUsbDevice != null)
  110. // {
  111. // if (MyUsbDevice.IsOpen)
  112. // {
  113. // if (mEpReader != null)
  114. // {
  115. // mEpReader.DataReceivedEnabled = false;
  116. // mEpReader.DataReceived -= new EventHandler<EndpointDataEventArgs>(mEp_DataReceived); ;
  117. // mEpReader.Dispose();
  118. // mEpReader = null;
  119. // }
  120. // if (mEpWriter != null)
  121. // {
  122. // mEpWriter.Abort();
  123. // mEpWriter.Dispose();
  124. // mEpWriter = null;
  125. // }
  126. // //如果这是一个“完整的”usb设备(libus -win32, linux libusb)
  127. // //它将有一个IUsbDevice接口。如果没有(WinUSB),为null。
  128. // IUsbDevice wholeUsbDevice = MyUsbDevice as IUsbDevice;
  129. // if (!ReferenceEquals(wholeUsbDevice, null))
  130. // {
  131. // // Release interface #0.
  132. // wholeUsbDevice.ReleaseInterface(0);
  133. // }
  134. // MyUsbDevice.Close();
  135. // MyUsbDevice = null;
  136. // }
  137. // }
  138. // }
  139. // /// <summary>
  140. // /// 读取USB数据
  141. // /// </summary>
  142. // /// <returns></returns>
  143. // public bool ManualRead()
  144. // {
  145. // byte[] readBuffer = new byte[64];
  146. // int uiTransmitted;
  147. // ErrorCode eReturn;
  148. // if ((eReturn = mEpReader.Read(readBuffer, 1000, out uiTransmitted)) == ErrorCode.None)
  149. // {
  150. // ShowBytes(readBuffer, uiTransmitted);
  151. // return true;
  152. // }
  153. // else
  154. // {
  155. // readData = "NULL";
  156. // return false;
  157. // }
  158. // }
  159. // /// <summary>
  160. // /// 写入USB数据
  161. // /// </summary>
  162. // /// <param name="data"></param>
  163. // /// <returns></returns>
  164. // public bool WriteData(string data)
  165. // {
  166. // byte[] bytesToWrite = Encoding.UTF8.GetBytes(data);
  167. // int uiTransmitted;
  168. // if (mEpWriter.Write(bytesToWrite, 1000, out uiTransmitted) == ErrorCode.None)
  169. // {
  170. // return true;
  171. // }
  172. // else
  173. // {
  174. // MessageBox.Show("Write failed");
  175. // return false;
  176. // }
  177. // }
  178. //}
  179. }