動画はこちら
http://www.nicovideo.jp/watch/sm23786497
見ての通り、mbed FRDM-KL46Zにデッドマンスイッチ繋げて作りました。
・仕組み
Windowsにはデバッグ用としてのブルースクリーンを呼び出すキーコンビネーション(右ctrl押しながらScrollLock2回)があります。
(レジストリを設定して有効にしないといけないので、実はこのスイッチどのPCでも繋げたら即!・・・というわけではなかったりします)
懐かしのWindowsブルースクリーン--その再現方法とは
http://builder.japan.zdnet.com/os-admin/20379423/
キーボード操作でメモリ ダンプ ファイルを作成できる Windows の機能
http://support.microsoft.com/kb/244139/ja
それをmbedから叩いてあげているだけだったりします。
なので一応無害なブルースクリーンです。
とはいえ動作中の他のソフトの状態も完全無視で即発動、しかも本物なので復帰するには再起動するしかなかったりします。
・keyCode関数の実挙動の話
mbedのUSBKeybordライブラリを使えば簡単簡単♪と思っていましたが、実はそんなことはなく。
呼び出すキーコンビネーションが右ctrlを押しながらScrollLock2回。
USBKeybordライブラリのキー入力の関数の挙動は、キーを押して離す挙動になっています。
ライブラリ弄る前にUSB規格のお勉強。
スキャンコード - Wikipedia
マウス付きUSBキーボードのディスクリプタ構成を調べる
USBキーボードの規格として、「キーの同時入力は6キーまで」、「PCに送信するデータは今キーが押されている状態」ということが今回ライブラリを修正するヒントになりました。
ライブラリのkeyCode関数の中身を見てみると、送信したキーの直後に、キーが押されていない状態を送信していました。これを削除すると、keyCode関数が実行されるまでキーが押されたままの状態にすることができました。
NT金沢に持って行ってデモします。
押したい方は、どうぞ
0 件のコメント :
コメントを投稿