//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; // } // } //} }