[Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Man muss zuerst das Protokoll rausbekommen, also was da konkret an Daten übertragen wird. Ich gehe jetzt mal davon aus, dass die Kommunikation nicht verschlüsselt ist, wäre bei so nem Gerät jedenfalls ein mächtiger Overkill. Die Daten anschließend zu erfassen und darzustellen ist der einfachere Teil, zumindest wenn man schonmal mit GDI etc. programmiert hat :ugly:

Ein Alternative wäre, eine Art COM-Sniffer zu nutzen, der lokal auf dem System arbeitet. Der richtet sich dann als weiteren COM-Port ein und leitet alle Anfragen bzw. Daten an den echten Heatmaster-Port weiter. Die Messdaten greift er vorher ab und stellt sie über IPC oder was anderes einem anderen Prozess (dein Programm) bereit. Ich bin mir jetzt nicht ganz sicher, aber mein Bauchgefühl sagt mir, dass ich mit dieser Lösung schneller wäre als ne eigene GUI zu schreiben (was in C mit WinAPI relativ hässlich wird)
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Das hört sich gut an, nur werde ich mit meinen noch beschränkten Programmierkenntnissen Probleme bei der Programmierung bekommen.
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Ich kann mal gucken, ob ich so ein Tool finde. Ansonsten muss ich mich wohl mal selber hinsetzen und nen Treiber zusammenfrickeln :ugly:

Also ich versuche das mal zu skizzieren:
Heatmaster<->Original-Treiber<->Virtueller COM-Treiber* (der Sniffer)<->Heatmaster-Software

*-> liefert die übertragenen Daten im Shared memory oder über ein Interface (DLL) an andere Programme aus (read only?)

Hmm... jetzt wo ich noch mal darüber nachgedacht habe, ist ne eigene GUI vllt. doch einfacher :ugly:

Naja, vielleicht solltest du doch erst mal bei den Dateien bleiben, ändern kann man das später ja immer noch. Ich müsste auch erst meine Kenntnisse bzgl. der Treiberentwicklung auffrischen, ist schon ne Weile her...
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Das hört sich relativ aufwendig an und ich kann mir nicht vorstellen, dass du Lust hast, das alles für mich zu programmieren. :D

Betrachtet man die Funktionsweise, ist die Log die einfachste Möglichkeit. Eine grafische Oberfläche, das Einlesen über einen virtuellen COM Port usw. kann man später immer noch hinzufügen.
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Ja, würde ich jetzt auch sagen. Wenn ich wüsste, ich müsste mich nicht auf meine Klausuren Anfang Mai vorbereiten, würde ich mich mal dran versuchen. Mal schaun, bin jedenfalls für Fragen zu erreichen bzw. hier im Forum unterwegs :D
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Also der Vorschlag von bingo88 hört sich gar nicht so schlecht an. Das eleganteste wäre es wirklich, die Daten vom ComPort abzufangen. Die Frage ist, welche Rechte man dazu braucht (evtl. Administratorrechte?)

Ihr könnt ja mal PortMon anwerfen und dann schauen, was so über die serielle Schnittstelle geht:
Portmon for Windows

Und wenn PortMon Traffic abfangen kann, dann kann man das mit Sicherheit auch selbst.
edit: Sehe grad, dass auf der PortMon-Seite sogar beschrieben steht, wie man das macht:
Wenn Sie einen Port für die Überwachung auswählen, sendet Portmon eine Anforderung mit dem gewünschten NT-Namen (z. B. „device\serial0“) an den Gerätetreiber. Mithilfe von Standardfilter-APIs hängt der Treiber sein eigenes Filtergeräteobjekt an das Zielgeräteobjekt an. Als Erstes wird das Zielgerät mit ZwCreateFile geöffnet. Anschließend wird das Handle, das von ZwCreateFile zurückgegeben wird, in einen Geräteobjektzeiger übersetzt. Der Treiber erstellt ein eigenes Filtergeräteobjekt, das auf die Eigenschaften des Ziels abgestimmt ist, und ruft dann IoAttachDeviceByPointer auf, um so den Filter einzurichten. Von diesem Zeitpunkt an „sieht“ der Portmon-Treiber alle Anforderungen, die an das Zielgerät gerichtet sind.
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Dass man Administratorrechte benötigt ist nicht weiter von Belang, denn selbst für das Installationsprogramm benötigt man Administratorberechtigungen.
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Momentan wird noch nicht programmiert, weil noch Einiges in Bezug auf C gelernt werden muss. Des Weiteren besteht das Problem, dass ich beim Aufsetzen des Betriebssystems den Projektordner nicht mehr sichern konnte, weil der Rechner sich nicht mehr starten ließ. Es gibt zwar ein Backup, was allerdings nicht ganz aktuell ist. Aber das Programm war sowieso nicht sonderlich gut, weshalb noch Verbesserungpotential besteht. :schief:
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

okay, naja schade drum.

Du sagtest etwas davon, dass die Implementierung in LCD Hype verdammt schwer werden würde. Gibts nicht noch nen anderes Programm das evtl leichter zu erweitern ist?
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Naja es ist das bekanteste und kann so ziemlich alles ansprechen. Allerdings bin ich gerade auf eine alternative hinbgewisen wurden wo ich gerade am testen bin. Das ganze nennt sich LCDStudio und soll einfacher sein. Naja we will see
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Ich nutze derzeit für mein Charcter LCD LCD Smartie und muss sagen, dass es um Welten besser ist als LCD Hype. Zum einen ist es leichter zu konfigurieren und zum anderen bietet es systemseitig viel mehr Optionen. Hier gibt es auch eine Plugin Schnittstelle, die man mit einer *.dll nutzen kann, um eigene Erweiterungen zu schreiben.
Nun müsste man natürlich wissen, was da so alles rein muss.


Soweit ich weiß, bietet LCD Hype allerdings keine Unterstützung für Grafik-LCDs.
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Naja ich schau mir halt gerade das besagte Programm an. Meinetwegen zieh ich mir auch gleich noch smarties. Mal sehen welches dann besser ist. Das Problem sehe ich nur da hype relativ weit verbreitet ist
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Mittlerweile bin ich wieder ein bisschen weiter gekommen, und zwar habe ich ein professionelles Installationsprogramm erstellt. Dieses findet ihr im Anhang. Man kann nun zum Beispiel das Installationsverzeichnis auswählen und ein Eintrag unter "Programme und Funktionen" in der Systemsteuerung wird auch erstellt, was eine ordnungsgemäße Deinstallation erlaubt.

Sollte das Setup nicht funktionieren, sagt auf jeden Fall bescheid, da ich nicht weiß, ob der Ordner mit den Daten im Setup verpackt ist oder ob das nur bei mir funktioniert, wo der Ordner vorhanden ist.


An einer Plugin dll für LCD Smartie habe ich mich auch versucht, was aber nicht so ganz funktioniert hat. :schief:


Edit: Ich habe den Installer noch weiter verbessert und sogar ein schickes User Interface zustande bekommen. Das Auge installiert schließlich mit. :D
 
Zuletzt bearbeitet:
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Inzwischen bin ich noch ein bisschen weiter gekommen, was das Programm betrifft. Und zwar habe ich ein kleines Hilfsprogramm geschrieben, welches das eigentliche Hauptprogramm im minimierten Modus als Prozess öffnet, sodass man später keine Konsole mehr zu sehen bekommt. (Kein großer Verlust. :ugly:)
Falls es Möglichkeit gäbe, das Programm direkt in diesem minimierten Modus zu starten, wäre das natürlich noch deutlich besser. Allerdings bin ich diesbezüglich noch nicht fündig geworden.
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

das sind jetzt aber nur "Schönheitsfehler" ;)

