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





Взгляните на 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. Обычно они идут с драйверами.
Если вы не используете собственный USB-драйвер на стороне прошивки, ваш чип, вероятно, будет поставляться с драйвером для ПК. Например, микроконтроллеры PIC от Microchip поставляются не только с прошивкой для PIC, но и с драйвером Windows. Я ожидаю, что другие микросхемы с поддержкой USB также будут поставляться со своими собственными драйверами.
Помните, что, хотя вы взаимодействуете с USB-портом непосредственно на стороне прошивки, на стороне ПК вы фактически взаимодействуете только с драйвером для хост-контроллера.
Поскольку вы все еще ищете устройство, которое преобразует напряжение в информацию, я предлагаю вам взглянуть на устройства, реализующие интерфейс USB-HID (Human Interface Device), такие как найдено здесь.
Их преимущество заключается в том, что они не требуют разработки драйверов устройств или установки драйверов. Они работают по принципу plug and play, как мышь, клавиатура или флэш-накопитель. Интерфейс довольно общий, и большинство производителей также предоставляют необходимые библиотеки для чтения информации с устройства, получения уведомлений при подключении / отключении устройства, обнаружения устройств и т. д.
Кроме того, взгляните на эта статья, который объясняет, например, как использовать HID-устройство в C#.
Дэйв
Самый простой вариант - это, вероятно, купить какое-нибудь готовое устройство для сбора данных. Многие компании делают такие вещи, но иногда они пугающе дороги:
Вы также можете собрать свой собственный из набора, хотя я не могу сейчас найти для вас никаких ссылок.
Если вам нужно что-то более индивидуальное, вы можете использовать EZ-USB или ПОС. Они предоставляют драйверы USB (по крайней мере, для Windows), которые позволяют взаимодействовать с устройством без написания драйверов.
С большинством из них у вас есть довольно широкий выбор языков программирования, в прошлом я писал программное обеспечение для связи с устройствами EZ-USB из Visual Basic 6.
У NI есть OEM-модули, которые могут сделать это по разумной цене (<200 долларов США). У вас также будут дополнительные аналоговые каналы и цифровые входы для игры, если вы хотите расширить функциональность. Обратите внимание на USB-6008 OEM.
Большинство микроконтроллеров имеют встроенный АЦП, и многие из них также имеют встроенную подсистему USB. На ум приходят Cypress, PIC, AVR. Когда я работаю с USB в своих проектах, я использую пюсб и wxPython. С ними чертовски легко выполнить работу, хотя для начала требуется довольно сложная кривая обучения.
Помимо бесстыдного самоподключения, я написал небольшой драйвер Python с pyusb для устройства USB-LCD. Вы можете проверить мой исходный код здесь.
Просто предупреждаю, что ваша ссылка не работает.
Я лично использую Microchip PIC - у них есть преобразователи AD / DA, USB-порты, бесплатные драйверы и загрузчики - и все это менее чем за 4 доллара. После того, как вы подключите такое устройство, вы получите один дополнительный COM-порт - все остальное тривиально.
Вы не говорите, на какую платформу смотрите. Если вы ориентируетесь на Windows, Обнаружен USB - отличный справочник.
Что касается оборудования, обратите внимание на продукты FTDI.
Если у вас есть оборудование и вы хотите получить к нему доступ в Windows, я недавно обнаружил WinUSB. Если это то, что вам нужно, взгляните на этот технический документ.
Помимо WinUSB, libusb и Jungo, есть еще один вариант программирования USB-устройств из пользовательского режима - Платформа драйвера пользовательского режима (UMDF).
Написание драйвера UMDF - это, по сути, создание внутрипроцессного COM-компонента с вашими любимыми инструментами.
Инструмент Jungo поддерживается не только для Windows, но и для Linux.