-         

Ergebnis 1 bis 3 von 3

Thema: Sensordaten auslesen Arduino One eclipse java

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    08.10.2012
    Alter
    25
    Beiträge
    8

    Sensordaten auslesen Arduino One eclipse java

    Anzeige

    Hi, Ich versuche gerade mit der eclipse IDE für java, die Kommunikation zu meinen Arduino aufzubauen...

    http://playground.arduino.cc/Interfacing/Java
    Code:
    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import gnu.io.CommPortIdentifier; 
    import gnu.io.SerialPort;
    import gnu.io.SerialPortEvent; 
    import gnu.io.SerialPortEventListener; 
    import java.util.Enumeration;
    
    
    public class SerialTest implements SerialPortEventListener {
    	SerialPort serialPort;
            /** The port we're normally going to use. */
    	private static final String PORT_NAMES[] = { 
    			"/dev/tty.usbserial-A9007UX1", // Mac OS X
    			"/dev/ttyUSB0", // Linux
    			"COM3", // Windows
    	};
    	/**
    	* A BufferedReader which will be fed by a InputStreamReader 
    	* converting the bytes into characters 
    	* making the displayed results codepage independent
    	*/
    	private BufferedReader input;
    	/** The output stream to the port */
    	private OutputStream output;
    	/** Milliseconds to block while waiting for port open */
    	private static final int TIME_OUT = 2000;
    	/** Default bits per second for COM port. */
    	private static final int DATA_RATE = 9600;
    
    	public void initialize() {
    		CommPortIdentifier portId = null;
    		Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
    
    		//First, Find an instance of serial port as set in PORT_NAMES.
    		while (portEnum.hasMoreElements()) {
    			CommPortIdentifier currPortId = (CommPortIdentifier) portEnum.nextElement();
    			for (String portName : PORT_NAMES) {
    				if (currPortId.getName().equals(portName)) {
    					portId = currPortId;
    					break;
    				}
    			}
    		}
    		if (portId == null) {
    			System.out.println("Could not find COM port.");
    			return;
    		}
    
    		try {
    			// open serial port, and use class name for the appName.
    			serialPort = (SerialPort) portId.open(this.getClass().getName(),
    					TIME_OUT);
    
    			// set port parameters
    			serialPort.setSerialPortParams(DATA_RATE,
    					SerialPort.DATABITS_8,
    					SerialPort.STOPBITS_1,
    					SerialPort.PARITY_NONE);
    
    			// open the streams
    			input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
    			output = serialPort.getOutputStream();
    
    			// add event listeners
    			serialPort.addEventListener(this);
    			serialPort.notifyOnDataAvailable(true);
    		} catch (Exception e) {
    			System.err.println(e.toString());
    		}
    	}
    
    	/**
    	 * This should be called when you stop using the port.
    	 * This will prevent port locking on platforms like Linux.
    	 */
    	public synchronized void close() {
    		if (serialPort != null) {
    			serialPort.removeEventListener();
    			serialPort.close();
    		}
    	}
    
    	/**
    	 * Handle an event on the serial port. Read the data and print it.
    	 */
    	public synchronized void serialEvent(SerialPortEvent oEvent) {
    		if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
    			try {
    				String inputLine=input.readLine();
    				System.out.println(inputLine);
    			} catch (Exception e) {
    				System.err.println(e.toString());
    			}
    		}
    		// Ignore all the other eventTypes, but you should consider the other ones.
    	}
    
    	public static void main(String[] args) throws Exception {
    		SerialTest main = new SerialTest();
    		main.initialize();
    		Thread t=new Thread() {
    			public void run() {
    				//the following line will keep this app alive for 1000 seconds,
    				//waiting for events to occur and responding to them (printing incoming messages to console).
    				try {Thread.sleep(1000000);} catch (InterruptedException ie) {}
    			}
    		};
    		t.start();
    		System.out.println("Started");
    	}
    }
    Das klappt auch, aber wie lese ich nun Daten von einem Sensor auf den Analog-Port A0 aus?
    Und wie verwende ich eine der beispiel-libarys?

    Wenn ich den Artikel richtig verstanden habe (mein Englisch ist nicht das beste) muss ich zuerst den Arduino Programmieren (mit der mitgelieferten Software) und kann dann die Sensordaten auslesen, stimmt das?


    Gruß aloC-acoC

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.265
    Ja das hast du richtig verstanden.
    Du brauchst zum einen ein Programm auf dem Mikrocontroller, das den Port A0 ausliest und via UART sendet. Zum anderen brauchst du auf dem PC ein Programm das die Daten auf der Seriellenschnittstelle ausliest und anzeigt.

    Zum Thema wie man auf dem Arduino Analog werte einliest und Daten via UART weiterschickt, gibt es allerdings mehr als genug Beispiele im Internet.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    08.10.2012
    Alter
    25
    Beiträge
    8
    Ok, danke

    Ist es eigentlich möglich verschiedene Funktionen auf dem Arduino zu haben, die man dann via Java aufrufen kann?
    Also quasi eine Funktion "onLoad" die beim starten des Programmes aktiviert wird (ist ja standard), eine Funktion "getData()" welche einmalig die Daten ausliest und eine "getData(time)" welche die Daten über eine bestimmte Zeit ausliest?
    Ich würde das ungern über den Java Listener regeln.

Ähnliche Themen

  1. Antworten: 48
    Letzter Beitrag: 16.11.2014, 08:46
  2. Antworten: 2
    Letzter Beitrag: 01.11.2012, 16:21
  3. Arduino Duemillenova mit Eclipse Programmieren
    Von Kucky im Forum Arduino -Plattform
    Antworten: 13
    Letzter Beitrag: 06.10.2010, 22:19
  4. Arduino Duemillenova mit Eclipse Programmieren
    Von Kucky im Forum C - Programmierung (GCC u.a.)
    Antworten: 14
    Letzter Beitrag: 28.08.2010, 16:02
  5. Sensordaten auslesen
    Von A.T.I.R im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 3
    Letzter Beitrag: 11.08.2005, 18:12

Berechtigungen

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