#187 closed Verbesserung (fixed)
DSfG Zeitstempel
| Reported by: | Melanie Hermann | Owned by: | Melanie Hermann |
|---|---|---|---|
| Priority: | kurzfristig | Milestone: | |
| Component: | Gesamtsystem | Version: | ALLE |
| Severity: | Verbesserung | Keywords: | |
| Cc: |
Description
- Zeitstempel bei AnagasDruckfehler-Geht falsch (3 Sek. zu spät)
- Manchmal wird beim Stundenmittelwert der letzte Wert in der Stunde nicht verwendet, sondern in die nächste Stunde übertragen:
- 10:59:55 Zeitstempel Ana. wird festgelegt
- .... (Sonstiger Programmcode)
- Ereignis NeueMess wird an DSfG geschickt
- ABER IN DER ZWISCHENZEIT KAM SCHON EREIGNIS STUNDENWECHSEL IN DER DSFG AN!
Change History (4)
comment:1 by , 12 years ago
comment:2 by , 12 years ago
2) GC-Zeit in SecTimerFunc() identisch mit DSfG-Zeit in Do_EverySecond(), denn beim Aufruf von Event_EverySecond() aus dem GC heraus wird die Uhrzeit als Parameter übergeben.
Lösung:
Problem war, dass zwischen Erstellen des Zeitstempels und Schicken des DSfG-Events die Chromfiles und die Simufiles geschrieben wurden.
- Das Erstellen dieser Files dauert wohl mehrere Sekunden, es wurde ganz an das Ende der Funktion DoMessungFertig() gelegt. Nun passiert das Beenden einer Analyse und das Schreiben dieser Analyse in die DSfG-Archive immer innerhalb einer Sekunde.
- Das Erstellen des Zeitstempels wurde etwas näher an das Schreiben der Archive geschoben. Jetzt nach Umkopieren der Daten.
comment:3 by , 12 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
comment:4 by , 12 years ago
Hinweise:
- Das Signal NeueMessung wird in CGc::DoMessungFertig() verschickt
- Eingetragen werden die Analysen in der DSfG in C_DSfGManager::Do_Archiv()
- Die Funktionsaufrufe verlaufen folgendermaßen:
Senderseite:
CGc::DoMessungFertig()
-> C_DSfGApi::Event_ArchivFillNeueMesswerte()
-> C_DSfGApi::arvFill()
-> C_DSfGApi::sendMsg()
-> C_QueueManager::Write() [Beschreibt die Queue]
und C_QueueManager::Signal() [Sendet Signal, dass neuer Eintrag in Queue]
Empfängerseite:
Thread_DsfgManager()
-> WaitForMultipleObjects() [Empfängt Ereignisse]
und Do_AllEvent() [Hier wird untersucht welche Queue neuen Eintrag enthält]
-> Do_Archiv() [Queue lesen und Archive schreiben]
DONE:
1) AnagasDruckfehler-Geht kommt jetzt genau zeitgleich mit Analysenende
Die Variable GCThreadTime wurde komplett aus dem Programm entfernt. Denn das war eine Zeit, die immer nur alle 3-5 Sekunden aktualisiert und als Zeitstempel für AnaEnde verwendet wurde.
Jetzt wird als AnaEnde-Zeitstempel CurrenLocalTime verwendet. Somit sind die Zeitstempel für die DSfG-Einträge AnagasDruckfehler-Geht und AnaEnde genau gleich.