//using LibUsbDotNet;
//using LibUsbDotNet.Main;
using System;
using System.Text;
using System.Windows.Forms;
namespace BaseLibComm
{
//public class LibUsbDotNetOper
//{
// //public static LibUsbDotNetOper usbOperIns = new LibUsbDotNetOper();
// public static int vid = 0x0483; //厂商VID号
// public static int pid = 0x9999; //厂商PID号
// public static string epNumStr = "1";//Open,writeEndpointReader设定
// public static bool AsHex = false;//接收数据类型为16进制
// public string readData; //接收的数据
// private UsbEndpointReader mEpReader;
// public bool autoRead = true;//是否自动接收数据。
// private UsbEndpointWriter mEpWriter;
// public UsbDevice MyUsbDevice;
// public static UsbDeviceFinder MyUsbFinder = new UsbDeviceFinder(vid, pid);
// ///
// /// 打开USB设备
// ///
// ///
// public bool OpenDevice()
// {
// CloseDevice();
// MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder);
// if (MyUsbDevice == null)
// {
// MessageBox.Show("打开指定USB设备失败");
// return false;
// }
// else
// {
// try
// {
// IUsbDevice wholeUsbDevice = MyUsbDevice as IUsbDevice;
// if (!ReferenceEquals(wholeUsbDevice, null))
// {
// //这是一个“完整的”USB设备。在使用之前,
// //必须选择所需的配置和接口。
// //选择config #1
// wholeUsbDevice.SetConfiguration(1);
// // 接口地址重置 #0
// wholeUsbDevice.ClaimInterface(0);
// }
// byte epNum = byte.Parse(epNumStr);
// mEpReader = MyUsbDevice.OpenEndpointReader((ReadEndpointID)(epNum | 0x80));
// mEpWriter = MyUsbDevice.OpenEndpointWriter((WriteEndpointID)epNum);
// if (autoRead)
// {
// mEpReader.DataReceivedEnabled = true;//自动收数据
// mEpReader.DataReceived += new EventHandler(mEp_DataReceived);
// }
// mEpReader.Flush();
// return true;
// }
// catch (Exception ex)
// {
// MessageBox.Show(ex.ToString());
// if (MyUsbDevice.IsOpen) MyUsbDevice.Close();
// MyUsbDevice = null;
// return false;
// }
// }
// }
// ///
// /// 自动接收数据
// ///
// ///
// ///
// private void mEp_DataReceived(object sender, EndpointDataEventArgs e)
// {
// ShowBytes(e.Buffer, e.Count);
// }
// private void ShowBytes(byte[] readBuffer, int uiTransmitted)
// {
// if (AsHex)
// {
// // Convert the data to a hex string before displaying
// readData = GetHexString(readBuffer, 0, uiTransmitted).ToString();
// }
// else
// {
// //readData= Encoding.UTF8.GetString(readBuffer, 0, uiTransmitted);
// StringBuilder strRead = new StringBuilder();
// for (int i = 0; i < uiTransmitted; i++)
// {
// strRead.Append(readBuffer[i]);
// }
// readData = strRead.ToString();
// }
// }
// private StringBuilder GetHexString(byte[] data, int offset, int length)
// {
// StringBuilder sb = new StringBuilder(length * 3);
// for (int i = offset; i < (offset + length); i++)
// {
// sb.Append(data[i].ToString("X2") + " ");
// }
// return sb;
// }
// ///
// /// 关闭端口
// ///
// public void CloseDevice()
// {
// if (MyUsbDevice != null)
// {
// if (MyUsbDevice.IsOpen)
// {
// if (mEpReader != null)
// {
// mEpReader.DataReceivedEnabled = false;
// mEpReader.DataReceived -= new EventHandler(mEp_DataReceived); ;
// mEpReader.Dispose();
// mEpReader = null;
// }
// if (mEpWriter != null)
// {
// mEpWriter.Abort();
// mEpWriter.Dispose();
// mEpWriter = null;
// }
// //如果这是一个“完整的”usb设备(libus -win32, linux libusb)
// //它将有一个IUsbDevice接口。如果没有(WinUSB),为null。
// IUsbDevice wholeUsbDevice = MyUsbDevice as IUsbDevice;
// if (!ReferenceEquals(wholeUsbDevice, null))
// {
// // Release interface #0.
// wholeUsbDevice.ReleaseInterface(0);
// }
// MyUsbDevice.Close();
// MyUsbDevice = null;
// }
// }
// }
// ///
// /// 读取USB数据
// ///
// ///
// public bool ManualRead()
// {
// byte[] readBuffer = new byte[64];
// int uiTransmitted;
// ErrorCode eReturn;
// if ((eReturn = mEpReader.Read(readBuffer, 1000, out uiTransmitted)) == ErrorCode.None)
// {
// ShowBytes(readBuffer, uiTransmitted);
// return true;
// }
// else
// {
// readData = "NULL";
// return false;
// }
// }
// ///
// /// 写入USB数据
// ///
// ///
// ///
// public bool WriteData(string data)
// {
// byte[] bytesToWrite = Encoding.UTF8.GetBytes(data);
// int uiTransmitted;
// if (mEpWriter.Write(bytesToWrite, 1000, out uiTransmitted) == ErrorCode.None)
// {
// return true;
// }
// else
// {
// MessageBox.Show("Write failed");
// return false;
// }
// }
//}
}