2010-01-29 4 views
13

Je songe à créer un contrôleur physique (périphérique?) Avec des boutons, des boutons et des voyants. Je voudrais interagir avec lui en Java (répondre aux boutons, allumer les LEDs, etc). La raison pour laquelle je mentionne Java est double: d'abord, je connais bien Java . Deuxièmement, j'ai écrit le reste du programme dont j'ai besoin pour m'interfacer avec Java (bien qu'il existe des moyens de parler au programme Java depuis un autre langage).Créer un périphérique USB, le contrôler en Java

Je souhaite que l'appareil se connecte via USB et soit indépendant de la plate-forme (informatique).

Je n'ai pas la moindre idée de l'endroit où commencer, sauf pour commencer à lire le site Web Arduino. Est-ce ma meilleure/seule option? Y a-t-il quelque chose de mieux adapté à la communication avec Java?

Note: Je sais que Arduino a quelque chose à voir avec Java (pas sûr de quoi), mais il semble que le code doit être écrit dans un sous-ensemble de C.

Comment puis-je faire bouger sur ce sujet?


1 - Aucun rire, s'il vous plaît.

+3

Des rires étouffés ....: P – t0mm13b

Répondre

5

L'environnement de développement Arduino est écrit en Java.

Mais le langage standard que vous écrivez un programme pour la plate-forme Arduino est effectivement C++.

La plate-forme Arduino est basée sur une puce Atmel AVR. Il y en a au moins un Java VM for AVR chips. Il existe d'autres langues disponibles pour l'AVR tels que Forth et BASIC (bien que je ne pouvais trouver que des versions commerciales, donc je vais si vous voulez les trouver, recherchez "AVR BASIC").

L'Arduino utilise un port COM virtuel pour communiquer entre l'ordinateur hôte et lui. Un port COM virtuel émule une ancienne ligne série de style mais est fait avec USB. Vous pouvez utiliser le Java communication API pour qu'un programme Java exécuté sur l'ordinateur hôte communique avec votre périphérique physique.

+0

@R Samuel Klatchko: Je suis curieux, est-il indépendant de la plateforme, par exemple, linux, ce à propos des conducteurs? J'ai entendu beaucoup de bonnes critiques sur Arduino ... :) – t0mm13b

+0

L'EDI est indépendant de la plate-forme, mais le pilote du port COM virtuel n'est pas. Cela dit, je crois que les versions récentes du noyau Linux ont le pilote nécessaire intégré. –

+0

+1 Des trucs fascinants, en particulier le lien vers le NanoVM. Digérer tout cela, mais il semble que la chose la plus simple, bien que ça ne sonne pas, est de faire la partie Arduino dans la langue Arduino ...? –

0

Ok, plateforme informatique indépendante? Quelles plateformes ciblez-vous? Cela dépend du pilote et du support pour cette plateforme, que fait le périphérique USB? Est-ce un dispositif de stockage de masse ... Vous pourriez avoir à regarder autour et voir si vous pouvez trouver un pilote de périphérique qui peut parler à l'appareil ...

Hope this helps, Meilleures salutations, Tom.

+0

Merci pour cela, désolé si la question n'était pas claire: l'appareil n'est pas encore construit. –

+0

@yar: pas de problème! :) – t0mm13b

0

Je sais que pour le port série, il y avait des bibliothèques qui existaient pour interagir avec elle (bibliothèque rs232). Googling pour Java et USB a renvoyé plusieurs réponses (le premier s'appelait jUSB). Ce serait le premier type de chose que je chercherais.

+0

Bien, mais alors que feriez-vous? Sors ton fer à souder et improvise? Je n'ai aucune idée de la façon de construire un périphérique USB, bien que j'ai des gens qui peuvent souder des choses pour moi et suivre les schémas (bien que personnellement je ne sais rien à ce sujet). –

1

Pouvez-vous développer votre besoin d'un appareil personnalisé? Il me semble que la conception de matériel a une barrière d'accès assez élevée et que la plupart des applications auxquelles je peux penser seraient mieux résolues en réutilisant un composant de contrôleur de jeu existant. Si vous avez vraiment besoin d'un nouveau matériel, alors je vous suggère de commencer par googler «kit de développement USB» ou «carte de développement USB» qui vous obtiendrez des liens comme this, this et this.En ce qui concerne le matériel USB de Java, j'ai joué un peu avec la librairie JUSB et cela semble prometteur, mais semble être limité à Linux uniquement parce que la version Windows de la moitié de la librairie pas été écrit. Les alternatives peuvent être trouvées par Google sur "HID java".

+0

Merci Jherico. L'appareil aurait certains de ces "encodeurs rotatifs sans fin avec des anneaux LED: Ces contrôles n'ont pas de points de fin, offrent donc 360 ̊ de mouvement.Ces contrôles offrent une résolution variable dépendante de la vitesse, donc déplacer l'encodeur donne lentement une résolution plus fine que le codeur rapidement." Il aurait également quelques "boutons à LED". C'est à peu près tout pour la première fois ... J'espère que ça aide un peu. Maintenant que je l'écris, cela semble décourageant. –

3

Pour certains encodeurs et boutons, vous souhaitez probablement implémenter un périphérique USB HID. Si vous en produisez plus que quelques-uns, vous aurez envie de faire un tableau personnalisé. Découvrez V-USB, une bibliothèque open-source pour la fabrication de périphériques USB HID utilisant des microcontrôleurs Atmel. Ils ont un tas d'exemples de projets qui utilisent cette bibliothèque.

Vous pourriez probablement faire ressembler cela à un joystick HID, en utilisant les encodeurs pour produire des informations sur l'axe X/Y et en ayant les boutons agissent comme des boutons. Ils vous pourriez utiliser les API de jeu Java standard pour lire les valeurs de joystick.

+0

Cool, merci, je vais regarder dans cela. –

Questions connexes