Общайтесь с USB-устройством на C# с помощью LibUsbDotNetC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Общайтесь с USB-устройством на C# с помощью LibUsbDotNet

Сообщение Anonymous »


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(); }
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»