Сделайте 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: