= drvAsynUSBHID (汎用USB HID用asynPortDriver) = [https://www.minicircuits.com/WebStore/dashboard.html?model=USB-SP4T-63 mini-circuits社USB-SP4T-63]をEPICSで制御するためのIOCをBBB上に作成することになった。[[br]] このデバイスは制御するためのIFがUSBしかなく、OSからはUSB HIDデバイスとして認識されるという代物だった。[[br]] 帯名さんが事前にpython + [https://github.com/signal11/hidapi HIDAPI]を使って制御できることを確認してくれていたので、制御自体は簡単であることがわかっていた。[[br]] ちょうど、drvAsynI2Cを触ったこともあり、いっその事 USB HID デバイスで汎用的に使用できるものを asynPortDriver で作ってしまおうということになった。[[br]] == ダウンロード == できたばかりなのでバグがあるかもしれませんが、ダウンロードできるようにしておきます。[[br]] [http://cerldev.kek.jp/trac/EpicsUsersJP/attachment/wiki/epics/bbb/debian/USBHID/USB_SP4T/drvAsynUSBHID_20170704.tar.gz drvAsynUSBHID 最新版(2017/0704)] == 概要 == ドライバサポート名は、drvAsynUSBHID とした。[[br]] * デバイスのオープンやデータの送受信は drvAsynUSBHIDで行う。 * 送受信するデータは streamdevice を使って解析する。 * データの送受信は 65 byte単位で行う。 * USBデバイスへのアクセスには HIDAPI を使う。 何故、一回の送受信データが65byteなのか詳しくはわかりませんが、今回は深く突っ込みません{{{(^^;)}}}。[[br]] == 依存関係 == drvAsynUSBHIDは、HIDAPIをasynPortDriverでラッピングしたものなので、HIDAPIをOSにインストールする必要があります。 * EPICS base 3.14.12.5 以上 * asynDriver 4-26 以上 * HIDAPI ここではBBBで使用していますが、普通のPCでも動くと思います。[[br]] == インストール == BBB + Debian8 を前提にして説明します。[[br]] === HIDAPI === まずはHIDAPIをインストール。 {{{ root@beaglebone:~# apt-cache search hidapi libhidapi-dev - Multi-Platform library for communication with HID devices (development files) libhidapi-hidraw0 - Multi-Platform library for communication with HID devices (hidraw backend) libhidapi-hidraw0-dbg - Debugging symbols for libhidapi-hidraw0 libhidapi-libusb0 - Multi-Platform library for communication with HID devices (libusb backend) libhidapi-libusb0-dbg - Debugging symbols for libhidapi-libusb0 }}} libusb版とhidraw版がありますが、今回はhidraw版を使用。 {{{ root@beaglebone:~# apt-get install libhidapi-hidraw0 libhidapi-dev }}} これ以降の使い方は、ダウンロードファイルのREADME.mdに書いてあるのでそちらを参照。 == 参照HP == [https://github.com/signal11/hidapi signal11/hidapi][[br]] [http://www.signal11.us/oss/hidapi/ HID API for Linux, Mac OS X, and Windows][[br]] [http://rilassaru.blog.jp/archives/1808192.html HIDAPI:Signal11の罠][[br]]