arm/JavaからUSB HIDデバイスを制御する
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
[[FrontPage]]
#contents
2011/09/02からのアクセス回数 &counter;
** javaのアプリケーションからUSBのHIDデバイスを使う [#wd2...
2011年9月9日のトラ技オフ会にそなえて、これまで調べた
- [[arm/CodeBaseを使ったARMマイコンパーフェクト学習基板の...
- [[arm/libhidでARMマイコンパーフェクト学習基板にアクセス]]
- [[arm/JavaからARMマイコンパーフェクト学習基板にアクセス]]
をまとめて見ることにしました。
*** USBデバイスの問題点 [#t4cbdb64]
電子工作でUSBデバイスを作る場合に問題となるのは、
: OS依存 |
雑誌で紹介されるものが、特定のOSに依存するため、記事の内...
特にVBを使った例が多く、他の言語ではUSBデバイスを制御する...
: デバイスメーカーの提供するドライバー依存 |
デバイスメーカーがドライバーを提供していないと、そのUSBデ...
等がありました。
これに対する解が、
[[インターネット・ガジェット設計>http://www.amazon.co.jp/...
で紹介されている、
- libusbを使った制御
- ソフトウェア・プロトコルスタックを使ったデバイスの実装
でした。これを試してみたのが、
- [[avr/USB接続]]
- [[avr/javaからLibusbを使う]]
でした。
*** ARMマイコンパーフェクト学習基板では、usb_control_msg...
しかしながら、ARMマイコンパーフェクト学習基板でUSBのデバ...
USB-ROMのドライバーを使用するため、[[avr/USB接続]]で行っ...
で情報を受け渡しする方法が使えません。
そこで、libhidを使ってARMマイコンパーフェクト学習基板を制...
( [[arm/libhidでARMマイコンパーフェクト学習基板にアクセス...
** OSに依存しないアプリケーション [#v1eee95c]
つぎに、OSに依存しないアプリケーションを作成するために、l...
ARMマイコンパーフェクト学習基板にアクセスしてみました。
([[arm/JavaからARMマイコンパーフェクト学習基板にアクセス...
** 発表に備えて [#qaaae172]
今回の発表に備えて、javaで作ったGUIを持つHIDクライアント...
&ref(screen.png);
ARMマイコンパーフェクト学習基板に接続したブレッドボードの...
を制御してみることにしました。
&ref(board.png);
** 開発環境もOSに依存しない [#j09656dd]
ここまで、OSやドライバーに依存しない環境を求めてきたので、
開発環境もOSに依存しないものにしました。
*** CodeBase [#pef8ae5b]
[[arm/CodeBaseを使ったARMマイコンパーフェクト学習基板の使...
GCCベースのコンパイラーを使ったLPC1343用のライブラリーで...
元々は、
[[LPC1343 Reference Design>http://www.microbuilder.eu/Pro...
に開発されたみたいですが、今はBSD licenseで公開されている...
&ref(BRD-000002_300w.jpg);
*** CodeBaseを使ってHIDデバイスを作る場合の注意点 [#mac4e...
CodeBaseでは、projectconfig.hでデバイスの配置を定義してい...
HIDデバイスを作成する場合には、
- CFG_USBHID
- CFG_PRINTF_UART
をセットする必要があります。
#pre{{
/* USB Configuration */
#define CFG_USBHID
// #define CFG_USBCDC // D...
/* Printf Redirection */
// #define CFG_PRINTF_NONE // Igno...
#define CFG_PRINTF_UART // Use UAR...
// #define CFG_PRINTF_USBCDC // U...
}}
また、USB-Romから呼び出されるHID要求関数(core/usbhid-rom...
- usbHIDGetInReport
- usbHIDSetOutReport
を以下のように修正しました。
#pre{{
void usbHIDGetInReport (uint8_t src[], uint32_t length)
{
extern void targetUsbHIDGetInReport (uint8_t src[], uin...
targetUsbHIDGetInReport(src, length);
}
void usbHIDSetOutReport (uint8_t dst[], uint32_t length)
{
extern void targetUsbHIDSetOutReport (uint8_t dst[], ui...
targetUsbHIDSetOutReport(dst, length);
}
}}
ここでは、main.cにあるtargetUsbHIDxxxxReport関数に処理を...
実際の、処理はinput関数を使ってボードのスイッチの4bitを読...
点灯させる処理をします。
#pre{{
void targetUsbHIDGetInReport (uint8_t src[], uint32_t len...
{
src[0] = input();
}
void targetUsbHIDSetOutReport (uint8_t dst[], uint32_t le...
{
output(dst[0]);
}
}}
こんなに簡単な処理で、オリジナルのUSB HIDデバイスを作成す...
- &ref(main.c);
** GUIも簡単 [#fef9e82d]
javaでのGUIはEclipseのプラグインVisualEditorを使って簡単...
ほとんどお絵かき状態!
&ref(visualEditor.png);
*** Generic1ByteHIDの使用例 [#d1d6da13]
[[arm/JavaからARMマイコンパーフェクト学習基板にアクセス]]...
ともて簡単です。
mainメソッドでFrameのhidにGeneric1ByteHIDをセットし、その...
#pre{{
public static void main(String[] args) {
// TODO Auto-generated method stub
final MainFrame thisClass = new MainFrame();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLO...
thisClass.setVisible(true);
try {
thisClass.hid = new Generic1ByteHID(vendorId, produc...
thisClass.hid.putByte((byte)0);
}
catch (Exception e){
e.printStackTrace();
}
}
});
while(true) {
try {
thisClass.doHidPolling();
Thread.sleep(10);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
}}
*** USB HID Clientソース一式 [#i3476e20]
USB HID Clientのソース一式を以下にアップします。
- &ref(HIDソース.zip);
- &ref(USBHidClient.zip);
** QuickStart Boardもお薦め [#k7fc817e]
ブレッドボードでの実験には、
[[QuickStart Board>http://www.embeddedartists.com/product...
&ref(QuickStart_Board.png);
がお薦めです。((DigiKeyから購入しました))
** コメント [#y4525944]
#vote(おもしろかった[4],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
- 9月9日のオフ会発表の資料 &ref(トラ技オフ会発表用資料.pp...
#comment_kcaptcha
終了行:
[[FrontPage]]
#contents
2011/09/02からのアクセス回数 &counter;
** javaのアプリケーションからUSBのHIDデバイスを使う [#wd2...
2011年9月9日のトラ技オフ会にそなえて、これまで調べた
- [[arm/CodeBaseを使ったARMマイコンパーフェクト学習基板の...
- [[arm/libhidでARMマイコンパーフェクト学習基板にアクセス]]
- [[arm/JavaからARMマイコンパーフェクト学習基板にアクセス]]
をまとめて見ることにしました。
*** USBデバイスの問題点 [#t4cbdb64]
電子工作でUSBデバイスを作る場合に問題となるのは、
: OS依存 |
雑誌で紹介されるものが、特定のOSに依存するため、記事の内...
特にVBを使った例が多く、他の言語ではUSBデバイスを制御する...
: デバイスメーカーの提供するドライバー依存 |
デバイスメーカーがドライバーを提供していないと、そのUSBデ...
等がありました。
これに対する解が、
[[インターネット・ガジェット設計>http://www.amazon.co.jp/...
で紹介されている、
- libusbを使った制御
- ソフトウェア・プロトコルスタックを使ったデバイスの実装
でした。これを試してみたのが、
- [[avr/USB接続]]
- [[avr/javaからLibusbを使う]]
でした。
*** ARMマイコンパーフェクト学習基板では、usb_control_msg...
しかしながら、ARMマイコンパーフェクト学習基板でUSBのデバ...
USB-ROMのドライバーを使用するため、[[avr/USB接続]]で行っ...
で情報を受け渡しする方法が使えません。
そこで、libhidを使ってARMマイコンパーフェクト学習基板を制...
( [[arm/libhidでARMマイコンパーフェクト学習基板にアクセス...
** OSに依存しないアプリケーション [#v1eee95c]
つぎに、OSに依存しないアプリケーションを作成するために、l...
ARMマイコンパーフェクト学習基板にアクセスしてみました。
([[arm/JavaからARMマイコンパーフェクト学習基板にアクセス...
** 発表に備えて [#qaaae172]
今回の発表に備えて、javaで作ったGUIを持つHIDクライアント...
&ref(screen.png);
ARMマイコンパーフェクト学習基板に接続したブレッドボードの...
を制御してみることにしました。
&ref(board.png);
** 開発環境もOSに依存しない [#j09656dd]
ここまで、OSやドライバーに依存しない環境を求めてきたので、
開発環境もOSに依存しないものにしました。
*** CodeBase [#pef8ae5b]
[[arm/CodeBaseを使ったARMマイコンパーフェクト学習基板の使...
GCCベースのコンパイラーを使ったLPC1343用のライブラリーで...
元々は、
[[LPC1343 Reference Design>http://www.microbuilder.eu/Pro...
に開発されたみたいですが、今はBSD licenseで公開されている...
&ref(BRD-000002_300w.jpg);
*** CodeBaseを使ってHIDデバイスを作る場合の注意点 [#mac4e...
CodeBaseでは、projectconfig.hでデバイスの配置を定義してい...
HIDデバイスを作成する場合には、
- CFG_USBHID
- CFG_PRINTF_UART
をセットする必要があります。
#pre{{
/* USB Configuration */
#define CFG_USBHID
// #define CFG_USBCDC // D...
/* Printf Redirection */
// #define CFG_PRINTF_NONE // Igno...
#define CFG_PRINTF_UART // Use UAR...
// #define CFG_PRINTF_USBCDC // U...
}}
また、USB-Romから呼び出されるHID要求関数(core/usbhid-rom...
- usbHIDGetInReport
- usbHIDSetOutReport
を以下のように修正しました。
#pre{{
void usbHIDGetInReport (uint8_t src[], uint32_t length)
{
extern void targetUsbHIDGetInReport (uint8_t src[], uin...
targetUsbHIDGetInReport(src, length);
}
void usbHIDSetOutReport (uint8_t dst[], uint32_t length)
{
extern void targetUsbHIDSetOutReport (uint8_t dst[], ui...
targetUsbHIDSetOutReport(dst, length);
}
}}
ここでは、main.cにあるtargetUsbHIDxxxxReport関数に処理を...
実際の、処理はinput関数を使ってボードのスイッチの4bitを読...
点灯させる処理をします。
#pre{{
void targetUsbHIDGetInReport (uint8_t src[], uint32_t len...
{
src[0] = input();
}
void targetUsbHIDSetOutReport (uint8_t dst[], uint32_t le...
{
output(dst[0]);
}
}}
こんなに簡単な処理で、オリジナルのUSB HIDデバイスを作成す...
- &ref(main.c);
** GUIも簡単 [#fef9e82d]
javaでのGUIはEclipseのプラグインVisualEditorを使って簡単...
ほとんどお絵かき状態!
&ref(visualEditor.png);
*** Generic1ByteHIDの使用例 [#d1d6da13]
[[arm/JavaからARMマイコンパーフェクト学習基板にアクセス]]...
ともて簡単です。
mainメソッドでFrameのhidにGeneric1ByteHIDをセットし、その...
#pre{{
public static void main(String[] args) {
// TODO Auto-generated method stub
final MainFrame thisClass = new MainFrame();
SwingUtilities.invokeLater(new Runnable() {
public void run() {
thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLO...
thisClass.setVisible(true);
try {
thisClass.hid = new Generic1ByteHID(vendorId, produc...
thisClass.hid.putByte((byte)0);
}
catch (Exception e){
e.printStackTrace();
}
}
});
while(true) {
try {
thisClass.doHidPolling();
Thread.sleep(10);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
}}
*** USB HID Clientソース一式 [#i3476e20]
USB HID Clientのソース一式を以下にアップします。
- &ref(HIDソース.zip);
- &ref(USBHidClient.zip);
** QuickStart Boardもお薦め [#k7fc817e]
ブレッドボードでの実験には、
[[QuickStart Board>http://www.embeddedartists.com/product...
&ref(QuickStart_Board.png);
がお薦めです。((DigiKeyから購入しました))
** コメント [#y4525944]
#vote(おもしろかった[4],そうでもない[0],わかりずらい[0])
皆様のご意見、ご希望をお待ちしております。
- 9月9日のオフ会発表の資料 &ref(トラ技オフ会発表用資料.pp...
#comment_kcaptcha
ページ名:
SmartDoc