11. UserSW
userSWオブジェクトは、ユーザスイッチポート入力機能を提供する組み込みオブジェクトです。
userSW Global Object
Methods()/Properties | Summary | Version | Note |
---|---|---|---|
userSW.on() | イベントハンドラを登録します。 | 00.00.17+ | |
userSW.stopEvent() | イベントハンドラを停止します。 | 00.00.17+ | |
userSW.getStatus() | ユーザースイッチの現在の状態を取得します。 | 00.00.17+ |
Details
userSW.on(event,callback[,opt1[,opt2]])
イベントハンドラを登録します。
使用できるイベント名は、assert、changeとなります。
イベントハンドラの登録は排他的に実行されるため、イベントハンドラが既に存在する場合は、新しいイベントハンドラが登録される前に停止されます。
event : ’assert’
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
event | string | mandatory | ユーザスイッチ押下時のイベントをハンドルします。 'assert' | スイッチが押下されている状態でイベントハンドラを登録した場合、その時点からスイッチが押されたと判断します。 |
callback(term) | function | mandatory | イベント発生時にコールバック処理を実行します。 term : {number} 内部で測定された連続押下時間[ms] | 計測はスイッチ押下イベント発生後から開始されます。 |
opt1 | number | optional | スイッチ押下検出時間[ms] スイッチが押された状態を検出するために必要な最小時間を指定します。 デフォルト値は0となります。 | |
opt2 | number | optional | スイッチ解放待ちタイマ[ms] opt1の条件が成立した後、このタイマが起動します。 タイムアウトする前に、スイッチが解放された場合、タイマを停止し、即時コールバックを実行します。 タイムアウトが発生した場合、スイッチが押下された状態が継続されていても、その時点でコールバックを実行します。 デフォルト値は0となります。 | opt2はopt1が指定されている場合のみ有効となります。 opt2に0が指定された場合は、即座にタイムアウトした状態となります。 |
return | undefined | - | - | 異常が発生した時は、例外となります。 |
event : ’change’
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
event | string | mandatory | ユーザースイッチの状態変化イベントをハンドルします。 'change' | イベントハンドラ登録直後の初期状態も変化とみなします。 |
callback(status) | function | mandatory | イベント発生時にコールバック処理を実行します。 status : {number} スイッチ状態を示します。 0: 解放状態 1: 押下状態 | イベント発生時の値と現在値が異なる場合があります。 |
return | undefined | - | - | 異常が発生した時は、例外となります。 |
userSW.stopEvent()
イベントハンドラを停止します。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
return | undefined | - | - |
userSW.getStatus()
ユーザースイッチの現在の状態を取得します。
Name | Type | M/O | Summary | Note |
---|---|---|---|---|
return | number | - | スイッチ状態を示します。 0: 解放状態 1: 押下状態 |
オブジェクトの使用例
Sample 1
ユーザースイッチの長押しと短押しをハンドルするサンプルです。
opt1には押下状態が有効となるまでの時間を設定し、opt2には、長押しを判定するまでの待ち時間を設定しています。
var minTerm = 100; //ms
var maxTerm = 2000; //ms
userSW.on('assert' ,function(realTerm) {
print('callback assertion time= ' + realTerm + 'ms');
if (realTerm >= maxTerm){
print('long');
}else if (realTerm >= 300){
print('short');
}else{
print('minimal');
}
} ,minTerm ,maxTerm);
Sample 2
ユーザースイッチの変化をハンドルするサンプルです。
userSW.on('change' ,function(status) {
print('callback SW status= ' + status);
print('getStatus() SW status= ' + userSW.getStatus());
});
Updated: 2020-05-01