Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich möchte gerne Daten über die Serielle Schnittstelle einlesen. Dies funktioniert soweit schon indem ich per RxTx einen InputStream erhalte.
Nun möchte ich diesen Input Stream in etwas wie eine Integer Liste konvertieren und die Daten die immer wieder im InputStream reinkommen an diese Integer Liste anhängen. Die Integer Liste sollte die Binary Werte der eingehenden Daten enthalten. Also je Element Werte von 0 bis 255.
Die Integer Liste soll so etwas wie ein Puffer sein. Ich möchte zunächst auf die ersten Elemente in der Integer Liste zugreifen und diese ohne sie aus dem "Puffer" zu holen lesen. Haben die Daten einen bestimmten Wert, möchte ich X Werte aus dem "Puffer" entnehmen und mit diesen weiter arbeiten.
Was wäre am besten als Int-Puffer zu nutzen. Und wie bekomme ich die Werte am effizientesten vom InputStream in den Int-Puffer? Der Int-Puffer sollte solche Funktionen haben wie
int IntegerPuffer.elementAt(int a_Index); // gibt den Integer Wert zurück von einem Element mit dem Index a_Index.
int IntegerPuffer.get(); // gibt den Integer Wert vom ersten Element im Puffer zurück und entfernt diesen aus dem Puffer.
IntegerPuffer.append(InputStream a_InputStream); // hängt die Werte von a_InputStream an. (Diese Funktionalität kann auch über mehrere Steps erfolgen)
mv_InputStream = new FileInputStream("c:\\x\\bytes.txt");
byte[] data = new byte[150];
int num;
List<Integer> las32_IntegerList = new ArrayList<Integer>();
while(mv_InputStream.available() > 0)
{
num = mv_InputStream.read(data, 0, data.length);
int ls32_IterateElements = 0;
for(ls32_IterateElements = 0; ls32_IterateElements < num; ls32_IterateElements++)
{
las32_IntegerList.add(data[ls32_IterateElements] & 0xFF);
}
/* have a look at the next byte in buffer */
int x = las32_IntegerList.get(0);
/* get the next byte from buffer and remove it */
int y = las32_IntegerList.get(0);
las32_IntegerList.remove(0);
}
Aber ich finde das umkopieren von mv_InputStream nach data und von data einzeln in die las32_IntegerList sehr uneffizient. Gibt es da eine bessere Möglichkeit?
Viele Schleifen und umkopieren. Ich dachte vielleicht gibt es da eine tolle Möglichkeit, dies mit dem Java "Framework" effizienter zu gestalten. Z.b. mit einer Methode die die direkt InputStream lesen kann oder so...