HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2001/11/24

Windows USBプログラミング Windows USBプログラミング

(USB恐怖症を克服するまでの道のりです)

Tags: [Windows開発]





「USB プログラミング」を Amazonで探す(商品検索する)。

「Windows DDK」を Amazonで探す(商品検索する)。


なにかと話題のUSB、でも雲をつかむようでよくわからない。
とりあえずUSB恐怖症を克服しようと言う訳で、
DDKのダウンロードとDDK付属のUSBVIEWのコンパイルに挑戦します。
USB関係のプログラムをコンパイル&開発できる環境を構築していきます。
USBの動作原理とかの理解は後回しで、サンプルプログラムの改造で免疫を付けたいと思います。


使用素材
モルフィー企画汎用USB-IO
標準HIDデバイスとして認識するのでデバイスドライバが不要でとっつきやすい。

・MS-VisualC++5.0(VisualStdio97)
・MS-DDK98

参考資料
いしかわきょーすけさんのページ (EZ-USB でアマチュアUSB野郎になる)
ここのページを読んでUSB恐怖症をかなり和らげることができました。

【STEP1】DDKのダウンロード

まずマイクロソフトのHPからDDKをダウンロードする。
DDKダウンロードページ
※現在はダウンロードできません。
Download Complete File Set
Windows 98 DDK July '99 MSDN Release
DDK file: 25.8 MB; File Date: June 4, 1999

必要な個別ファイルだけダウンロードすればいいのだろうけど良く分からんので 上記26MBのファイルをダウンロードをしました。

【STEP2】DDKのインストール

 インストーラーを起動すると何をインストールするか聞いてきますので
 とりあえずUSB開発で必要と思われるUSBとHIDを選択します。





【STEP3】USBVIEW.EXEのコンパイル

DDKを解凍しても目的のUSBVIEW.EXEがありませんでした。
なので、USBVIEW.EXEをコンパイルします。

VC5のMSデベロップスタジオを使います。
USBVIEWファイル一式内にプロジェクトファイルが用意されていないので 新規プロジェクト作成でWIN32 Applicationを選択します。
プロジェクト名はUSBVIEWとします。


そしてプロジェクトでできた\USBVIEWディレクトリの中にDDKの中の
x:\98ddk\SRC\USB\USBVIEW
のファイル一式をコピーします。

そしてファイル一式をプロジェクトに追加します。


追加した後のファイルナビゲータの様子


ファイルをプロジェクトに追加したらビルドします。

なんかファイルが無いとかいろいろエラーが出るはずです。
コンパイル時にはインクルードファイルが
リンク時にはライブラリファイルが見つからない為エラーが出ます。

【STEP4】VC5の設定

DDKのインクルードディレクトリとライブラリディレクトリを VC5に認識させる必要があります。

ライブラリファイルの使用宣言
CFGMGR32.LIB COMCTL32.LIB


インクルードディレクトリの登録
x:\98ddk\INC\WIN98
x:\98ddk\src\inc


ライブラリディレクトリの登録
x:\98ddk\LIB\I386\free


【STEP5】コンパイル成功

以上の設定をすれば、めでたくUSBVIEW.EXEがビルド(コンパイル)できたと思います。


試しにモルフィー企画の汎用USB-IOを接続してみます。
きちんとデバイスの情報が取得できました。



※他の人はなんとも思わないと思いますが、私はコンパイル成功するまで不安と緊張の連続でした。


Jan Axelson's Lakeview Research のページの Visual C++ 6 code for communicating with custom HIDs, Version 2 のコンパイルに挑戦します。

Usbhidioc2をダウンロードして適当なディレクトリに解凍します。
もともとVC6で作られたものなので”UsbHidIoC.dsw”というプロジェクトファイルがありますので、これをVC5から読み込みます。



ライブラリファイルの使用宣言


ビルドしようとするとVC5の場合は下記エラーがでます。
stdafx.h(18) : fatal error C1083: インクルード ファイルがオープンできません。'afxdtctl.h': No such file or directory
stdafx.hの18行目の
#include <afxdtctl.h>
この行をコメントにすればOKです。

とりあえずコンパイル成功したと思います。
あとは、ソースリスト中のVENDOR-IDとPRODUCT-IDをモルフィーIO用に書き換えて、 必要に応じてパラメータ部分のプログラムを書き換えましょう。

こんなの作ってます。
ボタン操作でできるようなやつ
やってる事はUSBの勉強というより単なるMFCプログラミングに近いです。

勝手に改造したソースリストと実行ファイル一式
UsbHidIoC2.lzh




【不明点】モルフィーIOからの戻りパケットが一回遅れで帰ってくる??

具体的には
・USB接続
・パソコンから[01]コマンド送信 ->
・          <-  モルフィーIOから[ゴミ]パケット受信
・パソコンから[02]コマンド送信 ->
・          <-  モルフィーIOから[01]コマンドの時のパケット受信
・パソコンから[03]コマンド送信 ->
・          <-  モルフィーIOから[02]コマンドの時のパケット受信
という感じです。
とよぞうさんのVBサンプルを見てみると、同一ヘッダのパケットを受信するまでループするようになって回避するようになっているようです?

しかし、この場合でも同一ヘッダのコマンドを連続して送信するような場合は誤動作状態になると思います。

これはUSB-IO側ファームのバグでしょうか?(Ver2.3)




Tags: [Windows開発]

●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)

MicrochipのUSB内蔵PICマイコンで楽々USB機器開発
MicrochipのUSB内蔵PICマイコンで楽々USB機器開発

  C言語で楽にUSB機器の開発ができます




[HOME] | [BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c) 2001 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator

http://www.neko.ne.jp/~freewing/software/usb_ddk/