2010-01-23 5 views
21

J'essaye d'écrire une application Java qui accède aux ports USB pour lire et écrire sur un périphérique connecté via USB. Le problème auquel je suis confronté est que je ne sais pas exactement quoi utiliser dans Java pour faire une telle chose. J'ai cherché en ligne et trouvé quelque chose appelé JUSB mais tous les messages semblent assez vieux.Comment accéder aux ports USB en Java

Actuellement, j'utilise les bibliothèques RXTX mais je rencontre parfois des erreurs de synchronisation. Lorsque j'utilise C# pour faire l'équivalent, il nécessite beaucoup moins de code et je ne fais pas face à la même erreur de synchronisation.

Ma question est, est-il quelque chose intégré dans la dernière version du JRE je peux utiliser pour accéder aux ports USB (qui est tout aussi facile que l'équivalent du code C#)?

Répondre

11

Il n'y a rien d'équivalent au support USB de C# en Java. JUSB et Java-USB sont tous deux périmés et probablement inutilisables pour tout développement d'application sérieux. Si vous souhaitez implémenter une application USB multi-plateforme, il est préférable d'écrire une interface abstraite JNI qui parle aux bibliothèques natives Linux, Mac et Windows que vous devrez écrire vous-même. Je regarderais LibUSB pour gérer Mac et Linux. Windows, comme vous l'avez vu, est assez simple. Je viens de sortir un projet d'un an qui a fait exactement cela, et malheureusement, c'est la seule solution multiplateforme sérieuse. Si vous n'avez pas besoin de l'implémenter sous Windows et que vos besoins sont limités, vous pouvez vous en sortir avec l'une des anciennes librairies Java (jUSB ou Java-USB). Tout ce qui doit être déployé sur Win32/Win64 nécessitera un composant natif.

2

Le Java Communications API. Cela devrait fournir des fonctionnalités similaires à l'espace de noms C# System.IO.Ports.

+1

System.IO.Ports est pour les communications série sauf si l'OP implique une interface série-à-usb ?! – t0mm13b

+0

D'accord - System.IO.Ports n'a pas d'interfaces USB, est seulement pour les ports Com. –

+0

Si votre périphérique USB est exposé sur un port COM, vous pouvez utiliser System.IO.Ports. –

4

Voir les bibliothèques jUSB ou usb4java.

+5

Java-USB est uniquement Linux.Si c'est tout ce dont vous avez besoin, cela peut fonctionner, même si cela ne semble pas avoir été mis à jour depuis un moment. –

5

Vous voudrez peut-être jeter un oeil à usb4java - http://usb4java.org/index.html il semble prendre en charge Windows, Linux et Mac OS et semble être raisonnablement à jour au moment de la publication. Est malheureusement sous la LGPL donc peut ne pas convenir au développement commercial.

+2

Lier avec des bibliothèques LGPL ne devrait pas être un problème, si vous allez utiliser seulement leurs API dans votre code (et vous avez une licence non LGPL). Les bibliothèques sous licence GPL sont des licences copyleft, forçant ainsi la licence de votre code à être également sous licence GPL, quelle que soit la licence que vous avez utilisée. – Joseph

18

Nous avons utilisé usb4java pendant un an sur cross plate-forme (Linux et Windows) et cela fonctionne très bien.

Voir:

http://usb4java.org/

Ils sont très actifs et ont une très bonne avant javax USB.

Questions connexes