Общайтесь с USB-устройством на C# с помощью LibUsbDotNet ⇐ C#
Общайтесь с USB-устройством на C# с помощью LibUsbDotNet
0) Работаем под 32-разрядной версией Windows7 Ultimate и установленным linusb-win32-dlevel-filter 1.2.6.0.
1) Я попробовал пример showinfo для libusb dotnet и получил следующий результат: [Пожалуйста, посмотрите результат (1-Результат)]
2) После этого я пытаюсь прочитать (опросить) пример libusb, но получил ошибку в строке «ec = reader.Read(readBuffer, 1000, out bytesRead);» и ошибка: «win32error: больше нет байтов!» [Смотрите код (2-код)]
Что означает эта ошибка и как ее устранить? На самом деле я новичок в общении с USB-устройствами, пожалуйста, помогите мне, если у вас есть идеи для связи с USB-устройствами с помощью C#
1-Результат:-
Длина:18 ДескрипторТип:Устройство БкдЮсб: 0x0110 Класс:Связь Подкласс: 0x00 Протокол: 0x00 МаксПакетСизе0:64 Идентификатор поставщика: 0x11CA Идентификатор продукта: 0x0241 Бкддевице: 0x0100 ПроизводительStringIndex:1 ПродуктСтрокаИндекс:2 СерийныйСтрокИндекс:3 КонфигурацияCount:1 ПроизводительСтрока:VeriFone Inc. Строка продукта: USB-устройство Trident 1.1 Серийная строка:
Длина:9 ДескрипторТип:Конфигурация Общая длина:67 ИнтерфейсКаунт:2 ID конфигурации:1 Стрингиндекс: 0 Атрибуты: 0xC0 Максимальная мощность: 25 Конфигурационная строка:
Длина:7 Тип дескриптора: Конечная точка Идентификатор конечной точки: 0x85 Атрибуты: 0x03 Максимальный размер пакета: 16 Интервал:0 Обновить:0 Адрес синхронизации: 0x00
Длина:9 Тип Дескриптора:Интерфейс Идентификатор интерфейса:1 АльтернативныйID:0 Конечная точкаКаунт:2 Класс:Данные Подкласс: 0x00 Протокол: 0x00 Стрингиндекс: 0 Строка интерфейса:
Длина:7 Тип дескриптора: Конечная точка Идентификатор конечной точки: 0x81 Атрибуты: 0x02 Максимальный размер пакета: 64 Интервал:0 Обновить:0 Адрес синхронизации: 0x00
Длина:7 Тип дескриптора: Конечная точка Идентификатор конечной точки: 0x03 Атрибуты: 0x02 Максимальный размер пакета: 32 Интервал:0 Обновить:0 Адрес синхронизации: 0x00
2- Код:-
public static UsbDeviceFinder MyUsbFinder = new UsbDeviceFinder(4554, 577);
ErrorCode ec = ErrorCode.None;
попробуйте { // Найдите и откройте USB-устройство. MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder); // Если устройство открыто и готово if (MyUsbDevice == null) выдать новое исключение («Устройство не найдено».); IUsbDevice WholeUsbDevice = MyUsbDevice как IUsbDevice; если (!ReferenceEquals(wholeUsbDevice, null)) { // Это «целое» USB-устройство. Прежде чем его можно будет использовать, // необходимо выбрать нужную конфигурацию и интерфейс. // Выбираем конфигурацию №1 WholeUsbDevice.SetConfiguration(1); // Заявить интерфейс №0. WholeUsbDevice.ClaimInterface(0); } // открываем конечную точку чтения 1. Читатель UsbEndpointReader = MyUsbDevice.OpenEndpointReader(ReadEndpointID.Ep01); байт [] readBuffer = новый байт [1024]; в то время как (ec == ErrorCode.None) { число байтовRead; // Если устройство не отправляло данные в течение последних 5 секунд, // произойдет ошибка таймаута (ec = IoTimedOut). ec = Reader.Read(readBuffer, 5000, out bytesRead); if (bytesRead == 0) throw new Exception(string.Format("{0}:No more bytes!", ec)); Console.WriteLine("Прочитано {0} байт", bytesRead); // Записываем этот вывод в консоль. Console.Write(Encoding.Default.GetString(readBuffer, 0, bytesRead)); } Console.WriteLine("\r\nГотово!\r\n"); } поймать (Исключение ex) { Консоль.WriteLine(); Console.WriteLine((ec != ErrorCode.None ? ec + ":" : String.Empty) + ex.Message); } окончательно { если (MyUsbDevice!= ноль) { если (MyUsbDevice.IsOpen) { IUsbDevice WholeUsbDevice = MyUsbDevice как IUsbDevice; если (!ReferenceEquals(wholeUsbDevice, null)) { // Освобождаем интерфейс №0. WholeUsbDevice.ReleaseInterface(0); } МоеUsbDevice.Закрыть(); } MyUsbDevice = ноль; // Бесплатные ресурсы USB UsbDevice.Выход(); } // Ожидаем ввода пользователя.. Консоль.ReadKey(); }
0) Работаем под 32-разрядной версией Windows7 Ultimate и установленным linusb-win32-dlevel-filter 1.2.6.0.
1) Я попробовал пример showinfo для libusb dotnet и получил следующий результат: [Пожалуйста, посмотрите результат (1-Результат)]
2) После этого я пытаюсь прочитать (опросить) пример libusb, но получил ошибку в строке «ec = reader.Read(readBuffer, 1000, out bytesRead);» и ошибка: «win32error: больше нет байтов!» [Смотрите код (2-код)]
Что означает эта ошибка и как ее устранить? На самом деле я новичок в общении с USB-устройствами, пожалуйста, помогите мне, если у вас есть идеи для связи с USB-устройствами с помощью C#
1-Результат:-
Длина:18 ДескрипторТип:Устройство БкдЮсб: 0x0110 Класс:Связь Подкласс: 0x00 Протокол: 0x00 МаксПакетСизе0:64 Идентификатор поставщика: 0x11CA Идентификатор продукта: 0x0241 Бкддевице: 0x0100 ПроизводительStringIndex:1 ПродуктСтрокаИндекс:2 СерийныйСтрокИндекс:3 КонфигурацияCount:1 ПроизводительСтрока:VeriFone Inc. Строка продукта: USB-устройство Trident 1.1 Серийная строка:
Длина:9 ДескрипторТип:Конфигурация Общая длина:67 ИнтерфейсКаунт:2 ID конфигурации:1 Стрингиндекс: 0 Атрибуты: 0xC0 Максимальная мощность: 25 Конфигурационная строка:
Длина:7 Тип дескриптора: Конечная точка Идентификатор конечной точки: 0x85 Атрибуты: 0x03 Максимальный размер пакета: 16 Интервал:0 Обновить:0 Адрес синхронизации: 0x00
Длина:9 Тип Дескриптора:Интерфейс Идентификатор интерфейса:1 АльтернативныйID:0 Конечная точкаКаунт:2 Класс:Данные Подкласс: 0x00 Протокол: 0x00 Стрингиндекс: 0 Строка интерфейса:
Длина:7 Тип дескриптора: Конечная точка Идентификатор конечной точки: 0x81 Атрибуты: 0x02 Максимальный размер пакета: 64 Интервал:0 Обновить:0 Адрес синхронизации: 0x00
Длина:7 Тип дескриптора: Конечная точка Идентификатор конечной точки: 0x03 Атрибуты: 0x02 Максимальный размер пакета: 32 Интервал:0 Обновить:0 Адрес синхронизации: 0x00
2- Код:-
public static UsbDeviceFinder MyUsbFinder = new UsbDeviceFinder(4554, 577);
ErrorCode ec = ErrorCode.None;
попробуйте { // Найдите и откройте USB-устройство. MyUsbDevice = UsbDevice.OpenUsbDevice(MyUsbFinder); // Если устройство открыто и готово if (MyUsbDevice == null) выдать новое исключение («Устройство не найдено».); IUsbDevice WholeUsbDevice = MyUsbDevice как IUsbDevice; если (!ReferenceEquals(wholeUsbDevice, null)) { // Это «целое» USB-устройство. Прежде чем его можно будет использовать, // необходимо выбрать нужную конфигурацию и интерфейс. // Выбираем конфигурацию №1 WholeUsbDevice.SetConfiguration(1); // Заявить интерфейс №0. WholeUsbDevice.ClaimInterface(0); } // открываем конечную точку чтения 1. Читатель UsbEndpointReader = MyUsbDevice.OpenEndpointReader(ReadEndpointID.Ep01); байт [] readBuffer = новый байт [1024]; в то время как (ec == ErrorCode.None) { число байтовRead; // Если устройство не отправляло данные в течение последних 5 секунд, // произойдет ошибка таймаута (ec = IoTimedOut). ec = Reader.Read(readBuffer, 5000, out bytesRead); if (bytesRead == 0) throw new Exception(string.Format("{0}:No more bytes!", ec)); Console.WriteLine("Прочитано {0} байт", bytesRead); // Записываем этот вывод в консоль. Console.Write(Encoding.Default.GetString(readBuffer, 0, bytesRead)); } Console.WriteLine("\r\nГотово!\r\n"); } поймать (Исключение ex) { Консоль.WriteLine(); Console.WriteLine((ec != ErrorCode.None ? ec + ":" : String.Empty) + ex.Message); } окончательно { если (MyUsbDevice!= ноль) { если (MyUsbDevice.IsOpen) { IUsbDevice WholeUsbDevice = MyUsbDevice как IUsbDevice; если (!ReferenceEquals(wholeUsbDevice, null)) { // Освобождаем интерфейс №0. WholeUsbDevice.ReleaseInterface(0); } МоеUsbDevice.Закрыть(); } MyUsbDevice = ноль; // Бесплатные ресурсы USB UsbDevice.Выход(); } // Ожидаем ввода пользователя.. Консоль.ReadKey(); }
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Ошибка 8. Не удалось создать сборку. Ссылочная сборка «LibUsbDotNet» не имеет строгого имени.
Anonymous » » в форуме C# - 0 Ответы
- 12 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Общайтесь с внешним веб -сайтом AI через Python (настольное приложение) [Закрыто]
Anonymous » » в форуме Python - 0 Ответы
- 25 Просмотры
-
Последнее сообщение Anonymous
-