TuxDroidServer English
Status: Alpha
Brought to you by:
joelmatteotti
**Java program exmeple **
Warning !! The programing of this new project is often modified, it's
possible that's this sample don't work with the last version of SVN.color red
It's only a simple X program skeleton to comunicate with
TuxDroidServer. With this code, you may be able to create a complete
IHM to drive your TuxDroid.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class TuxDroid
{
private static Socket socket = null; /* socket's declaration */
private static PrintWriter out = null; /* output buffer's declaration */
private static BufferedReader in = null; /* input buffer's declaration */
/***
* use this function when you push head button
*/
private static void onHeadButton()
{
System.out.println("bouton de la tête");
}
/***
* use this function when you push Left wing
*/
private static void onLeftButton()
{
System.out.println("bouton gauche");
}
/***
* use this function when you push right wing
*/
private static void onRightButton()
{
System.out.println("bouton droit");
}
/***
* use this function when you plug battery charger
*/
private static void onChargerPlugged()
{
//
}
/***
* use this function when you unplug battery charger
*/
private static void onChargerUnPlugged()
{
//
}
/***
* use this function when you plug dongle on you computer
*/
private static void onDongleConnected()
{
//
}
/***
* use this function when you unplug dongle on you computer
*/
private static void onDongleDisConnected()
{
//
}
/***
* use this function when you push something in the remote controle
*
* @param button is the name of the button
*/
private static void onRemoteButton(String button)
{
switch(button)
{
case "K_RED": // red button of remote controle
{
out.println("Tux_State(16)");
System.out.println("battery level : "+getServerResponse());
}
break;
}
}
/***
* to obtain a respons from server after a request
*
* @return server's answer
*/
private static String getServerResponse()
{
String str="";
try
{
int x;
while((x = in.read()) != '\r')
{
if(x > 1)
str=str+(char)x;
}
return str;
}
catch(IOException ioe)
{
return "";
}
}
/***
* function to handle events from Tuxdroid
*
* @param message
*/
private static void manageEvents(String message)
{
String[] sp = null;
if(message.startsWith("#TUXBUTTON") || message.startsWith("#TUXREMOTE"))
{
//c'est un bouton
sp = message.split(":");
if(sp[0].equalsIgnoreCase("#TUXBUTTON"))
{
switch(sp[1])
{
case "LEFT": onLeftButton();
break;
case "RIGHT": onRightButton();
break;
case "HEAD": onHeadButton();
break;
}
}
if(sp[0].equalsIgnoreCase("#TUXREMOTE"))
{
//remote controle
onRemoteButton(sp[1]);
}
}
else
{
if(message.startsWith("#TUXCHARGER"))
{
sp = message.split(":");
switch(sp[1])
{
case "PLUGGED": onChargerPlugged();
break;
case "UNPLUGGED": onChargerUnPlugged();
break;
}
}
if(message.startsWith("#TUXDONGLE"))
{
sp = message.split(":");
switch(sp[1])
{
case "CONNECTED": onDongleConnected();
break;
case "DISCONNECTED": onDongleDisConnected();
break;
}
}
}
}
public static void main(String[] args) throws IOException
{
/* try to connect to server/
try
{
socket = new Socket("192.168.1.43", 9090); // ip adress et listener of TuxDroidServer
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out.println("Tux_Key(test)"); //more information about Tux_Key are in the wiki
}
catch (IOException e)
{
return;
}
String str="";
int x;
// to handle event
while(true)
{
str="";
while((x = in.read()) != '\r')
{
if(x > 31) /* de 0 à 31 are special character from ASCII */
str=str+(char)x;
}
manageEvents(str);
}
}
});
System.out.println(