Make

2台のLegoNXTをシンクロ走行させる(プログラム編)

この記事は約3分で読めます。
スポンサーリンク

以前の投稿にて「2台のLegoNXTをシンクロ走行させる」という動画をYoutubeにあげました
詳細→ 2台のLegoNXTをシンクロ走行させる

一段落しましたのでソースコードを公開します。

題名でもありますようにLejosNXTをBluetoothで操作を行っています
公式でもBluetoothの接続方法が記載されている(詳細)が、残念ながらできませんでした。。。(多分バージョンの違いや使用したNXTが古いからかも・・・)

ネットでソースコードを漁っていたらできたので載せます。以下ソース↓

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.EOFException;

import lejos.nxt.LCD;
import lejos.nxt.comm.Bluetooth;
import lejos.nxt.comm.NXTConnection;

public class ConnectBT {
	public static void main(String[] args) throws Exception{
		
		 LCD.clear();
		 LCD.drawString("Waiting...", 0, 2);
			 
			 //RAW形式での送受信
			 NXTConnection con = Bluetooth.getConnector().waitForConnection(0, NXTConnection.RAW);
			 LCD.drawString("Connected...", 0, 2);
			 
			 DataInputStream dis = con.openDataInputStream();
			 DataOutputStream dos = con.openDataOutputStream();
			 
			 while(true){
				 int n;
	                try{
	                    n = dis.readInt();
	                } catch (EOFException e)
	                {
	                    break;
	                }
	                LCD.drawString("Read: ", 0, 4);
	                LCD.drawInt(n, 7, 6, 4);

	                dos.writeInt(n);
	                dos.flush();
			 }
			 
			 LCD.drawString("Closing...  ", 0, 2);
			 dis.close();
			 dos.close();
			 con.close();
	}
}

 

肝となるのが16行目のRaw Socketで送受信をさせるようにすることです。

NXTConnection con = Bluetooth.getConnector().waitForConnection(0, NXTConnection.RAW);

を記述して、あとは送信するなり受信するなりしてください。

 

参考:
1. http://fedora.cis.cau.edu/~pmolnar/CIS687F12/Programming-LEGO-Robots/samples/src/org/lejos/sample/nxtreceive/NXTReceive.java

2. http://blog.livedoor.jp/prisonedkid/archives/1302852.html

コメント

タイトルとURLをコピーしました