Я ищу устройство, которое считывает напряжения в проводке через интерфейс USB и возвращает данные. Как я буду программировать что-то, чтобы интерпретировать эти данные и какой язык использовать?
Редактировать: Если это помогает, этот проект предназначен для разработки цифрового тахометра для старых двигателей, которые не поддерживают полный порт данных ODB2. Поэтому он будет считывать напряжения на цепи постоянного тока и иметь точный графический интерфейс. Я абсолютно не знаю, с чего начать все это, но я решил заставить его работать! это для окон.Как программировать драйвер для устройства USB для платформы Windows?
ответ
Посмотрите на libusb. Он доступен как для Linux, так и для Windows.
Чит и использование libusb. Я сделал это для проекта, над которым я работал некоторое время, и написал приложение для обработки данных с помощью C++/wxWidgets.
Я недавно думал о перезаписывании приложения на ПК в , хотя он намного быстрее для разработки графического интерфейса.
Как вы хотите отображать/регистрировать данные? Есть много вариантов. Вы можете сделать довольно классный материал (легко) с the OpenGL capabilities of wxWidgets, будь то 2D или 3D-представление данных.
Мне кажется, что если вы хотите прочитать напряжение в электросети, вам нужен аналого-цифровой преобразователь. Вы делаете свой собственный аналого-цифровой преобразователь? Если это так, у вас есть неплохое программирование прошивки на стороне устройства, больше, чем драйвер хоста, о котором вы спрашиваете. В противном случае вы собираетесь купить аналого-цифровой преобразователь, и вам следует просто использовать драйвер, который поставщик поставляет вместе с ним.
Если вы хотите, я бы предложил использовать библиотеку, подобную libusb, как предложили kris и Jon Cage.
Если libusb не подходит вашим потребностям, и вы разрабатываете для Windows, вы должны взглянуть на программное обеспечение, которое предоставляет Jungo. Опять же, это перемещает программное обеспечение usb в пространство пользователя, а не требует разработки ядра Windows. (править 3: Илья указывает в комментарии, что Jungo также доступен для Linux).
Если вам нужно выполнить некоторую разработку ядра (либо Windows, либо Linux), то C вполне подходит только вам. Рассмотреть this книгу Рубини для разработки Linux. Для разработки драйверов Windows я могу порекомендовать книгу this от Oney. Но я изучил опцию libusb, предпочитая развитие драйвера в обоих случаях.
КПП. Если все, что вас интересует, это возможность измерять напряжения на устройстве USB (и писать код не важно) есть много продуктов, которые сделают это для вас. Взгляните на некоторые предложения от National Instruments. Это будет иметь дело с тяжелой работой usb и сбора данных и даст вам хороший программный интерфейс для использования в вашем приложении.
(редактировать 2) Есть также некоторые USB-серийный чипы (например. these), который может быть подключен непосредственно к встроенному процессору usig только UART. Обычно они поставляются с драйверами.
Если вы не взломали свой собственный USB-драйвер со стороны прошивки, ваш чип, вероятно, будет оснащен драйвером для ПК. Например, микроконтроллеры PIC от Microchip поставляются не только с прошивкой для ПОС, но и с драйвером Windows. Я ожидаю, что другие чипы с поддержкой USB также будут поставляться с собственными драйверами.
Помните, что во время взаимодействия с портом USB непосредственно на стороне прошивки на стороне ПК все, с чем вы фактически взаимодействуете, является драйвером для главного контроллера.
Поскольку вы все еще ищете устройство, которое преобразует напряжение в информацию, я предлагаю вам взглянуть на устройства, которые реализуют интерфейс USB-HID (интерфейс человеко-интерфейса), например, found here.
Они имеют преимущество в том, что не требуется разработка каких-либо драйверов устройств или устанавливаемых драйверов. Они подключаются и воспроизводятся как мышь, клавиатура или флэш-накопитель. Интерфейс довольно общий, и большинство производителей также предоставляют необходимые библиотеки для считывания информации с устройства, уведомляются, когда устройство подключено/выключено, обнаружение устройств и т. Д.
Кроме того, взгляните на this article, в котором объясняется, как использовать HID-устройство в C#, например.
Dave
Ваш самый простой вариант, вероятно, чтобы купить какие-то вне-полку устройства сбора данных. Многие компании делают такие вещи, но они иногда пугающе дорого:
Вы также можете создать свой собственный из комплекта, хотя я пока не можете найти какие-либо ссылки для вас.
Если вы хотите что-то более обычай, вы можете использовать EZ-USB или PIC. Они предоставляют USB-драйверы (по крайней мере для Windows), которые позволяют вам взаимодействовать с устройством без написания драйверов.
С большинством из них у вас довольно широкий выбор языков программирования, я написал программное обеспечение для связи с устройствами EZ-USB от Visual Basic 6 в прошлом.
Большинство микроконтроллеров имеют встроенный АЦП, а тонна также имеет встроенную подсистему USB. Cypress, PIC, AVR приходят на ум. Всякий раз, когда я занимаюсь работой с USB для своих собственных проектов, я использую pyusb и wxPython. Им очень легко выполнить работу, хотя есть довольно суровая начальная кривая обучения.
Бесшумный автозапуск в сторону, я написал небольшой драйвер python с pyusb для устройства USB-LCD. Вы можете проверить мой исходный код here.
Я лично использую микрочипы PIC - у них есть AD/DA-конвертеры, USB-порты, бесплатные драйверы и загрузчики - и все это менее чем за 4 доллара. После подключения такого устройства вы получаете один дополнительный COM-порт - остальное тривиально.
Вы не говорите, на какой платформе вы смотрите. Если вы ориентируетесь на Windows, USB Revealed - это замечательная ссылка.
Для оборудования см. FTDI.
Если у вас есть оборудование и вы хотите получить к нему доступ в Windows, я недавно обнаружил WinUSB. Если это то, что вам нужно, взгляните на this white paper.
В дополнение к WinUSB, libusb и Jungo есть еще один вариант программирования USB-устройств из пользовательского режима - User-Mode Driver Framework (UMDF).
Написание драйвера UMDF в основном создает COM-компонент in-process с вашими любимыми инструментами.
Инструмент Jungo предназначен не только для Windows, но и для Linux – Ilya 2008-10-07 20:23:00
Спасибо Илье - обновлено соответственно – 2008-10-07 22:07:57
+1 для упоминания FTDI; это, вероятно, более простой вариант. – 2011-05-17 14:53:26