Как мне запрограммировать драйвер для устройства USB для платформы Windows? - PullRequest
10 голосов
/ 02 октября 2008

Я ищу устройство, которое считывает напряжение проводки через интерфейс USB и возвращает данные. Как бы я занялся программированием чего-либо для интерпретации этих данных и на каком языке я бы использовал?

редактировать: Если это поможет, этот проект должен разработать цифровой тахометр для старых механизмов, которые не поддерживают комплексный порт данных ODB2. Следовательно, он будет считывать напряжения в цепи постоянного тока и иметь точный графический интерфейс. Я понятия не имею, с чего начать все это, но я полон решимости заставить его работать! это для windows.

Ответы [ 12 ]

8 голосов
/ 02 октября 2008

Обман и использование libusb . Я сделал это для проекта, над которым работал некоторое время, и написал приложение C ++ / wxWidgets для обработки данных.

Недавно я думал о переписывании приложения на ПК в wxPython , хотя это намного быстрее для разработки GUI.

Как вы хотите отображать / регистрировать данные? Есть много доступных вариантов. Вы можете сделать несколько довольно интересных вещей (легко) с возможностями OpenGL wxWidgets , будь то 2D или 3D представление данных.

6 голосов
/ 02 октября 2008

Если вы можете, я бы предложил использовать такую ​​библиотеку, как libusb, как предложили Крис и Джон Кейдж.

Если libusb не соответствует вашим потребностям и вы разрабатываете для Windows, вам следует взглянуть на программное обеспечение, которое предоставляет Jungo . Опять же, это перемещает программное обеспечение usb в пространство пользователя, а не требует разработки ядра Windows. (редактировать 3: Илья указывает в комментарии, что Jungo также доступен для Linux)

Если вам нужно немного поработать над ядром (Windows или Linux), то C - это единственный вариант, который у вас есть. Исследуйте эту книгу Рубини для разработки Linux. Для разработки драйвера для Windows я могу порекомендовать эту книгу Oney. Но я бы рассмотрел вариант libusb, предпочитая разработку драйверов в обоих случаях.


Btw. Если все, что вас интересует, - это возможность измерять напряжение на USB-устройстве (и написание кода не важно), существует множество продуктов, которые сделают это для вас. Взгляните на некоторые предложения от National Instruments . Они будут иметь дело с тяжелой работой usb и сбором данных и предоставят вам хороший программный интерфейс для использования в вашем приложении.


(редактировать 2) Есть также некоторые USB-последовательные чипы (например, эти ), которые могут быть подключены напрямую к встроенному процессору, используя только UART. Обычно они поставляются с драйверами.

3 голосов
/ 02 октября 2008

Взгляните на libusb . Он доступен как для Linux, так и для Windows.

2 голосов
/ 02 октября 2008

Поскольку вы все еще ищете устройство, которое преобразует напряжение в информацию, я предлагаю вам взглянуть на устройства, которые реализуют интерфейс USB-HID (Human Interface Device), такие как , найденные здесь,

Их преимущество заключается в том, что они не требуют разработки драйверов устройств или установки драйверов. Они как подключи и играй, как мышь, клавиатура или флешка. Интерфейс довольно общий, и большинство производителей также предоставляют необходимые библиотеки для считывания информации с устройства, уведомления о подключении / выходе устройства, обнаружении устройств и т. Д.

Кроме того, посмотрите эту статью , в которой объясняется, например, как использовать устройство HID в C #.

Dave

1 голос
/ 17 декабря 2009

Для аппаратного обеспечения, посмотрите на FTDI продукты.

Если у вас есть оборудование и вы хотите получить к нему доступ в Windows, я недавно обнаружил WinUSB . Если это то, что вам нужно, взгляните на эту белую бумагу .

1 голос
/ 02 октября 2008

Вы не говорите, на какой платформе вы смотрите. Если вы ориентируетесь на Windows, USB Revealed является отличным справочником.

1 голос
/ 02 октября 2008

Я лично использую PIC от Microchip - у них есть конвертеры AD / DA, USB-порты, бесплатные драйверы и загрузчики - и все это за менее чем 4 доллара. После подключения такого устройства вы получаете один дополнительный COM-порт - остальное тривиально.

1 голос
/ 02 октября 2008

Большинство микроконтроллеров имеют встроенный АЦП, и многие из них также имеют встроенную USB-подсистему. Cypress, PIC, AVR приходят на ум. Всякий раз, когда я выполняю работу по USB для своих собственных проектов, я использую pyusb и wxPython . Благодаря им чертовски легко выполнить работу, хотя начальная кривая обучения довольно жесткая.

Помимо бесстыдного самостоятельного подключения, я написал небольшой драйвер python с pyusb для устройства USB-LCD. Вы можете проверить мой исходный код здесь .

1 голос
/ 02 октября 2008

Ваш самый простой вариант - купить какое-то готовое устройство для сбора данных. Многие компании делают такие вещи, но иногда они пугающе дороги:

  1. Национальные инструменты
  2. Amplicon
  3. Labjack

Вы также можете создать свой собственный набор, хотя сейчас я не могу найти для вас никаких ссылок.

Если вы хотите что-то более нестандартное, вы можете использовать EZ-USB или PIC . Они предоставляют драйверы USB (по крайней мере для Windows), которые позволяют вам взаимодействовать с устройством без написания драйверов.

С большинством из них у вас достаточно широкий выбор языков программирования, в прошлом я написал программное обеспечение для связи с устройствами EZ-USB из Visual Basic 6.

1 голос
/ 02 октября 2008

Если вы не используете свой встроенный USB-драйвер для микропрограммы, ваш чип, вероятно, будет поставляться с драйвером для ПК. Например, микроконтроллеры PIC от Microchip поставляются не только с прошивкой для PIC, но и с драйвером Windows. Я ожидаю, что другие чипы с USB также будут поставляться со своими собственными драйверами.

Помните, что при взаимодействии с USB-портом непосредственно на стороне прошивки, на стороне ПК все, с чем вы фактически взаимодействуете, это драйвер для хост-контроллера.

...