# Ringpuffer(Daten ein- und auslesen)



## Googlehupf (22. November 2013)

Hallo,

also die Aufgabe ist es 3 verschiedene Werte von einer Hardware zu holen, diese dann alle 500ms von der HW in den Ringpuffer schreiben und halt auszulesen und Grafisch nach der Zeit darzustellen(y-Achse: Werte und x-Achse: Zeit). Also 3 Graphen sind es insgesamt.

Das ganze wurd jetzt mit einem Timer-Event realisiert, die werde wurden also einfach immer eingelesen und gezeichnet, wenn es einen Timer_interrupt gab, aber nun muss das ganze mit Ringpuffer realisiert werden(Graphen zeichen und Werte einlesen hat ja schon geklappt mit Timer).

Hier mein Ansatz:


```
class Write_Task implements Runnable {
		Thread thread;

		public Task1() {
			thread = new Thread(this);
		}

		  public void run() {
			int anz;
			Daten[] src;
			//hier irgendwie die Daten auslesen, aber wie ist die Frage
			
			System.out.println("Task 1 gestartet!");
			anz = rbf.write(src, 1);
			while (anz < 1) {
				anz += rbf.write(src, 1);
			}
			System.out.println("anz = " +anz);
			try {
				thread.sleep(500); // Erfassung alle 500 ms
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	}

	

	class Read_Task implements Runnable {
		Thread thread;

		public Task2() {
			thread = new Thread(this);
		}

		public void run() {
			int anz;
			Daten[] dest = new Daten[10];

			System.out.println("Task 2 gestartet!");

			do {
				anz = rbf.read(dest, 1);
				
			} while (anz > 0);
		}
	}
}
```

Die Klasse "Daten" ist selbsterstellt und darin befinden sich die 3 get-Methoden, die 3 Werte von der Hardware holen. Naja eig. ist der Ringpuffer ja umsonst, da man nur Wert für wert rein schreibt und dann halt wert für wert liest.  Aber egal, die Aufgabenstellung will es halt so. 

Mir ist aber noch nicht so klar, was nun dieses Klassen-Array Daten bezwecken soll. In einem normalen Integer Array stehen doch Integer-Werte darin, aber was hilfst das Array Daten hier weiter? Was steht da in einem Feld? Objekte bzw. Instanzen von der Klasse Daten?

Also hätte wer einen Tipp, wie ich das so machen könnte? Also alle 3 Werte irgendwie in so ein "klassen-array" speichern und dann in den Ringpuffer schreiben, um in dann leicht wieder lesen zu können, sodass kein durcheinander der Werte kommt.

Danke!

mfg

Googlehupf


----------



## Sachertorte (27. November 2013)

Hallo Googlehupf

Gehtst du zufällig in die HTL Steyr?

lg Sachertorte


----------

