USBインターフェース経由で配線電圧を読み取り、データを返すデバイスを探しています。このデータを解釈するために何かをプログラミングするにはどうすればよいでしょうか。どの言語を使用すればよいでしょうか。
編集: 役立つ場合、このプロジェクトは、包括的な ODB2 データ ポートをサポートしていない古いエンジン用のデジタル タコメーターを開発することです。したがって、DC 回路の電圧を読み取り、正確なグラフィカル インターフェイスを備えています。どこから始めればいいのかまったくわかりませんが、それを機能させることを決意しています! 窓用です。
12 に答える
libusbをチートして使用します。しばらく取り組んできたプロジェクトでこれを行い、データを処理するC++/ wxWidgetsアプリを作成しました。
私は最近、PC 上のアプリをwxPythonで書き直すことを考えていましたが、GUI 開発の方がはるかに高速であるためです。
データをどのように表示 / ログしますか? 利用可能なオプションがたくさんあります。wxWidgets の OpenGL 機能を使用すると、 2D であれ 3D であれ、かなりクールなことを (簡単に) 行うことができます。
kris と Jon Cage が提案したように、できれば libusb のようなライブラリを使用することをお勧めします。
libusb がニーズに合わず、Windows 用に開発している場合は、Jungoが提供するソフトウェアを検討する必要があります。繰り返しますが、これにより、Windows カーネル開発を必要とするのではなく、usb ソフトウェアがユーザー空間に移動します。(編集 3: Ilya はコメントで、Jungo は Linux でも利用できると指摘しています)
カーネル開発 (Windows または Linux) を行う必要がある場合は、C が唯一の選択肢です。Linux 開発については、Rubini によるこの本を調べてください。Windows ドライバーの開発については、Oney のこの本をお勧めします。ただし、どちらの場合も、ドライバー開発よりも libusb オプションを調査します。
ところで。USB デバイスの電圧を測定できることだけに関心がある場合 (コードを書くことは重要ではありません)、それを行う製品がたくさんあります。ナショナルインスツルメンツが提供する製品の一部をご覧ください。これらは、USB のハードワークとデータ取得に対処し、アプリケーションで使用する優れたプログラミング インターフェイスを提供します。
(編集2) uartのみを使用して組み込みプロセッサに直接インターフェースできるUSBシリアルチップ(たとえば、これら)もあります。通常、これらにはドライバーが付属しています。
libusbを見てください。Linux と Windows の両方で使用できます。
電圧を情報に変換するデバイスをまだ探しているので、ここにあるようなUSB-HID(ヒューマンインターフェイスデバイス)インターフェイスを実装するデバイスを調べることをお勧めします。
これらには、デバイスドライバーの開発や、ドライバーのインストールが不要であるという利点があります。それらは、マウス、キーボード、またはフラッシュドライブと同じくらいプラグアンドプレイです。インターフェイスはかなり一般的であり、ほとんどのメーカーは、デバイスからの情報の読み取り、デバイスのプラグイン/プラグアウト時の通知、デバイスの検出などに必要なライブラリも提供しています。
さらに、たとえばC#でHIDデバイスを使用する方法を説明しているこの記事を参照してください。
デイブ
最も簡単なオプションは、おそらく、ある種の既製のデータ取得デバイスを購入することです。多くの企業がそのようなものを作っていますが、時には恐ろしく高価です:
キットから独自のリンクを作成することもできますが、現時点ではリンクが見つかりません。
よりカスタムなものが必要な場合は、EZ-USBまたはPICを使用できます。これらは、ドライバーを作成せずにデバイスと対話できるようにするUSBドライバー(少なくともWindows用)を提供します。
これらのほとんどでプログラミング言語の選択肢がかなり広いので、私は過去にVisualBasic6のEZ-USBデバイスと通信するためのソフトウェアを作成しました。
ファームウェア側で独自の USB ドライバーをビットバンギングしていない限り、チップにはおそらく PC 用のドライバーが付属しています。たとえば、Microchip の PIC マイクロコントローラーには、PIC 用のファームウェアだけでなく、Windows ドライバーも付属しています。他の USB 対応チップにも独自のドライバーが付属していると思います。
ファームウェア側では USB ポートを直接操作しますが、PC 側では実際に操作するのはホスト コントローラーのドライバーだけです。
配線電圧を読み取りたい場合は、A/D コンバーターが必要なようです。A/Dコンバーターを自作していますか?もしそうなら、ここで質問しているホスト側のドライバーよりも、デバイス側で行うべき素晴らしいファームウェア プログラミングがいくつかあります。それ以外の場合は、A/D コンバーターを購入することになり、ベンダーが提供するドライバーを使用する必要があります。
私は個人的に、Microchip PIC を使用しています。これらには AD/DA コンバータ、USB ポート、無料のドライバとブート ローダーがあり、これらすべてが 4 ドル未満です。このようなデバイスを接続すると、COM ポートが 1 つ追加されます。残りは簡単です。
どのプラットフォームを見ているかは言いません。Windows を対象としている場合は、USB Revealedが参考になります。
ハードウェアについてはFTDI製品をご覧ください。
ハードウェアがあり、Windows でアクセスしたい場合は、最近WinUSBを発見しました。それが必要な場合は、このホワイト ペーパーをご覧ください。
WinUSB、libusb、および Jungo に加えて、ユーザーモードから USB デバイスをプログラミングするための別のオプションがあります - User-Mode Driver Framework (UMDF)。
UMDF ドライバーを作成することは、基本的に、好みのツールを使用してインプロセス COM コンポーネントを作成することです。