Allgemein solltest du dir die Objektorientierung mal etwas näher anschauen -- einfach alle Methoden static zu machen entspricht eigentlich nicht dem Gedanken der objektorientierten Programmierung
Jaja, ich weis schon: mit langer Erfahrung in der nicht-objektorientierten Programmierung hat man etwas Probleme mit der Denkweise.

Aber um es zu lernen habe ich jetzt eine Zwischenklasse "AsuroKommandos" eingeführt. Damit wird das Main Programm ziemlich gut lesbar:

int n;

AsuroKommandos asuro=new AsuroKommandos();

asuro.schnittstelleOeffnen("COM10");

for(n=0;n<10;n++) asuro.verbindungOk() ; // Prüfen und zeigen, ob Verbindung
for(n=0;n<10;n++) asuro.liniensensorLinks(); // Liniensensor anzeigen

asuro.schnittstelleSchliessen();


Allerdings: Ich frage mich, warum ich überhaupt die AsuroKommandos als Objekt benötige. Die Kommanos gibt es ja nur einmal. Ich könnte 100 AsuroKommandos-Objekte erzeugen, aber ich kann nur eines gebrauchen.

Hier die zugehörige AsuroKommandos Klasse:
Code:
/**
 *  Kommandos zur Kommunikation mit einem ASURO 
 *   
 *  Programm zur einfachen Kommunikation des PC mit dem ASURO
 *	über die Infrarot Schnittstelle
 *
 *	Kommandos:
 * 	
 *	t: Testkommando, Asuro sendet xASUROy zurück
 *	l: Abfrage des linken Liniensensors, Asuro sendet xZAHLy zurück 
 *
 *
 * @author robo.fr ( Nickname ) christoph(at)roboterclub-freiburg.de
 * 
 * Feb.2008
 * 
 */

public class AsuroKommandos 
{
	private static boolean debug = true;
	private RS232 irSchnittstelle=new Rs232();
	
	public void AsuroKommandos()
	{
		irSchnittstelle.ports_available();	
	}
	public void schnittstelleOeffnen(String port)
	{
		irSchnittstelle.open(port) ;
	}
	public void schnittstelleSchliessen()
	{
		irSchnittstelle.close() ;
		if(debug) System.out.println("beendet");
	}
	// Nachbau von Msleep aus der AsuroLibV261 für Java
	// ( leider müssen Methoden in Java klein geschrieben werden )
	public void msleep(int millisekunden)
	{
		long stop,current;
		
		java.util.Date zeit=new java.util.Date();
		stop=zeit.getTime()+millisekunden;
		
		current=0;
		while(current<stop)
		{
			java.util.Date zeit2=new java.util.Date();
			current=zeit2.getTime();
		}
	}
	
	/**
	 * public boolean verbindungOk()
	 *
	 * sende das Testzeichen 't' zum ASURO und warte auf die
	 * korrekte Antwort: "xASUROy" 
	 * falls der ASURO richtig antwortet, return true
	 * 
	 * @author robo.fr ( Nickname ) christoph(at)roboterclub-freiburg.de
	 * 
	 * Feb.2008
	 * 
	 */

	public boolean verbindungOk()
	{
		irSchnittstelle.read(); // Empfangsbuffer leermachen durch lesen
		irSchnittstelle.write((byte)'t'); // Testkommando senden
		msleep(200);
		String text=irSchnittstelle.read();
		if(debug) System.out.println(text);		
		if(text.contains("x") && text.contains("y"))
		{
			//if((text.indexOf("ASURO")-text.indexOf('x'))==1) 
			if(text.indexOf("xASUROy")!=-1) 
			{
				if(debug) System.out.println("Test OK");
				return true; // Test OK, der ASURO antwortet korrekt
			}
		}

		if(debug) System.out.println("No ASURO");
		return false;	
	}
	/**
	 * 	public double liniensensorLinks(
	 * 
	 *	Wert des linken Liniensensors lesen
	 *
	 * @author robo.fr ( Nickname ) christoph(at)roboterclub-freiburg.de
	 * 
	 * Feb.2008
	 * 
	 */
	public double liniensensorLinks()
	{
		irSchnittstelle.read(); // Empfangsbuffer leermachen durch lesen
		irSchnittstelle.write((byte)'l'); // Liniensensor Lesekommando
		msleep(500);
		String text=irSchnittstelle.read();
		if(debug) System.out.println(text);		
		double x;
		if(text.contains("x") && text.contains("y"))
		{
			String s=text.substring(text.indexOf("x")+1,text.indexOf("y"));

			x=Double.parseDouble(s);
				
			if(debug) System.out.println(x);
			return x; // Test OK, der ASURO antwortet korrekt
		}

		if(debug) System.out.println("No Number");
		x=Double.NaN; // return Not a Number
		return x;	
	}
}