Как запрограммировать драйвер USB-устройства для платформы Windows?

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
10
0
18 463
12

Ответы 12

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

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

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

Как вы хотите отображать / регистрировать данные? Доступно множество вариантов. С помощью возможности OpenGL для wxWidgets вы можете (легко) делать довольно интересные вещи, будь то двухмерное или трехмерное представление данных.

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

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

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

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


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


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

Инструмент Jungo поддерживается не только для Windows, но и для Linux.

Ilya 08.10.2008 00:23

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

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

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

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

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

Дэйв

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

  1. Национальные инструменты
  2. Ампликон
  3. ЛабДжек

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

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

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

У NI есть OEM-модули, которые могут сделать это по разумной цене (<200 долларов США). У вас также будут дополнительные аналоговые каналы и цифровые входы для игры, если вы хотите расширить функциональность. Обратите внимание на USB-6008 OEM.

Nick 25.03.2009 03:42

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

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

Просто предупреждаю, что ваша ссылка не работает.

Ponkadoodle 22.03.2011 03:04

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

Вы не говорите, на какую платформу смотрите. Если вы ориентируетесь на Windows, Обнаружен USB - отличный справочник.

Что касается оборудования, обратите внимание на продукты FTDI.

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

Помимо WinUSB, libusb и Jungo, есть еще один вариант программирования USB-устройств из пользовательского режима - Платформа драйвера пользовательского режима (UMDF).

Написание драйвера UMDF - это, по сути, создание внутрипроцессного COM-компонента с вашими любимыми инструментами.

Другие вопросы по теме