Сделайте USB-устройство, управляйте им на Java

Я думаю о создании физического контроллера (устройства?) С ручками, кнопками и светодиодами. Я бы хотел взаимодействовать с ним с помощью Java (отвечать на ручки, загораться светодиодами и т. Д.). Причина, по которой я упоминаю Java, двояка: во-первых, я хорошо знаю Java1. Во-вторых, я написал остальную часть программы, с которой мне нужно взаимодействовать на Java (хотя есть способы общения с Java-программой на другом языке).

Я хотел бы, чтобы устройство подключалось через USB и не зависело от платформы (компьютера).

Я не имею ни малейшего представления о том, с чего начать, кроме как начать читать сайт Arduino. Это мой лучший / единственный вариант? Есть ли что-то более подходящее для общения с Java?

Примечание: я знаю, что Arduino как-то связан с Java (не знаю, что), но кажется, что код должен быть написан в подмножестве C.

Как бы я занялся этой темой?


1 - не смейтесь, пожалуйста.

6 ответов

Решение

Среда разработки Arduino написана на Java.

Но стандартным языком, на котором вы пишете программу для платформы Arduino, по сути является C++.

Платформа Arduino основана на чипе Atmel AVR. Существует по крайней мере одна Java VM для чипов AVR. Для AVR доступны другие языки, такие как Forth и BASIC (хотя я мог только найти коммерческие версии, поэтому, если вы захотите их найти, поищите "AVR BASIC").

Arduino использует виртуальный COM-порт для связи между хост-компьютером и им. Виртуальный COM-порт эмулирует последовательную линию старого стиля, но выполняется через USB. Вы можете использовать API связи Java, чтобы программа Java, работающая на главном компьютере, могла взаимодействовать с вашим физическим устройством.

Для некоторых кодеров и кнопок вы, вероятно, захотите внедрить устройство USB HID. Если вы собираетесь производить больше, чем пару из них, вы захотите сделать специальную доску. Ознакомьтесь с V-USB, библиотекой с открытым исходным кодом для создания USB HID-устройств с использованием микроконтроллеров Atmel. У них есть несколько примеров проектов, которые используют эту библиотеку.

Вы, вероятно, могли бы сделать это похожим на джойстик HID, используя кодировщики для получения информации по оси X/Y и заставляя кнопки действовать как кнопки. Они могут использовать стандартные игровые API Java для чтения значений джойстика.

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

Что касается работы с USB-оборудованием от Java, я немного поигрался с библиотекой JUSB, и это выглядит многообещающе, но, похоже, ограничивается Linux только потому, что версия Windows для собственной библиотеки не написана., Альтернативы можно найти, прибегая к помощи "HID Java".

Я знаю, что для последовательного порта были библиотеки, которые существовали для взаимодействия с ним (библиотека rs232). Поиск в Google для java и USB вернул несколько ответов (первый назывался jUSB). Это будет первый тип вещей, которые я буду искать.

Хорошо, компьютерная платформа независима? На какие платформы вы ориентируетесь? Это будет зависеть от драйвера и поддержки этой платформы, что делает устройство USB? Это запоминающее устройство... Возможно, вам придется осмотреться и посмотреть, сможете ли вы найти драйвер устройства, который может общаться с устройством...

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

Пример подключения USB Java к микроконтроллеру Freescale:

http://javausbapi.blogspot.com/

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