/*C:\eclipse\workspace\a\aa\RemoteSever.java*/ package aa; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; import rcx.RCXPort; public class RemoteServer extends Thread { private int server_port = 5066; private String portName; private ServerSocket server; private BufferedReader input; public RemoteServer( String portName ) { this.portName = portName; try { server = new ServerSocket( server_port ); } catch ( IOException e ) { e.printStackTrace(); } } public void run() { try { System.out.println( "waiting..." ); // クライアントが接続するまで待機する Socket client = server.accept(); System.out.println( "connect" ); // クライアントからの入力 input = new BufferedReader( new InputStreamReader( client.getInputStream() ) ); while ( true ) { // 1行ずつコマンドを受け取り処理を行う String line = input.readLine(); // 終了コマンド if ( line.equals( "end" ) ) { break; } // 前進 else if ( line.equals( "forward" ) ) { sendPacket( portName , new byte[]{ (byte) 0x21, (byte) 0x01 } ); } // 停止 else if ( line.equals( "stop" ) ) { sendPacket( portName , new byte[]{ (byte) 0x21, (byte) 0x02 } ); } // 後退 else if ( line.equals( "backward" ) ) { sendPacket( portName , new byte[]{ (byte) 0x21, (byte) 0x04 } ); } // 右旋回 else if ( line.equals( "right" ) ) { sendPacket( portName , new byte[]{ (byte) 0x21, (byte) 0x08 } ); } // 左旋回 else if ( line.equals( "left" ) ) { sendPacket( portName , new byte[]{ (byte) 0x21, (byte) 0x10 } ); } System.out.println( "line : " + line ); } System.out.println( "end" ); } catch ( IOException e ) { e.printStackTrace(); } } // RCXへパケットを送信します private static void sendPacket( String portName , byte[] packet ) { RCXPort port = new RCXPort( portName ); port.write( packet ); port.close(); } /** * @param args */ public static void main( String[] args ) { if ( args.length != 1 ) { System.err.println( "Usage : RemoteServer [port_name]" ); System.exit( -1 ); } RemoteServer server = new RemoteServer( args[0] ); server.start(); } }