必要なもの。
1. libusb
2. pyUSB
3. SnoopyPo
ターゲットはUSB接続のA/D、D/Aモジュール。windows XPまでしかサポートされていないがwindows 7で使いたい。
1)開発環境はUbuntuなのでlibusbとpyUSBはapt-getでinstall
2)SnoopyPoでUSB通信を傍受。使い方は同梱のsnnopy_pro.txtに書いてある。xmlにexportしてBULK_OR_INTERRUPT_TRANSFERのendpointとpayloadbytesに注目
例えば今回の8bitD/A出力だと
<urb sequence="13">となっている。
<function>
BULK_OR_INTERRUPT_TRANSFER
</function>
<endpoint>
-1
</endpoint>
<packetcount>
1
</packetcount>
<payload packet="0">
<payloadcount>
4
</payloadcount>
<payloadbytes>
29033300
</payloadbytes>
</payload>
</urb>
3)pyUSBの基礎は他を当たってね。
4)2)の情報からD/A出力は
usb_dev.handle.interruptWrite(usb_dev.endpoints[0].address, [0x29, 0x03, 0xff, 0x34], timeout)
追記:
http://www.jespersaur.com/drupal/book/export/html/21
http://www.cs.indiana.edu/~bpisupat/work/usb.html
http://www.ladyada.net/learn/diykinect/
http://www.linuxjournal.com/article/7353
http://tali.admingilde.org/linux-docbook/writing_usb_driver.pdf
http://www.reactivated.net/weblog-content/20050806-reverse-0.2.txt
http://matthias.vallentin.net/blog/2007/04/writing-a-linux-kernel-driver-for-an-unknown-usb-device/