質問
USBポートにアクセスするJavaアプリケーションを作成して、USBを介して接続されたデバイスを読み取り、書き込みます。私が直面する問題は、そのようなことをするためにJavaで何を使用するかわからないということです。私はオンラインで検索して、呼ばれるものを見つけました JUSB
しかし、すべての投稿はかなり古いようです。
現在、私は使用しています RXTX
ライブラリですが、私は時々いくつかの同期エラーに遭遇します。 C#を使用して同等のものを実行すると、コードがはるかに少なくなり、同じ同期エラーに直面しません。
私の質問は、 USBポートにアクセスするために使用できるJREの最新バージョンに組み込まれたものはありますか (それは同等のC#コードと同じくらい簡単です)?
解決
JavaのC#のUSBサポートに相当するものはありません。 JusbとJava-USBはどちらも著しく時代遅れであり、深刻なアプリケーション開発のために使用できない可能性があります。
クロスプラットフォームUSBアプリケーションを実装したい場合は、本当に最善の策が抽象を書くことです Jni Linux、Mac、およびWindowsネイティブライブラリに話しかけるインターフェイスは、自分自身を書かなければならないものです。私は見ます libusb MacとLinuxを処理します。ご覧のとおり、Windowsは非常に簡単です。私はちょうどこれを行った1年間のプロジェクトから外れましたが、残念ながらこれは唯一の深刻なクロスプラットフォームソリューションです。 Windowsに実装する必要がなく、ニーズが限られている場合は、古いJava Libs(JusbまたはJava-USB)の1つを使用することができます。 win32/win64に展開する必要があるものはすべて、ネイティブコンポーネントが必要です。
他のヒント
Cross Platfom(LinuxとWindows)でUSB4Javaを1年間使用していますが、うまく機能します。
見る:
彼らは非常に活発で、非常に優れたJavax USBフロントを持っています。
USB4Javaをご覧ください - http://usb4java.org/index.html Windows、Linux、Mac OSをサポートしているように見え、投稿時に合理的に最新のように見えます。残念ながらLGPLの下にあるため、商業開発には適していない場合があります。
Java Communications API. 。これは、C#と同様の機能を提供するはずです System.io.ports 名前空間。
MACを使用している場合、USBに / volumes /ディレクトリでアクセスできます。
例:
「ドライブ」のファイルに書き込みたいので、Filepathは次のとおりです。
/Volumes/Drive/file.whatever
それが他のプラットフォームでどのように達成されているかはわかりませんが、これは私がMacで見つけた最も簡単な方法です