Created
July 28, 2024 15:38
-
-
Save IlyaLavrov97/c408e9d70741addefe5b4e8e84573c82 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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