Frage

Ich muss Streaming-Daten (9600 Baud) Grafik, die in 2-4-Byte-Pakete von einer seriellen Schnittstelle kommt. Die Pakete müssen vor der grafischen Darstellung verarbeitet werden. Derzeit ich auf jedes vollständiges Paket ein Ereignis am Anhebung, die Ansprechbarkeit Themen auf der Grafikform verursacht.

Welche ist die beste Lösung für dieses Problem:

  • Pufferdaten und erhöhen gepufferten Daten in Ereignisse in bestimmten Zeitintervallen (zB 500 Millisekunden)
  • Build-Puffer und lassen Objekt Umfrage für gepufferten Daten / leeren Puffer instanziieren, wenn abgefragt
  • Andere (?)
War es hilfreich?

Lösung

Ich würde auf jeden Fall begrenzt die Aktualisierungsrate. Für solche Anwendungen ist ein jeweils 300 ms in der Regel genug.

auf dieser Grundlage wäre eine gute Umsetzung ein Worker-Thread, die die serielle Schnittstelle liest und fügt sie in einen Puffer. Der UI-Thread kann einen Timer verwenden, um die Daten abzufragen und die Anzeige zu aktualisieren.

separate Threads verwenden, der Arbeiter-Thread bei höherer Priorität ausgeführt werden kann, so dass Lastspitzen Anzeige Updates verzögern, aber keine Daten verloren gehen.

Ein weiterer Trick ist keine festen Zeitgeber zu verwenden, aber starten Sie den Timer, nachdem das Update abgeschlossen ist. Wenn also die Aktualisierung dauert viel Zeit z.B. aufgrund hoher Systemlast, verlangsamen die Updates herunter, effektiv Last zu reduzieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top