gibts was neues generell zu dem Programm?
Also wie weit du eig bist? So wie ich das mitbekommen hab läuft das auslesen aus dem Programm ganz gut. Das wird dann in ne log-Datei geschrieben, richtig? Sprich die Werte stehen auf Abruf bereit.
Das was noch fehlt ist das Programm was die ganze Datei grafisch umwandelt und ans LCD ausgibt oder?
Gibts was neues bzgl des Programms fürs LCD? LCDsmartie, LCDHype oder sonst was...


@Installer: Grafisch ist der ja mal richtig geil. Richtig schick :daumen:
instalieren und deinstalieren funktioniert wunderbar
MfG Chaoswave
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Das Ausleseprogramm ist funktionstüchtig, wenn auch mit einigen Einschränkungen, die erst noch behoben werden müssen. Momentan beschäftige ich mich mit der dll für LCD Smartie. Dieses Programm unterstützt soweit ich weiß zwar keine graphischen LCDs, lässt sich aber sehr leicht über die Plugin Schnittstelle steuern, weshalb das Proigramm für den Anfang gut geeignet scheint.

Ich habe dazu auch einen Thread im LCD Smartie Forum aufgemacht, wobei man mir nicht wirklich helfen konnte, weil meine Frage ein bisschen allgemein formuliert ist.
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

