g26a345の日記: USB-IO その1
日記 by
g26a345
モルフィーのUSB-IOを、今更ながら使ってみた。
モルフィー自身はいろいろ問題があったけど、便利に使えるものは使おう。
買ったのはテクノキットのやつ。
製作は簡単。
念の為、自宅にあった20ピンのICソケットを使った。
もしIC壊したらICだけ買えばいいかな....と思ったけど、その心配もないみたい。
ICのピンにはLEDも何もつながず、とりあえずLinuxのUSBポートにつないでみた。
すると、
usb 1-2.1: new low speed USB device using ehci_hcd and address 3
usbcore: registered new driver hiddev
hiddev96: USB HID v1.00 Device [Morphy Planning generic USB IO ver.2] on usb-0000:00:10.3-2.1
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.0:USB HID core driver
てな感じでHIDで認識されている模様。
USB-IOでぐぐると、Linux用のドライバーとかあるみたいだけど、
とりあえず、標準のHIDデバイスをダイレクトに叩いてみた。
デバイスは /dev/usb/hiddev0 になっているらしい。
USB HID for Linux USB( http://www.frogmouth.net/hid-doco/linux-hid.html )を見て、
ここの HIDDEV Example をそのままやってみたり。
たしかに認識してはいるようだ。
少しプログラムを変えてみた。
#include <stdlib.h>
#include <stdio.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <asm/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/hiddev.h>
int main (int argc, char **argv) {
int fd = -1;
char name[1024];
/* ioctl() requires a file descriptor, so we check we got one, and then open it */
if (argc != 2) {
fprintf(stderr, "usage: %s hiddevice - probably /dev/usb/hiddev0\n", argv[0]);
exit(1);
}
if ((fd = open(argv[1], O_RDONLY)) < 0) {
perror("hiddev open");
exit(1);
}
/* ioctl() accesses the underlying driver */
ioctl(fd, HIDIOCGNAME(1024), name);
/* the HIDIOCGVERSION ioctl() returns an int */
/* so we unpack it and display it */
printf("hiddev device name is %s\n",name);
close(fd);
exit(0);
}
単にIOCTLをHIDIOCGNAMEにしてみただけだけど。
コンパイルして実行したら、
hiddev device name is Morphy Planning generic USB IO ver.2
と出た。
わーい。
モルフィー自身はいろいろ問題があったけど、便利に使えるものは使おう。
買ったのはテクノキットのやつ。
製作は簡単。
念の為、自宅にあった20ピンのICソケットを使った。
もしIC壊したらICだけ買えばいいかな....と思ったけど、その心配もないみたい。
ICのピンにはLEDも何もつながず、とりあえずLinuxのUSBポートにつないでみた。
すると、
usb 1-2.1: new low speed USB device using ehci_hcd and address 3
usbcore: registered new driver hiddev
hiddev96: USB HID v1.00 Device [Morphy Planning generic USB IO ver.2] on usb-0000:00:10.3-2.1
usbcore: registered new driver usbhid
drivers/usb/input/hid-core.c: v2.0:USB HID core driver
てな感じでHIDで認識されている模様。
USB-IOでぐぐると、Linux用のドライバーとかあるみたいだけど、
とりあえず、標準のHIDデバイスをダイレクトに叩いてみた。
デバイスは /dev/usb/hiddev0 になっているらしい。
USB HID for Linux USB( http://www.frogmouth.net/hid-doco/linux-hid.html )を見て、
ここの HIDDEV Example をそのままやってみたり。
たしかに認識してはいるようだ。
少しプログラムを変えてみた。
#include <stdlib.h>
#include <stdio.h>
#include <sys/ioctl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <asm/types.h>
#include <fcntl.h>
#include <unistd.h>
#include <linux/hiddev.h>
int main (int argc, char **argv) {
int fd = -1;
char name[1024];
/* ioctl() requires a file descriptor, so we check we got one, and then open it */
if (argc != 2) {
fprintf(stderr, "usage: %s hiddevice - probably /dev/usb/hiddev0\n", argv[0]);
exit(1);
}
if ((fd = open(argv[1], O_RDONLY)) < 0) {
perror("hiddev open");
exit(1);
}
/* ioctl() accesses the underlying driver */
ioctl(fd, HIDIOCGNAME(1024), name);
/* the HIDIOCGVERSION ioctl() returns an int */
/* so we unpack it and display it */
printf("hiddev device name is %s\n",name);
close(fd);
exit(0);
}
単にIOCTLをHIDIOCGNAMEにしてみただけだけど。
コンパイルして実行したら、
hiddev device name is Morphy Planning generic USB IO ver.2
と出た。
わーい。