vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Blitzschnelles Erstellen von grafischen Diagrammen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Sensordaten in Array speichern und GUTEN Zugriff darauf haben 
Autor: Seek1
Datum: 05.07.12 16:02

Hallo Leute,

Möchte mir ein Visualisierprogramm machen, um Daten zu speichern.
Das einlesen des Mikrocontrollers über USB funktioniert bereits.

Was geht nicht:
Ich kann die Daten nicht sonderlich gut "einreihen".

Ich lese die Sensornamen in eine Checklistbox ein.
Dort steht z.B.
Sensornummer 1
Aussensensor 67
Innensensor 34
usw.

Wie kann ich nun eine Struktur anlegen, um die Daten als erstes in einem Array zu speichern und dann geschickt darauf zuzugreifen?

z.B. so:
msgbox(SensorArray. (Sensorlist.SelectedItem).Temperature(12))

Bzw. neue Werte einzutragen.

SensorArray.((Sensorlist.SelectedItem).Temperature(Ubound(SensorArray.((Sensorlist.SelectedItem).Temperature) +1) = "23.78"

Gibt es da eine vernünftige Lösung?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Sensordaten in Array speichern und GUTEN Zugriff darauf haben 
Autor: xirton
Datum: 05.07.12 18:48

Man sollte vermeiden die Daten direkt in das Control zu werfen (bei dir die Listbox). Besser ist es, sich eine Datenstruktur aufzubauen und die per Databinding an deine Listbox zu übergeben.

Schreib dir zum Beispiel eine Klasse, welche die Sensoren abbildet. Mit Eigenschaften für den Sensornamen, Beschreibung und eine Liste von Messwerten (z.B. List of(Double)).
Für jeden der Sensoren erzeugst du eine Instanz, setzt den Namen, Beschreibung und in die Liste trägst du neue Werte ein (Messwertliste.add(<Wert>)).

Zum schluß einfach alle Sensorobjekte in eine einfache Liste werfen (List (of deinSensorObjekt) oder besser noch eine Bindinglist verwenden, wenn du Änderungen automatisch in der Listbox erkennen willst.

Nun einfach die Liste an deine Listbox binden: listbox.datasource = deineListe.
Anschließend die Anzeige setzen: Listbox.displaymember = "Sensorname".

Nun hast du all deine Sensoren in der Listbox. Wenn du nun zum Beispiel den letzten Wert deines gerade ausgewählten Sensors wissen willst: msgbox(ctype(Listbox.selecteditem,<deinSensorObjekt>).Messwertliste(Messwertliste.count - 1).tostring).

Wenn du keine Lust auf die Objektstruktur hast, kannst du auch ein Dictionary (of String, List(of Double)) machen. Und das Dictionary per Bindingsource an die Listbox binden.

Wenn du detailiertere Hilfe benötigst, einfach nochmal melden.

Beitrag wurde zuletzt am 05.07.12 um 18:50:42 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Sensordaten in Array speichern und GUTEN Zugriff darauf haben 
Autor: Manfred X
Datum: 05.07.12 19:01

Hallo!

Deine Struktur ist davon abhängig, wie die Messungen bei Dir einlaufen.

Kommt z.B. zu einem bestimmten Zeitpunkt ein Datenpaket, das die
aktuell ermittelten Messwerte aller Sensoren enthält, würde ich eine
DataTable erstellen (Spalten = Zeitstempel und Namen der Messkanäle).
In jede Zeile kommt der Inhalt eines Datenpakets.

Datenbindung der Table-Spalten an beliebige Controls ist möglich.

MfG
Manfred
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Sensordaten in Array speichern und GUTEN Zugriff darauf haben 
Autor: Manfred X
Datum: 05.07.12 19:06

Hallo!

Beim Binden längerer Listen: Zuerst Member festlegen, danach die Source zuweisen.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel