-         

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Rs232 und Java

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459

    Rs232 und Java

    Anzeige

    Hallo Zusammen,

    die Kommunikation mit meinem Roboter möchte ich mit einem Java-Programm realisieren.
    Da Java von sich aus keine RS232 Schnittstelle unterstützt, verwende ich RXTX
    http://www.rxtx.org/

    Ich schafe es, mein "Einfachst-Programm" zu übersetzen.

    import java.util.*;
    import gnu.io.*;

    Code:
    public class chTest {
    
        static Enumeration	      portList;   
    	static CommPortIdentifier portId;
    	   
    	/**
    	 * @param args
    	 */
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		System.out.println("TEst");
    		portList = CommPortIdentifier.getPortIdentifiers();
    	}
    
    }


    Aber bei Aufruf von java chTest erhalte ich immer folgendes:

    NoClassDefFoundError: chTest

    Hatte jemand schon mal dei gleichen Problemen mit RXTX

    Gruß,
    robo

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Die Schnittstelle über RXTX einzubinden, scheint wirklich ein harte Nuss zu sein.
    Es gibt eine schöne Anleitung für Eclipse, wie RXTX in die Projekte eingebunden werden muss:

    1. Copy RXTXcomm.jar file and dll files to the lib directory of your project
    2. Under Project | Properties | Java Build Path | Libraries
    3. click Add JARs... Button
    4. Select the RXTXComm.jar from lib directory
    5. Jar should now be in the Build Path
    6. expand the RXTXComm.jar entry in the list and select "Native Library Location"
    7. Select the project lib directory and apply

    Mein kurzes Programm läst sich auch mit Java übersetzen, aber zur Laufzeit entsteht dann folgende Fehlermeldung:

    java.lang.NoClassDefFoundError: javax/comm/CommDriver thrown while loading gnu.io.RXTXCommDriver

    Meiner Meinung nach muss das irgendwie damit zu tun haben, das die Java-VM die zugehörigen windows-dlls nicht findet.

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    11.12.2006
    Beiträge
    210
    Naja, das sieht mir nach einem Problem mit dem CLASSPATH aus (zumindest der erste Post). läuft es denn, wenn du es aus eclipse heraus startest? wo liegen denn diese dll-files? versuch doch mal, das Projekt zu einem ausführbaren JAR zu kompilieren, da sollten dann alle benötigten Dateien drin sein...
    Viel Glück

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Hallo Herkulase,

    das Problem hat sich mittlerweile gelöst, es war eine falsche Version von RXTX...jar.

    Vielen Dank für Deine Anmerkungen,
    robo

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.08.2006
    Beiträge
    140
    Hi robo.fr,
    kannst du mir bitte nochmal genau erklären wie du RXTX in Eclipse eingebunden hast. Ich habe folgendes Problem: Bei der Anleitung von oben gehts bei mir beim 3. Schritt nicht mehr weiter. Wenn ich auf Add JARs klicke erscheint ein neues Fenster mit dem Namen "JAR Selection" aber unten steht dann "No entries available." und ich kann nichts mehr machen.

    Die Dateien von RXTX habe ich schon in die richtigen Ordner getan (glaube ich zumindest)
    Vielen Dank schonmal
    Felix

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Tja, ist schon eine Weile her. Ich nehme mal an, dass es bei Schritt 3 hängt, weil Du einen Fehler in Schritt 1 gemacht hast: das Lib-Directory.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.08.2006
    Beiträge
    140
    Ich habe es jetzt hinbekommen.
    Im RXTX-Wiki habe ich ein Programmbeisspiel gefunden, das funktioniert. Ich habe das ganze getestet, indem ich meinen PC mit meinem Laptop über RS232 verbunden habe. Am Hyperterminal konnte ich dann sehen, dass mein PC den Text sendet. Aber eigentlich wollte ich mit dem Programm das RN-Motorcontrol ansteuern aber das funktioniert nicht.
    Hier ist der Code vielleicht kann mir ja jemand sagen warum es nicht geht:
    Code:
    import java.io.*;
    import java.util.*;
    import gnu.io.*; 
    
    
    public class RXTX {
        static Enumeration	      portList;
        static CommPortIdentifier portId;
        static String	      messageString = "##; Chr(3); Chr(2); Chr(3); Chr(100)";
        static SerialPort	      serialPort;
        static OutputStream       outputStream;
        static boolean	      outputBufferEmptyFlag = true;
       
        public static void main(String[] args) {
    	boolean portFound = false;
    	String  defaultPort = "COM1"; 
    
    	if (args.length > 0) {
    	    defaultPort = args[0];
    	} 
    
    	portList = CommPortIdentifier.getPortIdentifiers();
    
    	while (portList.hasMoreElements()) {
    	    portId = (CommPortIdentifier) portList.nextElement();
    
    	    if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
    
    		if (portId.getName().equals(defaultPort)) {
    		    System.out.println("Found port " + defaultPort);
    
    		    portFound = true;
    
    		    try {
    			serialPort = 
    			    (SerialPort) portId.open("SimpleWrite", 2000);
    		    } catch (PortInUseException e) {
    			System.out.println("Port in use.");
    
    			continue;
    		    } 
    
    		    try {
    			outputStream = serialPort.getOutputStream();
    		    } catch (IOException e) {}
    
    		    try {
    			serialPort.setSerialPortParams(9600, 
    						       SerialPort.DATABITS_8, 
    						       SerialPort.STOPBITS_1, 
    						       SerialPort.PARITY_NONE);
    		    } catch (UnsupportedCommOperationException e) {}
    	
    
    		    try {
    		    	serialPort.notifyOnOutputEmpty(true);
    		    } catch (Exception e) {
    			System.out.println("Error setting event notification");
    			System.out.println(e.toString());
    			System.exit(-1);
    		    }
    		    
    		    
    		    System.out.println(
    		    	"Writing \""+messageString+"\" to "
    		    				+serialPort.getName());
    		    		   
    		    try {
    			outputStream.write(messageString.getBytes());
    			
    		    } catch (IOException e) {}
    
    		    try {
    		       Thread.sleep(100);  // Be sure data is xferred before closing
    		    } catch (Exception e) {}
    		    serialPort.close();
    		    System.exit(1);
    		} 
    	    } 
    	} 
    
    	if (!portFound) {
    	    System.out.println("port " + defaultPort + " not found.");
    	} 
        } 
    }

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.08.2006
    Beiträge
    140
    Was auch etwas eigenartig ist: Wenn ich das Beispielprogramm von RN-MotorControl laufen lasse und den PC mit dem Laptop verbinde und mir das gesendete mit Hyperterminal anschaue kommen da irgendwelche Hieroglyphen bei raus. Wenn ich aber mein Java Programm teste kommt genau das raus, was ich auch sende.
    Weiß jemand woran das liegt?
    Damit es funktioniert müssten bei meinem Java Programm dann wahrscheinlich auch diese Hieroglyphen bei rauskommen.

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    22.05.2005
    Ort
    12°29´ O, 48°38´ N
    Alter
    48
    Beiträge
    2.731
    In der Regel stimmt einfach die Baudrate nicht
    Was ist wo eingestellt ?

  10. #10
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    12.02.2006
    Beiträge
    459
    Hallo txt,

    Ich habe es jetzt hinbekommen.
    Woran lag es denn? Vielleicht kann das anderen Leuten auch helfen.

    Gruß,
    robo

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •