Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save IlyaLavrov97/c408e9d70741addefe5b4e8e84573c82 to your computer and use it in GitHub Desktop.
Save IlyaLavrov97/c408e9d70741addefe5b4e8e84573c82 to your computer and use it in GitHub Desktop.
using System;
using System.Text;
using LibUsbDotNet;
using LibUsbDotNet.Main;
namespace UsbHostExample
{
class Program
{
public static UsbDevice MyUsbDevice;
public static void Main(string[] args)
{
UsbDeviceFinder MyUsbFinder = new UsbDeviceFinder(0x18D1, 0x2D00); // Нужен наш idVendor и idProduct
MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder);
if (MyUsbDevice == null)
{
Console.WriteLine("Device Not Found.");
return;
}
IUsbDevice wholeUsbDevice = MyUsbDevice as IUsbDevice;
if (!ReferenceEquals(wholeUsbDevice, null))
{
// Это "целое" USB устройство. Перед использованием необходимо выбрать конфигурацию и интерфейс.
wholeUsbDevice.SetConfiguration(1);
wholeUsbDevice.ClaimInterface(0);
}
// Открыть конечную точку для чтения (EndPoint 1).
UsbEndpointReader reader = MyUsbDevice.OpenEndpointReader(ReadEndpointID.Ep01);
byte[] readBuffer = new byte[1024];
int bytesRead;
// Открыть конечную точку для записи (EndPoint 1).
UsbEndpointWriter writer = MyUsbDevice.OpenEndpointWriter(WriteEndpointID.Ep01);
// Чтение данных
ErrorCode ec = reader.Read(readBuffer, 5000, out bytesRead);
if (ec == ErrorCode.None)
{
string receivedData = Encoding.Default.GetString(readBuffer, 0, bytesRead);
Console.WriteLine("Data read: {0}", receivedData);
}
else
{
Console.WriteLine("Error: {0}", ec);
}
// Запись данных
string responseData = "Hello from host";
byte[] responseBuffer = Encoding.Default.GetBytes(responseData);
ec = writer.Write(responseBuffer, 5000, out int bytesWritten);
if (ec == ErrorCode.None)
{
Console.WriteLine("Data written: {0}", responseData);
}
else
{
Console.WriteLine("Write error: {0}", ec);
}
// Освобождение ресурсов USB устройства.
MyUsbDevice.Close();
UsbDevice.Exit();
Console.ReadKey();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment