-         

Ergebnis 1 bis 7 von 7

Thema: Steuersoftware programieren, aber womit?

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.04.2005
    Ort
    Pforzheim
    Alter
    36
    Beiträge
    163

    Steuersoftware programieren, aber womit?

    Anzeige

    Hallo Leute,

    ich hoffe ich bin mit meinen Fragen hier richtig!

    ich würde meinen Roboter gerne vom PC aus fernsteuern, Sensoren abfragen, Kamera schwenken, Funktionen umschalten usw.....

    Ich habe mir auch schon den RN-Funk Bausatz von Roboterhardware.de bestellt und möchte das damit realisieren.

    Jetzt zu meinen Fragen:

    1. Mit was für einem Programm realisiere ich das am besten? (VB?)
    2. Kann ich für die Kommunikation zwischen der Software und dem Bot die
    selbe Schnittstelle benutzen mit der ich den Bot programiert habe?

    Was sind eure Erfahrungen, Meinungen? Hat das einer schon gemacht?

    Dieses Bild habe ich irgend wann mal im Web gefunden und würde meine Oberfläche gerne ähnlich gestallten.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken robby030kk.jpg  

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    17.08.2004
    Beiträge
    169
    Hallo,
    Also ich habe mal ein kleines Programm mit VB geschrieben welches die Blöcke à 8 Zeichen die ein AVR an meinen PC sendet wieder zu einem String zusammensetzt und dann die Sensordaten ausliest.
    Mit VB lässt sich sowas sehr leicht realisieren!

    Allerdings war das bei mir mit Kabel, aber soweit ich weiß sollen die Funkboards wie ein serielles Kabel funktionieren.

    Das Senden habe ich noch nicht getestet, aber ich denke mir dass das auch nicht wirklich ein so großes Problem darstellt. (Vor allem nicht in VB und Bascom.

    2. Kann ich für die Kommunikation zwischen der Software und dem Bot die
    selbe Schnittstelle benutzen mit der ich den Bot programiert habe?
    Also ich programmiere meinen AVR über Com-Port und über den gleichen Port läuft auch die Kommunikation.
    NULL PROBLEME

    Gruß Florian
    ---

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.10.2004
    Ort
    Rheinstetten
    Alter
    34
    Beiträge
    357
    Also für grafische Anwendungen, die nicht unbedingt auf Leistung getrimmt werden müssen, würde ich Delphi empfehlen. Die Sprache ist zwar etwas gewöhnungsbedürftig, aber man kann alles sehr schnell und leicht erstellen.

    Ansonsten ist mein absoluter Favorit Java. Wenn man sich ein bißchen in AWT, Swing oder SWT einarbeitet, hat man sehr schnell eine sehr hübsche grafische Oberfläche, dazu ist das Programm sehr schnell und man kann mit Java auch leicht z.B. auf die Ports zugreifen.
    Unwissenheit ist ein Segen

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    05.04.2005
    Ort
    Pforzheim
    Alter
    36
    Beiträge
    163
    Vielen Dank für die raschen Antworten, den Controller habe ich auch erfolgreich mit Bascom AVR programiert.
    Für die Steuersoftware wird hier öfter VB verwendet wie es auch Goldenflash macht.
    Mir würde aber Java mehr zusagen. Vor allem, weil ich das in der Schule lerne. Wäre ne gut lernergänzung (Zwei Fliegen mit einer Klatsche...)

    @maze2k: könntest du mir freundlicher weise einen Codeschnipsel posten, auf dem zu sehen ist wie du auf die Ports zugreifst? Wäre echt nett.

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.10.2004
    Ort
    Rheinstetten
    Alter
    34
    Beiträge
    357
    Schau mal in meinem Beitrag in diesem Thread: Link

    Dort habe ich die Links angegeben, wo man die Java Bibliotheken downloaden kann, um auf die Schnittstellen zuzugreifen.
    (hier)

    Unter dem Link Beispiele findest du zwei kleine Beispiele zum Zugriff auf die Ports.
    Unwissenheit ist ein Segen

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    "und man kann mit Java auch leicht z.B. auf die Ports zugreifen."


    hallo, könntest du mir mal ein beispiel senden mit den zugriff auf die serielle schnittstelle. würde mich sehr freuen. weil ich es noch nicht geschafft habe.
    danke.
    mail: pebisoft@arcor.de

    mfg pebisoft

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.10.2004
    Ort
    Rheinstetten
    Alter
    34
    Beiträge
    357
    Wenn du's unter Windows machst, probier einfach mal das, dann brauchst du nicht mal zusätzliche Bibliotheken:

    Code:
    File serial = new File("com1:4800,n,8,1");
    Das öffnet den Seriellen Port 1 mit 4800 bps, keine Parität, 8 bits, 1 stop bit.




    Wenn du mein Beispiel von oben benutzen möchtest, beachte die Installationsanweisungen.
    Wichtig ist:

    win32com.dll ins <JDK>/bin Verzeichnis kopieren

    javax.comm.properties ins <JDK>/lib Verzeichnis kopieren

    und natürlich die comm.jar in den classpath

    Hier das Beispiel, das ich oben gepostet habe, zusätzlich für Windows (das Beispiel war nur für Linux):

    Code:
    package de.robot.communication;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Enumeration;
    import java.util.TooManyListenersException;
    
    import javax.comm.CommPortIdentifier;
    import javax.comm.PortInUseException;
    import javax.comm.SerialPort;
    import javax.comm.SerialPortEvent;
    import javax.comm.SerialPortEventListener;
    import javax.comm.UnsupportedCommOperationException;
    
    public class Simple implements Runnable, SerialPortEventListener {
    	static CommPortIdentifier portId;
    
    	static Enumeration portList;
    
    	InputStream inputStream;
    
    	SerialPort serialPort;
    
    	Thread readThread;
    
    	public Simple() {
    		try {
    			serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
    		} catch (PortInUseException e) {
    		}
    
    		try {
    			inputStream = serialPort.getInputStream();
    		} catch (IOException e) {
    		}
    
    		try {
    			serialPort.addEventListener(this);
    		} catch (TooManyListenersException e) {
    		}
    
    		serialPort.notifyOnDataAvailable(true);
    
    		try {
    			serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8,
    					SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
    		} catch (UnsupportedCommOperationException e) {
    		}
    
    		readThread = new Thread(this);
    
    		readThread.start();
    	}
    
    	public void run() {
    		try {
    			Thread.sleep(1000);
    		} catch (InterruptedException e) {
    		}
    	}
    
    	public void serialEvent(SerialPortEvent event) {
    		switch (event.getEventType()) {
    
    		case SerialPortEvent.BI:
    
    		case SerialPortEvent.OE:
    
    		case SerialPortEvent.FE:
    
    		case SerialPortEvent.PE:
    
    		case SerialPortEvent.CD:
    
    		case SerialPortEvent.CTS:
    
    		case SerialPortEvent.DSR:
    
    		case SerialPortEvent.RI:
    
    		case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
    			break;
    
    		case SerialPortEvent.DATA_AVAILABLE:
    			byte[] readBuffer = new byte[20];
    
    			try {
    				while (inputStream.available() > 0) {
    					int numBytes = inputStream.read(readBuffer);
    				}
    
    				System.out.println(new String(readBuffer));
    			} catch (IOException e) {
    			}
    
    			break;
    		}
    	}
    
    	public static void main(String[] args) {
    		System.out.println("listing ports...");
    
    		boolean portFound = false;
    
    		portList = CommPortIdentifier.getPortIdentifiers();
    		while (portList.hasMoreElements()) {
    			portFound = true;
    			portId = (CommPortIdentifier) portList.nextElement();
    			if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
    				System.out.println("\tfound port: " + portId.getName());
    				Simple reader = new Simple();
    			}
    		}
    		if (!portFound) {
    			System.out.println("no port found!");
    		}
    	}
    }
    Das Programm gibt dann die Bytes aus, die ein Gerät am seriellen Port sendet.....
    Unwissenheit ist ein Segen

Berechtigungen

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