Ich habe mich jetzt mal wieder mit dem eigentlichen Programm beschäftigt, welches nun so aussieht:

Code:
//LOG Datei der HM Software auslesen
int rdpm() //Messwertaufnahme
{          
    FILE *fp = fopen("C:\\Program Files (x86)\\Alphacool\\Heatmaster 2009\\log.txt", "r");
    if (fp == NULL)
    {
        printf("Streaming Error!\n");
        return;
    }

    double temps[4] = {0};
    double intern = 0;

while (!feof(fp))
{
   char buf[64];
   char *token = NULL;
   int index;

   if(fgets(buf, 64, fp))
   {
       for(index = 0, token = strtok(buf, ";");
           index <= 3 && token != NULL;
           index++, token = strtok(NULL, ";"))
       {
           switch (index)
           {
           case 0: 
               *(strchr(token, ',')) = '.';
               intern = atof(token);
               if(strchr == NULL) 
               return EXIT_FAILURE; 
               break;
           case 1:
           case 2:
           case 3:
               *(strchr(token, ',')) = '.';
               temps[index-3] = atof(token);
               if(strchr == NULL) 
               return EXIT_FAILURE; 
               break; 
           }
       }
   }

}
fclose(fp);

    
    t_1 = temps[0];
    t_2 = temps[1];
    t_3 = temps[2];
    t_4 = temps[3];
    t_5 = temps[4];
    t_internal = intern; 
  
  printf("%0.2f\n %0.2f\n %0.2f\n %0.2f\n %0.2f\n", t_1, t_2, t_3, t_4, t_5);
   printf("%0.2f\n", t_internal);
  
  
return EXIT_SUCCESS;   
}

Ich habe noch etwas hinzugefügt, bzw. verändert. Strtok wird jetzt auf NULL überprüft ebenso wie ich das Datum und die Zeit weggelassen habe.

Das Problem besteht immer noch darin, dass das Programm sofort nach dem Starten mit einer Windows-Fehlermeldung "CC.exe funktioniert nicht mehr" abstürtzt. Irgendwo muss also noch ein grundlegender Fehler sein, den ich aber nicht finden kann.
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

So, ich hab mir den Kram grade mal unter Linux kompiliert mit dem Resultat SIGSEGV. Meine erste Analyse mit gdb lieferte Folgendes:

Meine benutzten Daten:
Code:
2010-12-02;18:34:01;34,4;21,3;21,3;20,0;-3276,8;-3276,8;
Code:
case 0:
    *(strchr(token, ',')) = '.'; // token = "2010-12-02" -> strchr liefert hier NULL -> dereferenzierung eines NULL-Zeiger -> SIGSEGV
    intern = atof(token);
    if (strchr == NULL)
        return EXIT_FAILURE;
    break;
Falls du nicht das Log-Format geändert hast, musst du erst alle uninteressanten Daten überspringen (Datum, Uhrzeit). Du solltest auch besser den von strchr zurückgegebenen Zeiger auf NULL prüfen bevor du den dereferenzierst.
 
AW: [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster

ist es nur bei mir so das das CC nicht richtig funktioniert?
Installation klappt wunderbar. Startet auch super nur dann bekomm ich einen Streaming Error...
Heatmaster ist angeschlossen. Läuft auch und die Heatmaster Software läuft auch.

Als Admin ausführen bringt auch nichts.

MfG Chaoswave
 
Zurück