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



Doc ID: 138
製品: WinDriver
Version:  12.80

WinDriver での Python サポート

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

Python で WinDriver を使用する利点

  1. 短いコード : Python 言語は通常、C 言語と比較して同じタスクを実行するのに最大 50% 少ないコードですみます。
  2. 簡単なインストール : 重いコンパイル ツールをインストールする必要はありません。Python は多くのオペレーティング システムでそのまま使用されており、ダウンロードに必要な容量も数 MB です。
  3. インタプリタ言語 : コードをコンパイルする必要はまったくありません。
  4. 簡単な統合 : WinDriver ハードウェア アクセス API を、同じプログラム内で利用可能な数千もの Python ライブラリと統合することができます。
  5. クロス プラットフォーム : サポートされているすべての WinDriver プラットフォームで同じユーザコードを使用 (WinDriver 共有ライブラリ wdapiXXXX.dll/so がローカル プラットフォームに適していることをご確認ください)。
  6. 簡単な翻訳 : Python の WinDriver のサンプルは、非常に C 言語と似ているので、2 つの言語間での比較と翻訳を容易にします。

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

始めるには

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

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

DriverWizard で Python コードを生成した後のソース コード ディレクトリに、DriverWizard によって作成された API の型定義と関数実装を含む新しい xxx_lib.py ファイルがあります。さらに、xxx_diag.py ソース ファイルがあります。これには main () 関数が含まれており、DriverWizard で生成された API を使用してデバイスと通信するサンプル診断アプリケーションが実装されています。wdlib サブディレクトリには、WinDriver API 構造体の実装、WinDriver ユーザ API DLL ファイルのインポート、変数の定義、およびユーザ アプリケーションの実行に必要なユーザ I/O 関数の実装を行う共有 Python コード ファイルが含まれています。

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

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

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

DriverWizard が生成した USB Python コード

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

wdlib サブディレクトリには、WinDriver API 構造体の実装、WinDriver ユーザ API DLL ファイルのインポート、変数の定義、およびユーザ アプリケーションの実行に必要なユーザ I/O 関数の実装を行う共有 Python コード ファイルが含まれています。

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

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