2010年03月02日

Androidにチャレンジ(1)~環境設定~

何でも屋な雰囲気になってきましたがとりあえず研修でAndroidをやるのでメモする。
えぇ元は携帯APL屋なのでいいんですがね


[準備するもの]
・JDK
・Android SDK
・Eclipse
・ADT Eclipse プラグイン
・Android SDK にPATHを通す

[やったこと]
・Pleiades all in one
・Android SDK
・ADT Eclipse プラグイン
・Android SDK にPATHを通す

Eclipse使うならPleiadesがネ申ですねー
JDKとかも入ってるし

<おまけメモ Ubuntu9.10にも>
・Eclipse
apt-get install eclipse
最新が入ってくれる
・Android SDK
tar zxvf android-sdk_r04-linux_86.tgz
・GEF Eclipse プラグイン
http://download.eclipse.org/tools/gef/updates/releases/
・ADT Eclipse プラグイン
https://dl-ssl.google.com/android/eclipse/

GEF入れないと入ってくれなかった。。
Pleiades だといろいろなプラグイン入れといてくれるので
入ってるんですよこれが



<素敵なリンク先>
これを書き始めたらこんな素敵な記事がありましたよー
開始時期がニアミスですわ。
http://andronavi.com/2010/02/9421
http://andronavi.com/2010/03/11140


ayuthky_m at 16:37|PermalinkComments(0)TrackBack(0)Android | Eclipse

2010年03月01日

WinUSB を使おう12~API編(4)最終~

あとはほとんどユーザ固有の使い方になってくると思うので特に記載するない様ではないと思いますが。

とりあえず
Control Transferと
Bulk/Interrupt Transferの使い方だけ

[Control Transfer]
BOOL __stdcall
  WinUsb_ControlTransfer (
    IN WINUSB_INTERFACE_HANDLE  InterfaceHandle,
    IN WINUSB_SETUP_PACKET  SetupPacket,
    IN PUCHAR  Buffer,
    IN ULONG  BufferLength,
    OUT PULONG  LengthTransferred,
    IN LPOVERLAPPED  Overlapped
  );

WinUSBだとPIPE制御系のは別APIで用意されてるので
使うとしたらVendorRequestを使う場合になるのでしょうかね

<引数の説明>
(1)WINUSB_INTERFACE_HANDLE・・・これは初期化で取得した「WinUSB Interface Handle」
(2)WINUSB_SETUP_PACKET・・・これが設定の要です。

typedef struct _WINUSB_SETUP_PACKET {
  UCHAR  RequestType;
  UCHAR  Request;
  USHORT  Value;
  USHORT  Index;
  USHORT  Length;
} WINUSB_SETUP_PACKET, *PWINUSB_SETUP_PACKET;
もともとUSBのSETUP PACKET構造体をラッパーしてるようなものなので入れる内容は準拠してる。
Vendor Requestを送ると仮定すると重要なのは

a)RequestType
・・・これには送受信の向き(Host to Device)や
  タイプStandard、Class、Vendorなのかなどを入れる
  
b)Request
・・・Vendor固有のIOCTLとか入れられるとこと
 
c)Value
d)Index
・・・まぁまぁ設定に必要なものを入れますよ

e)Length
・・・設定するデータがある場合はその送るデータ長になる

3)Buffer・・・設定するデータのポインタ

4)BufferLength・・・設定するデータ長

5)LengthTransferred・・・戻りデータ長

6)Overlapped・・・非同期待ち設定構造体
これはWindows SDKのRead/Writeと同じように使うただし待っているのは
WinUsb_GetOverlappedResultを使う。あとCreateFileのところでFILE_FLAG_OVERLAPPEDにしとかないと使えません

という感じで。

[
Bulk/Interrupt Transfer]
BOOL __stdcall
  WinUsb_ReadPipe (
    IN WINUSB_INTERFACE_HANDLE  InterfaceHandle,
    IN UCHAR  PipeID,
    IN PUCHAR  Buffer,
    IN ULONG  BufferLength,
    OUT PULONG  LengthTransferred,
    IN LPOVERLAPPED  Overlapped
  );

BOOL __stdcall
  WinUsb_WritePipe (
    IN WINUSB_INTERFACE_HANDLE  InterfaceHandle,
    IN UCHAR  PipeID,
    IN PUCHAR  Buffer,
    IN ULONG  BufferLength,
    OUT PULONG  LengthTransferred,
    IN LPOVERLAPPED  Overlapped
  );

(1)InterfaceHandle
(3)Buffer
(4)BufferLength
(5)LengthTransferred
(6)Overlapped
・・・・上のはControl Transferと同じ

(2)PipeID
・・・・は初期化したときにWinUsb_QueryPipeで取得したPipeIDですね

これでInとOutを使い分けするとよいでしょう。

こんなアバウトな感じでWinUSBの忘却メモはおしまいです

苦情は平謝りするしかないので受け付けられませんが、
何かの助けになれば幸いです。


ayuthky_m at 11:30|PermalinkWinUSB | driver

2010年02月26日

WinUSB を使おう11~API編(3)~

いやはややっと<初期化>できますよこれで

「CreateFile」で取得した「Device Object Handle」を
初期化API関数「WinUsb_Initialize」に食べさせてあげればいいわけです。

そして他のAPI関数はこの初期化関数で取得できた「WinUSB Interface Handle」(Device Object Handleとはちがいまっせ)
を食べさせてあげるしくみになっています。

これで違うDeviceがWinUSB Driverを使っても混線しないというわけですね。

あとはAPI編(2)で記載した
[初期化後 WinUSBと連携してるDevice情報を取得する関数]
たちをつかって情報を取得してあげて準備OKです。

ちなみに<終了>は
「WinUSB Interface Handle」を「WinUSB_Free」で
「Device Object Handle」を「CloseHandle」でさようならします。


ayuthky_m at 15:09|PermalinkComments(0)TrackBack(0)WinUSB | driver