2008年7月20日日曜日

LEGO MINDSTORM NXTを操作するiアプリを作りたい3

とりあえず、Bluetooth接続まわりのコードを少しずつ書いてます。

とりあえず、Bluetooth接続してNXTとのメッセージ送受信を行うNXTCommクラスを作成中。
メソッドの名前とか定数名とかはRuby-NXTまんまにしとくのが分かり易いかな。

public class NXTComm implements BTStateListener{

static Bluetooth bt = null;
static RemoteDevice rd = null;
static SPPConnection connection = null;
static OutputStream output = null;
static InputStream input = null;

//Constructer
public NXTComm() {
Dialog dialog = null;

//Bluetooth initialize
//Connect NXT
try{
bt = Bluetooth.getInstance();
rd = bt.searchAndSelectDevice();
if(bt.isConnectable(Bluetooth.SPP) == false
|| rd.isAvailable(Bluetooth.SPP) == false){
throw new Exception("Cannot use SPP");
}
connection = (SPPConnection)rd.connect(Bluetooth.SPP);
connection.setBTStateListener(this);
output = connection.openOutputStream();
}catch(Exception e){
dialog = new Dialog(Dialog.DIALOG_ERROR,"Bluetooth");
dialog.setText("ERROR:" + e);
if(rd == null){
dialog.setText("ERROR:" + e + ",RemoteDevice:null");
}
dialog.show();
IApplication.getCurrentApp().terminate();
}
} //end of Constructer

//BTStateLisntener interface's abstract method
//call when Bluetooth connection state changes.
//ex:Disconnected.
public void stateChanged(int state){
Dialog dialog = new Dialog(Dialog.DIALOG_ERROR,"Bluetooth");
if(state == DISCONNECT){
dialog.setText("ERROR:Disconnected.");
}else{
dialog.setText("ERROR:" + Integer.toString(state));
}
dialog.show();
IApplication.getCurrentApp().terminate();
}

その他メソッドなどなど、、、工事中

}


ともかく動けば良い精神でテキトーに書き進めてるので、気づくと美味しいスパゲッティになってるんだろうなぁ。。。

0 件のコメント: