2006-10-01
iアプリで赤外線リモコン信号を送信
注意点
- IrRemoteControl.send()の引数の型は配列、IrRemoteControlFrame[]
- send()はバックグランドで実行される(デフォルトで10秒間送信される)。送信中に再度send()すると例外が発生する。
- IrRemoteControlFrame.setFrameDuration()の単位は0.1msec、他のメソッドはusec単位
- 送信するデータはメーカー、モデル、コードから構成される。詳細はRed Snake Common
- リモコンモニタなどで収集したデータを下にするときには、LSBファーストかどうかに注意
- IrRemoteControl.setCarrier()の引数の単位は0.1msec、他のメソッドはusec単位。highDurationとlowDurationをそれぞれ指定するので、周波数が38kHzなら、
1000/38k/210000/38k/2になる。
iアプリのコード
import com.nttdocomo.device.IrRemoteControl;
import com.nttdocomo.device.IrRemoteControlFrame;
import com.nttdocomo.ui.*;
public class irremotetest extends IApplication {
int freq = 38; // KHz
int base = 425; // usec
boolean status = false;
IrRemoteControl irc;
public void start() {
irc = IrRemoteControl.getIrRemoteControl();
byte[] datas = new byte[6];
try {
Dialog dia = new Dialog(Dialog.BUTTON_OK, "IRリモコンテスト");
dia.setText("送信します\n");
dia.show();
datas[0] = 1;
datas[1] = 2;
datas[2] = 3;
datas[3] = 4;
datas[4] = 5;
datas[5] = 6;
send(datas);
Thread.sleep(10000);
dia.setText("送信しました\n");
dia.show();
this.terminate();
} catch (Exception e) {
}
}
public void send(byte[] data) {
irc.setCarrier(10000 / freq / 2, 10000 / freq / 2);
irc.setCode0(IrRemoteControl.PATTERN_HL, base * 1, base * 1);
irc.setCode1(IrRemoteControl.PATTERN_HL, base * 1, base * 3);
IrRemoteControlFrame[] ircf = new IrRemoteControlFrame[1];
IrRemoteControlFrame frame = new IrRemoteControlFrame();
frame.setFrameData(data, data.length * 8);
frame.setStartHighDuration(base * 8);
frame.setStartLowDuration(base * 4);
frame.setStopHighDuration(base * 1);
frame.setFrameDuration(data.length * 8 * base * 4 / 100 + 60 + 85);
frame.setRepeatCount(IrRemoteControlFrame.COUNT_INFINITE);
ircf[0] = frame;
irc.send(1, ircf);
status = true;
}
}
参考資料:ドコモの技術資料iアプリコンテンツ開発ガイド for DoJa-5.x 詳細編
プロテック
購入: 13人 クリック: 215回
購入: 13人 クリック: 215回
トラックバック - http://d.hatena.ne.jp/pomo123/20061001/1159666166

