Hallo,
ich habe Daten die aus einem NetworkStream ausgelesen werden (in einem anderen Thread). Jetzt würde ich gerne eine Liste haben, in der der Nutzer eine Zieladresse, Datenlänge, Darstellungstyp etc auswählen kann, und die Daten dann angezeigt bekommt. Diese Anzeige müsste ich dann ca alle 0.5s oder jede Sekunde aktualisieren. Erstmal habe ich mir Folgendes gedacht:
Spoiler anzeigen
Ich hab jetzt eine
Wie binde ich die Liste so ans DGV, dass ich eine Darstellung wie im Bild erhalte?
Wie binde ich so, dass der Nutzer Items zur Liste hinzufügen und löschen kann?
Wie aktualisiere ich die Anzeige der Daten?
Ich hab leider nicht oft mit dem DGV gearbeitet, vielleicht habt ihr ja auch ein paar Links für die Basics.
Grüße
ich habe Daten die aus einem NetworkStream ausgelesen werden (in einem anderen Thread). Jetzt würde ich gerne eine Liste haben, in der der Nutzer eine Zieladresse, Datenlänge, Darstellungstyp etc auswählen kann, und die Daten dann angezeigt bekommt. Diese Anzeige müsste ich dann ca alle 0.5s oder jede Sekunde aktualisieren. Erstmal habe ich mir Folgendes gedacht:
C#-Quellcode
- public enum DisplayType
- {
- DisplayHex,
- DisplayDec,
- DisplayDecSigned,
- DisplayFloat
- }
- public enum DataAddress
- {
- None,
- DB1,
- DB2,
- DB3,
- DB44 // etc
- }
- public class Variable
- {
- private const string invalid = "N/A";
- private byte[] buffer = new byte[32];
- public DataAddress Address { get; set; }
- public uint Offset { get; set; }
- public uint DataSize { get; set; }
- public byte Bit { get; set; }
- public DisplayType DisplayType { get; set; }
- public string DisplayedValue
- {
- get
- {
- if (Address == DataAddress.None)
- return invalid;
- if (DataSize == 0 || Offset + DataSize > 32 || DataSize > 4 || DataSize == 3)
- return invalid;
- switch(DisplayType)
- {
- case DisplayType.DisplayHex:
- {
- var num = BitConverter.ToUInt32(buffer, (int)Offset);
- return num.ToString("X" + DataSize * 2);
- }
- case DisplayType.DisplayDec:
- return GetDecRepresentation();
- case DisplayType.DisplayDecSigned:
- return GetDecSRepresentation();
- case DisplayType.DisplayFloat:
- {
- if (DataSize != 4)
- return invalid;
- return BitConverter.ToSingle(buffer, (int)Offset).ToString();
- }
- }
- return invalid;
- }
- }
- private unsafe void ReadData()
- { // Zeugs zum Daten kopieren
- }
- private string GetDecRepresentation()
- {
- }
- private string GetDecSRepresentation()
- {
- }
- }
Ich hab jetzt eine
BindingList<Variable>
. Jetzt zu den Fragen:Wie binde ich die Liste so ans DGV, dass ich eine Darstellung wie im Bild erhalte?
Wie binde ich so, dass der Nutzer Items zur Liste hinzufügen und löschen kann?
Wie aktualisiere ich die Anzeige der Daten?
Ich hab leider nicht oft mit dem DGV gearbeitet, vielleicht habt ihr ja auch ein paar Links für die Basics.
Grüße