テクニカル ドキュメント #140



Doc ID: 140
製品: WinDriver
Version:  14.00

WinDriver での Java サポート

WinDriver 14.00 より WinDriver は、Java 言語用のサンプルとコード生成機能を提供します。

Java で WinDriver を使用する利点

  1. 簡単な統合 : WinDriver ハードウェア アクセス API を、同じプログラム内で利用可能な数千もの Java ライブラリと統合することができます。
  2. クロス プラットフォーム : サポートされているすべての WinDriver プラットフォームで同じユーザコードを使用できます (WinDriver 共有ライブラリ wdapiXXXX.dll/so + wdapi_javaXXXX.dll/so がローカル プラットフォームに適していることをご確認ください)。
  3. 簡単な翻訳 : Java の WinDriver のサンプルは、非常に C 言語と似ているので、2 つの言語間での比較と翻訳を容易にします。

これらすべての利点は、貴重な時間とコストを節約し、ドライバーをできるだけ早く稼働させるためです。

始めるには

DriverWizard を使用して (以前のコードの生成方法と同じ方法で) Java コードを生成する、または、WinDriver/samples/java にあるコード サンプルを使用することもできます。

DriverWizard が生成した PCI/ISA Java コード

DriverWizard で Java コードを生成した後のソース コード ディレクトリに、DriverWizard によって作成された API の型定義と関数実装を含む新しい xxx_lib.java ファイルがあります。さらに、xxx_diag.java ソース ファイルがあります。これには main () 関数が含まれており、DriverWizard で生成された API を使用してデバイスと通信するサンプル診断アプリケーションが実装されています。

com/jungo/shared サブディレクトリと xxx_installation/redist/wdapi_javaXXXX.jar (XXXXはバージョン番号を表します) には、WinDriver API 構造体の実装、WinDriver ユーザ API DLL ファイルのインポート、変数の定義、およびユーザ アプリケーションの実行に必要なユーザ I/O 関数の実装を行う共有 Java コード ファイルが含まれています。

Java レイヤーと WinDriver で提供されるネイティブの wdapiXXXX.dll ファイル間のインターフェースを提供する Java Native Interface (JNI) ファイル wdapi_javaXXXX.dll は非常に重要なファイルです。JNI ファイルが、アプリケーションの実行に使用する Java 仮想マシン (JVM) のアーキテクチャとビットに対応していることを確認してください。

DriverWizard によって生成されたコードは、以下の要素とファイルで構成されています。xxx は、DriverWizard のプロジェクト名を表します。

  • カードのリソースの各要素 (メモリ範囲と I/O、レジスタと割り込み) にアクセスするためのライブラリ関数:
    • xxx_lib.java - WinDriver Card (WDC) API [B.2] を使ったハードウェア固有の API の型定義と実装。
  • デバイスと通信するために DriverWizard で生成された API (xxx_lib.java で宣言されている) を利用する診断プログラム:
    • xxx_diag.java - 生成された診断コンソール アプリケーションのソースコード。この診断プログラムを skeletal デバイスドライバとして使用してください。
  • 作成されたすべてのファイルのリストは、xxx_files.txt にあります。

コードを作成したら、以下で説明するようにコマンドラインからコンパイルして実行するか、Eclipse IDE で開くことができます。

機能がニーズに合うようにプログラムの関数 main () を変更してください。

DriverWizard が生成した USB Java コード

DriverWizard で Python コードを生成した後、ソースコード ディレクトリに新しい xxx_diag.java ソースファイルがあります (xxx は DriverWizard プロジェクト用に選択した名前です)。このファイルは診断用 USB アプリケーションを実装しています。これは、Plug-and-Play イベントの検出 (デバイスの挿入/取り外しなど)、読み取り/書き込みを含む、WinDriver の USB API を使用して USB デバイスを検索し通信する方法を示します。パイプに転送を書き込み、パイプをリセットし、デバイスのアクティブな代替設定を変更します。
生成されたアプリケーションは、複数の同一の USB デバイスの処理をサポートしています。

com/jungo/shared サブディレクトリと xxx_installation/redist/wdapi_javaXXXX.jar (XXXXはバージョン番号を表します) には、WinDriver API 構造体の実装、WinDriver ユーザ API DLL ファイルのインポート、変数の定義、およびユーザ アプリケーションの実行に必要なユーザ I/O 関数の実装を行う共有 Java コード ファイルが含まれています。

Java レイヤーと WinDriver で提供されるネイティブの wdapiXXXX.dll ファイル間のインターフェースを提供する Java Native Interface (JNI) ファイル wdapi_javaXXXX.dll は非常に重要なファイルです。JNI ファイルが、アプリケーションの実行に使用する Java 仮想マシン (JVM) のアーキテクチャとビットに対応していることを確認してください。

DriverWizard で生成された Java コードを Eclipse IDE で開く

  1. Java Development Kit (JDK) と Eclipse IDE がインストールされ、Java 開発用にセットアップされていることを確認してください。Linux では、必ず sudo として Eclipse を実行してください。
  2. 「ファイル」>「新規」>「Javaプロジェクト」に移動します。
  3. 「デフォルトの場所を使用」のチェックを外します。
  4. 「参照」をクリックして、生成されたコードのディレクトリを選択します。
    例: 「C:/WinDriver/my_projects/xxx」
  5. 「完了」をクリックします。 これで、コードをコンパイル、実行、編集できるようになります。

コマンドラインから DriverWizard で生成された Java コードをコンパイルして実行する

  • Java Development Kit (JDK) がインストールされていることを確認してください。
  • PATH 環境変数に JDK の bin サブディレクトリへのパスが含まれていることを確認します。
    (例: C:\Program Files\Java\jdkX.X.X_XXX\bin\、X を JDK バージョンに置き換えます)

Windows の場合:

set PATH=%PATH%;"C:\Program Files\Java\jdkX.X.X_XXX\bin\"

  • 生成されたコードをコンパイルします。

Windows の場合:

javac -cp ".;xxx_installation/redist/wdapi_java1400.jar" xxxDiag.java

Linux の場合:

sudo javac -cp .:xxx_installation/lib/wdapi_java1400.jar xxxDiag.java

  • 生成されたコードを実行します。

Windows の場合:

java -cp ".;xxx_installation/redist /wdapi_java1400.jar" -Djava.library.path=xxx_installation/redist/ xxxDiag.java

Linux の場合:

sudo java -Djava.library.path=xxx_installation/lib/ -cp .:xxx_installation/lib/wdapi_java1400.jar xxxDiag

自分の Java ユーザー アプリで Kernel PlugIn を使用できますか?

Kernel PlugIn はカーネル モジュールなので、C言語で記述する必要があります。ただし、Kernel PlugIn を呼び出すユーザー アプリケーションは、WinDriver でサポートされている言語 (C、C# .NET、Visual Basic .NET、Python、Java) であればどれでも使用できます。
Kernel PlugIn を使用して C 言語以外の言語で DriverWizard でコードを生成する場合、Kernel PlugIn コードは C 言語で生成されます。