- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 20

Thema: Daten aus LOG-File visualisieren

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    07.04.2015
    Beiträge
    908
    Kannst Du mir sagen, wie lange die Ausführung des folgenden Quellcodes bei Dir dauert?

    Code:
    private void button1_Click(object sender, EventArgs e)
            {
                int Max = 500000;
                Random rnd = new Random();
                DateTime start = DateTime.Now;
                List<DateTime> dtList = new List<DateTime>(); 
                for (int i = 0; i < Max; i++)
                {
                    int year = 1999;
                    int month = 11;
                    int day = 22;
                    int hour = 11;
                    int minute = 12;
                    int second = 13 + rnd.Next(20);
                    ;
    
                    DateTime dt = new DateTime(year, month, day, hour, minute, second);
                    dtList.Add(dt);
                }
                System.Diagnostics.Debug.WriteLine(DateTime.Now.Subtract(start));
                System.Diagnostics.Debug.WriteLine(dtList.Count); 
    
            }
    Das Ergebnis siehst Du im "Direkt" oder "Immediate"-Fenster. (Menü Debug->Windows->Immediate). Bei meinem 5 Jahre alten Notebook (VS2010 mit .NET 4.0) dauert das 0,11 Sekunden.


    Bezüglich der Chart-Geschichte: Es hilft, die Daten für die Ansicht so aufzubereiten, dass nicht mehr Datenpunkte eingegeben werden, als maximal auf der Bildbreite sichtbar sind. Du musst also Daten gruppieren (über Minima, Maxima zusammenfassen). Ansonsten malt das ChartControl auch nur viele vertikale Linien übereinander.
    Geändert von Holomino (12.08.2015 um 09:08 Uhr)

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    21.03.2013
    Beiträge
    87
    Habe wieder etwas gelernt: mit dem Debug-Fenster hatte noch nciht gearbeitet; habe bisher immer ein "debug"-Text-Feld in der Anwendung beschrieben, dass ich für die Endanwender dann ausgeblendet habe...

    Der Code läuft sehr flott:
    00:00:00.0560000
    500000
    Ich habe dann auch mal Teile meines Codes in die Schleife gepackt:
    Code:
    start = DateTime.Now;
    string dummystring ="";
    for (Int32 Linenumbercounter = 10; Linenumbercounter < LogFileDataLineNumbers - 2; Linenumbercounter++)
    {
       dummystring = LogFileDataLine[Linenumbercounter];
       if (dummystring.Length == 36) // nur beschreibene Zeilen darstellen
       {
       try
          {
          LineNumber = Convert.ToInt32(dummystring.Substring(0, 7), 16);
    
          year = int.Parse(dummystring.Substring(8, 2), NumberStyles.HexNumber) + 2000;
          month = int.Parse(dummystring.Substring(10, 2), NumberStyles.HexNumber);
          day = int.Parse(dummystring.Substring(12, 2), NumberStyles.HexNumber);
          hour = int.Parse(dummystring.Substring(14, 2), NumberStyles.HexNumber);
          minute = int.Parse(dummystring.Substring(16, 2), NumberStyles.HexNumber);
          //DateTime dt = new DateTime(year, month, day, hour, minute, second);
          //dtList.Add(dt);
          }
          catch { }
        }
     }
    System.Diagnostics.Debug.WriteLine(DateTime.Now.Subtract(start));
    System.Diagnostics.Debug.WriteLine(LineNumber);
    Dann wird es schon etwas langsamer:
    00:00:00.6190000
    1572862
    Die ganze Sache wird so richtig langsam, wenn die auskommentierten unteren beiden Zeilen in die Schleife integriere, es dauert Stunden.....
    und da liegt auch das Problem, das ich durch Deinen Hinweis (Anzeige im Debug Ausgabe Fenster) gefunden habe
    Mein Log-File hat hin und wieder fehlerhafte Einträge (das war mir bekannt, aber ich hatte diesem Umstand keine so große Bedeutung beigemessen).
    Wenn ich noch eine kleine Plausibilitätsabfrage:
    Code:
    if (month > 0 && month < 13 && day > 0 && day < 32 && hour < 25 && minute < 61 && year > 2014 && year < 2100)
       {
       DateTime dt = new DateTime(year, month, day, hour, minute, second);
       dtList.Add(dt);
       }
    hinzufüge, dann sieht es wieder freundlich aus
    00:00:00.6930693
    1572862

    Übrigens mit ZedGraph bringe ich alle Daten (mit Grafik) in 1,6s auf dem Schirm. Das wäre absolut OK.
    Mit der Plausibilitätsabfrage sind es nur noch 1,4s das bringt dann neben Geschwindigkeit auch plausible Daten.
    Danke für die Hilfe!

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.10.2007
    Beiträge
    122
    ICH würde die Daten zunächst einer Datenbank wie MySQL oder MariaDB einspeisen, denn die ist auf das schnelle Herauslesen, Sortieren und den Umgang mit Timestamps usw. optimiert. Das Herumstochern und Parsen irgendwelcher Strings finde ich bei dieser Datenmenge ziemlich unprofessionell ... sorry. Ein der Aufgabenstellung angepasstes SQL-Statement an die DB und DANN die Visualisierung der gefundenen Daten - so macht man das.

    Falls noch Interesse an dem Auftrag besteht, ich mach' das - wahlweise für Mac, Win oder Linux mit grafischer Oberfläche. Aber im ganzen Thread wurde bisher immer noch nicht beschrieben (trotz mehrmaliger Nachfrage), was denn genau mit "Visualisierung" eigentlich gemeint ist! Ein einfaches Linien- oder Balkendiagramm oder eine virtuelle 3D-Landschaft?

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    21.03.2013
    Beiträge
    87
    Hallo,

    Ein einfaches Liniendiagramm reicht schon. Zeitraum auswählen und dann los:
    Das sieht heute ungefähr so aus:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Readouttool.jpg
Hits:	18
Größe:	34,3 KB
ID:	30556
    und funktioniert prinzipiell.
    Das ganze soll dann noch erweitert werden, der Ansatz mit der SQL Datenbank wäre da genau das richtige...
    => Interesse besteht noch. Realisierung mit Visual C# 2010 Express, ich möchte es dann weiter pflegen können.
    Erweiterung dahin gehend, dass die verschiedenen Log-Files über mehrere Jahre hintereinander zu einem Datensatz gefügt werden.
    Außerdem soll noch die Darstelluung (und der Ausdruck) von fünf Alarm und Warnmeldungen in einem separtaten Text-File parallel zur Grafik möglich sein.
    Also gerne nehme ich Unterstützung an. Der Auftrag ist noch nicht vergeben!

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von wkrug
    Registriert seit
    17.08.2006
    Ort
    Dietfurt
    Beiträge
    2.252
    Guck mal das Programm Logview www.logview.info .
    Das ist speziell um Datensätze zu visualisieren.
    Man kann da auch ein eigenes Open Format generieren, das nur an ein paar Konvrntionen gebunden ist.

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    18.10.2007
    Beiträge
    122
    Zitat Zitat von indeas Beitrag anzeigen
    Hallo,

    Ein einfaches Liniendiagramm reicht schon. Zeitraum auswählen und dann los:
    Das sieht heute ungefähr so aus:
    Klicke auf die Grafik für eine größere Ansicht

Name:	Readouttool.jpg
Hits:	18
Größe:	34,3 KB
ID:	30556
    und funktioniert prinzipiell.
    Das ganze soll dann noch erweitert werden, der Ansatz mit der SQL Datenbank wäre da genau das richtige... Der Auftrag ist noch nicht vergeben!
    Ich kann leider nur RealBasic/Xojo (ähnlich VisualBasic, compilierte EXE bzw. APP) oder HTML/PHP/JS (Web) anbieten, mit C# o.ä. hab' ich nix am Hut ... als DB empfehle ich MariaDB, wahlweise auf dem selben PC oder "irgendwo" im LAN, z.B. falls ein NAS vorhanden ist (QNAP oder Synology), eröffnen sich da ganz neue Möglichkeiten.

Ähnliche Themen

  1. Antworten: 5
    Letzter Beitrag: 29.04.2012, 00:08
  2. dependency file dep/***.o.d: No such file or directory
    Von SvLG im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 1
    Letzter Beitrag: 19.04.2010, 23:31
  3. RS232 Daten in Echtzeit visualisieren
    Von samm_2006 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 6
    Letzter Beitrag: 19.09.2009, 22:08
  4. RS232 Daten Visualisieren
    Von Che Guevara im Forum Software, Algorithmen und KI
    Antworten: 3
    Letzter Beitrag: 12.05.2009, 04:51
  5. MATLAB Simulink-Stateflow: dll File aus mdl File erstellen
    Von danionbike im Forum Software, Algorithmen und KI
    Antworten: 0
    Letzter Beitrag: 11.01.2008, 17:24

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen