# [Projekt] Messdatenverarbeitung für den Alphacool Heatmaster



## L.B. (29. November 2010)

*[Projekt] Messdatenverarbeitung für den Alphacool Heatmaster*

Hallo Community,


seit einiger Zeit programmiere ich nun in C, anfangs mehr objektorientiert mit Mikrocontrollern, jetzt am Computer.

Da ich in meinem Rechner sowohl eine Wasserkühlung, als auch ein LCD Modul einbaue, ist die Idee entstanden, eine Software zu schreiben, die die Messdaten aus der Software des Heatmasters ausliest und später an das LCD Programm LCD Hype weitersendet. 
Des Weiteren habe ich bereits eine LOG Funktion geschrieben, welche die Messdaten aufzeichnet.

Da ich mich allerdings erst seit gut einigen Wochen intensiv mit der nicht objektorientierten Programmierung in C auseinander gesetzt habe, benötige ich ab und zu Hilfe bei der Umsetzung von Ideen. Dazu dient dieser Thread, wenn ihr weitere Vorschläge, etc. habt, wäre ich sehr über ein wenig Hilfe erfreut.


----------



## Nobody 2.0 (29. November 2010)

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

Ja dann melde ich mich hier auch mal. 

Ich denke es ist vlt mal sinnvoll zu sagen was süäter mit den Programm so möglich sein wird.

Es soll möglichsein mit den Programm die Daten des HM aufzunehmen und sie an ein belibiges Display an LCD hype weiter zu geben damit man dann die Daten wie durchfluss und andere Dinge sich anzeigen lassen kann.

Dazu kann man dann so relativ jedes Display nehmen was man sich so ergaunern kann.
Auserdem soll es wie L.B schon sagte eine Log funktion geben damit man mal nachschauen kann wie es so aussieht mit den Temps und auch mal vergleichen. Ferner sind noch weitere Funktionen geplant die dann hinzugefügt werden.

Lauffähig wird das Programm auf Win 7/Vista und XP sein. 
Inwiefern es nun Freeware wird wissen wir noch nicht aber bezahlen braucht ihr dafür nichts. Zumindest vorerst 

Leider gibt es bei der Sache ein kleines Problem.

Und zwar haftet L.B oder Nobody oder Aquatuning oder PCGH nicht für schäden die ihr mit dieser Software euch, eurer Hardware oder anderen zufügt. Also die benutzung des Programmes sowie alle Vorgängerversionen geschieht auf eure Gefahr.

Jo das wars vorerst. Ansonsten fragt wenn ihr Fragen habt. Eine Fertigstellung des Programmes ist noch nicht genau beziffer bar. Aber wir hoffen noch auf diesen Jahr.


----------



## L.B. (29. November 2010)

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

Ich habe jetzt die aktuelle Version im ersten Post angehängt, also viel Spaß beim Ausprobieren. Die Enticklungsdatein (C-Code, etc.) sind auch enthalten.  



> Und zwar haftet L.B oder Nobody oder Aquatuning oder PCGH nicht für  schäden die ihr mit dieser Software euch, eurer Hardware oder anderen  zufügt. Also die benutzung des Programmes sowie alle Vorgängerversionen  geschieht auf eure Gefahr.


Das hört sich zwar jetzt so an, als würde unsere Software euren Rechner sublimieren, meiner läuft allerdings noch.


----------



## Nobody 2.0 (29. November 2010)

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

Ja ich kann euch Versichern meiner läuft auch noch. Und es ist definitiv keine Schadsoftware enthalten. Das ist aber eine kleine absicherung für uns. Denn bedenkt wir sind immer noch in Deutschland un der EU....

Also keine Sorge ist nur das übliche was n allen AGBs auch mit drinn steht was ihr So instaliert.


----------



## Pakko5 (30. November 2010)

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

gibts screenshots?


----------



## Nobody 2.0 (30. November 2010)

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



Pakko5 schrieb:


> gibts screenshots?



Wovon ? Von Programm ? Nee da noch nicht da L.B noch auf den Heatmaster wartet ohne den er nicht weitermachen kann. ansonsten kannst du dir ja das Programm selber laden und nachsehen wie weit es ist.


----------



## L.B. (30. November 2010)

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

Jetzt schon...
Auf den Heatmaster muss ich aber trotzdem warten, da ich sonst nicht weiter programmieren kann. 

Momentan gibt es keine grafische Oberfläche, da das in C extrem kompliziert ist. Allerdings wird das Programm später sowieso nur im Hintergrund laufen, sodass ein grafisches Interface nicht wichtig ist.

Zuerst das Installationsprogramm.



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        






			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        






			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




Das ist das Hauptprogram, hier allerdings mit Fehlermeldung, da der Ordner nicht ordnungsgemäß installiert wurde. (Windows Vista )



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




Das ist der Inhalt des Ordners.



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Und hier ist ein Auszug aus dem Quellcode zu sehen. 



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




Edit:

So sieht es unter Windows 7 x64 aus, wenn alles funktioniert. 



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Dann wird auch diese Verknüpfung erstellt, falls man im Installationsprogramm "Yes" ausgewählt hat. 



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## L.B. (1. Dezember 2010)

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

Mittlerweile ist der Alphacool Heatmaster bei mir eingetroffen. (s.hier)

Deshalb sind wir momentan auf der Suche nach entsprechenden Config und Log Dateien, aus denen die Messwerte aufgenommen werden bzw. eingeschrieben werden, um die gewünschte Funktion zu erzielen.

Funktion: (theoretisch )

1. Werte sind in der Heatmaster Software (LOG oder Config) gespeichert
2. das C-Programm die liest die Werte ein
3. C-Programm schreibt Werte...
4. ...in die LCD Hype Config, von wo sie auf dem LCD angezeigt werden



Außerdem habe ich ein eigenes Symbol angefertigt.


----------



## L.B. (2. Dezember 2010)

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

Die LOG Datei des Heatmasters wird nun doch erstellt, nachdem ich die Software als Administrtaor ausgeführt habe. 

In folgendem String sind nun die begehrten Messwerte enthalten, die es zu filtrieren und einzulesen gilt.



> 2010-12-02;18:34:01;34,4;21,3;21,3;20,0;-3276,8;-3276,8;



Ich interpretiere das als Datum, Uhrzeit, Internal, Temp1, Temp2, Temp3, undef, undef. 

Nun werde ich die Funktion zum Einlesen der Werte schreiben.


----------



## Pakko5 (2. Dezember 2010)

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

bin gespannt was draus wird, habe auch den heatmaster zuhause, genau so wie das lcd von alphacool, wäre sehr geil wenn es klappt das man die werte dort direkt sieht


----------



## L.B. (3. Dezember 2010)

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

Gestern habe ich bereits einige Fortschritte bezüglich des Auslesens der Messwerte gemacht. 
Funktionieren wird die Software, dafür wird schon gesorgt, schließlich muss ich mir die 40€ für den Heatmaster von Aquatuning erst verdienen.


----------



## zcei (3. Dezember 2010)

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

Ich habe mal eine Frage zur Grundumsetzung

ist c++ nicht eig nur eine c erweiterung, sodass eigentlich auch nicht objektorientiertes prgrammieren möglich ist?
Denn dann könnte man ja theoretisch einen Teil OOP und einen Teil non-OOP machen, oder?


----------



## L.B. (3. Dezember 2010)

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

Ich nutze C, weil ich diese Programmiersprache am besten beherrsche. C++ wäre zwar aktueller, allerdings ist mir hier teilweise die Syntax unbekannt. Für das Vorhaben ist C auch völlig ausreichend. 

Programmiert wird ja sowieso nicht objektorientiert. Ob man dabei in in C oder C++ programmiert, stellt eigentlich keinen Unterschied dar.


----------



## zcei (3. Dezember 2010)

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

Achso ok
weil du im einleitenden Post meintest, du wärest mit OOP vertraut.
Dass dann aber anscheinend nicht bei C++, falsch verstanden.

Dann viel Glück beim vorhaben, ich schnei hier ab und an mal rein, interessiert mich schon 
Nur hab ich weder LCD noch WaKü
Wenn die Software aber gut wird, könnte das für den Heatmaster nen Renner werden 
Wenn ihr das OpenSource machen wollt könnt ihr ja mal bei Sourceforge/Github nen Projekt anlegen. Vll findet ihr gleichgesinnte (ich glaub da gibts sogar ne Suche ) und findet einen der Interesse an einem Interface hat.


----------



## Nobody 2.0 (3. Dezember 2010)

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

Inwieweit das nun Freeware wird wissen wir noch nicht. Aber kosten wird es nichts.



> Programmiert wird ja sowieso nicht objektorientiert.


Und genau das stört mich bei der ganzen storry....

Ich kann nur objektorientiert.....


----------



## L.B. (3. Dezember 2010)

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

Es freut mich, dass ihr euch für unser Projekt begeistern könnt. Das motiviert zum Weiterprogrammieren.  

Unter objektorientiertem Programmieren in C meinte ich eigentlich die Programmierung von Mikrocontrollern. Denn hier wird zwar in C programmiert, allerdings bezieht man sich hierbei auf eine spezielle Funktion. (Beispielsweise das Ansprechen diverser Register im Mikrocontroller für ADC, Timer, etc.)

Das, was ich hier programmiere ist ja mehr generell C, mit allgenmeingültigen Befehlen. 


Wie dem auch sei, heute habe ich mich noch ein wenig mit dem Programm befasst, besser gesagt mit der Positionierung des Pointers innerhalb der Datei. Sodass ich auch das Richtige aus der Log Datei auslese. 
Allerdings wird nur Müll ausgegeben, was es zu beheben gilt. 



P.S. Hier ist die aktuelle Version mit funktionierendem Pointer.


----------



## zcei (3. Dezember 2010)

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

also wenns dann darum geht für statistische zwecke was auf ner inet seite zu machen kann ich einspringen 
php ist so mit das einzige was ich kann (und was man dafür braucht.. html css js ajax)

aber ich glaube das wäre leicht sinnfrei 

wie stehts denn mit frameworks bei c die ne gute ausgabe zaubern?


----------



## L.B. (3. Dezember 2010)

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

In C muss man immer eine Stufe tiefer denken. Gerade bin ich damit beschäftigt eingelesene dezimale Werte in Ascii Zeichencode umzuwandeln.  

Dass es mit der grafischen Oberfläche (das meintests du doch mit "frameworks"?) schlecht aussieht, kann man sich vorstellen. Dazu ist C so ziemlich, extrem, übermäßig ungeeignet.  

Man könnte die Messwerte natürlich später auf einen Webserver hochladen, damit man auch, wenn man kurz weg ist, sehen kann, ob alle Lüfter oder die Pumpe laufen. (Man könnte den Rechner zwar auch einfach ausschalten, aber...) 
Wenn du dazu Lust hast, kannst du gerne unser Programm, wenn es fertig ist, weiterentwickeln.


----------



## zcei (3. Dezember 2010)

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

joa mal sehen.

bin grad auch nen kleines/mittleres projekt am machen, um wieder mehr rein zu kommen.

evtl komm ich drauf zurück und leute können dann fakultativ an einer statistischen auswertung mitarbeiten  
wie das aussieht ist mir selber noch unklar


----------



## L.B. (4. Dezember 2010)

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

Hört sich auf jeden Fall gut an.  Was mir gefallen würde, wäre eine Datenbankapplikation, die die Messwerte in einer Datenbank ablegt, sodass man von überall auf die Messwerte zugreifen kann. 
Wenn du möchtest und Nobody einverstanden ist, kannst du dich damit unserem Team anschließen. 


Ich kann nun bezüglich der Grundfunktionen auch erste Erfolge vermelden: 



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Das sagt alles, auch wenn das graphische User Interface durch seine Abwesenheit, dem geneigten Grafikdesigner die Haare zu Berge stehen lassen wird. 


P.S. "°C" werde ich jetzt noch einfügen.


----------



## zcei (4. Dezember 2010)

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

Hmm ein "°C" hinterklemmen. DAs dürfte schwer werden 

Meinst du mit Datenbank, dass jeder sich selbst um nen server kümmern muss, oder dass wir einen Server einrichten (z.B. über Sourceforge, oder AT  wenn die die Software anbieten wollen) und jeder user ne Tabelle bekommt?


----------



## L.B. (4. Dezember 2010)

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

Am besten wäre es, wenn man dazu einen lokalen Server nutzt, also den eigenen Rechner. Es gibt ein Programm, mit dem man das machen kann, das sich Xampp Lihgt nennt. Ich glaube nämlich nicht, dass Aquatuning extra für die Software einen Server bereitstellen würde. 


Momentan versuche ich, die Abfrage kontinuierlich ablaufen zu lassen, sodass die Werte auch aktualisiert werden. Das geht natürlich mit while(1), allerdings flackert dann die Anzeige, weil der Text erst gelöscht werdne muss, ansonsten wird alles hintereinander geschrieben.


----------



## zcei (4. Dezember 2010)

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

ja klar, xampp kenn ich, arbeitet man ja, wenn man lokal entwickelt, eigentlich immer mit 

frage ist nur, inwieweit leute das nutzen und was es bringen soll.
weil von außen auf den pc kriegen die wenigsten hin, ist auch eher nen sicherheitsrisiko..
und at braucht ja keinen neuen server dafür hosten. die haben wahrscheinlich eh nen root und brauchen nur ne neue db anlegen  aber hast recht, das ist eher unwahrscheinlich...
deswegen ja sourceforge  da kriegt man sowas gestellt.


Edit: gibts keinen clear befehl?


----------



## L.B. (4. Dezember 2010)

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

Solange es keine Kosten verursacht, kann man natürlich auch diese Möglichkeit in Betracht ziehen. 

Ich halte es nämlich schon für sinnvoll, wenn man extern auf seine Messdaten zugreifen kann, auch auf schon gespeicherte Werte. 

Ich schlage vor, dass du wartest, bis das Programm von der Grundfunktion her läuft, und dann beginnst du mit einer einfachen Datenbank für die Messwerte (Internal, Temp1-Temp5, Durchfluss, Fan1/Pumpe-Fan4). Die Werte kannst du dann einfach aus der Log Datei des C-Programmes auslesen.


Edit: Doch, system("Cls"); Allerdings flackert es ja, weil der Inhalt der Konsole gelöscht und anschließend neu beschrieben wird.


----------



## zcei (4. Dezember 2010)

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

Jop auch wieder wahr. Ich denke das lässt sich in ner Console auch nicht sonderlich gut beheben, von daher würd ich immer 15 Zeilen ausgeben untereinander und die oberste immer weglöschen. Weißt du was ich mein?
Loggen kannst du ja trotzdem.


----------



## Nobody 2.0 (4. Dezember 2010)

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

Huch mein Name fällt.

ja was ihr mit der Programmierung macht bzw wie ist eure Sache da ich nicht viel Ahnung von C habe. Delphie wäre eher mein Fall gewessen aber das habe ich mit L.B schon besprochen und wir haben uns auf C geeinigt.

Also wenn zcei lust und Zeit hat kann er gerne Mitmachen. Vlt entwickeln wir bald ein eigenes Programm anstelle der HM software. (Die ich nicht mehr aufrufen kann). 

Nichts desto trotz bin ich mit meinen Aufgaben auch ganz gut ran. hype stellt sich nicht mehr quer und auch die anderen experimente funktionieren.


----------



## L.B. (4. Dezember 2010)

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

Ich bin jetzt über da Wochenende nicht zuhause, weshalb ich kaum mit dem Programm weiterkommen werde. (Notebook mit Vista )

Es wäre auf jeden Fall klasse, wenn wir einen Datenbankanwendung für unsere Software hätte, denn das würde das Programm deutlich attraktiver machen.  

@zcei: Ich habe verstanden, was du mit dem zeilenweisen Schreiben und Löschen meinst. Allerdings werde ich das Programm am Ende sowieso so schreiben, dass es im Hintergrund läuft, sodass eine Benutzeroberfläche entfällt. Das dient momentan mehr zur Kontrolle. 

Die grafische Ausgabe könnte man dann lieber über ein PHP Script im Browser realisieren, in dem direkt die Datenbank angesprochen und beschrieben wird. 


@Nobody: Auf die Software des Heatmasters werden wir vorerst nicht verzichten können, denn irgendwie muss man ja den Treiber ansprechen und die Messwerte aufnehmen.


----------



## zcei (4. Dezember 2010)

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

Naja wenn das Programm irgendwann steht und es an die Verbesserungen geht kann man schon die HM software "umgehen".
Wenn man nur low-level genug programmiert kann man auch den heatmaster ansprechen.

Eine Idee wäre es das Programm zu Assambler zu Dekompilieren und zu sehen wann welcher Speicherbereich oder was auch immer angesprochen wird.
Das wird aber aufwändig und ist echt nur ganz am Ende zu empfehlen


----------



## Nobody 2.0 (4. Dezember 2010)

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

Naja erstmal wollen wir sehen das das Programm läuft. Danach können wir immer weiter verbessern.

Und ich muss endlich mal die HM Software zum rennen bekommen. Weil auf den Patch der bald kommt will ich nicht warten. 

Achja es kommt ein Patch falls ihr es noch nicht wisst.


----------



## sensitron (5. Dezember 2010)

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

Schöner Thread, hab zwar keine Wakü aber trotzdem durchaus interessant. 
Und C ist btw. eine prozedurale Programmiersprache und keine Objektorientierte Programmiersprache.
C++ dagegen kann prozedural und/oder Objektorientiert sein.


----------



## bingo88 (5. Dezember 2010)

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



zcei schrieb:


> Eine Idee wäre es das Programm zu Assambler zu Dekompilieren und zu sehen wann welcher Speicherbereich oder was auch immer angesprochen wird.
> Das wird aber aufwändig und ist echt nur ganz am Ende zu empfehlen


Wird ohne Debugging-Symbole aber keine leichte Angelegenheit (wenn man fit in x86 ASM ist -- ansonsten sollte man es erst garnich probieren)...


----------



## zcei (5. Dezember 2010)

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

Das ist schon klar, war auch eher eine hypothetische Aussage!
Wird wahrscheinlich garnicht umgeseetzt werden bzw wenn dann nur als "Spaß" nebenbei, der erst angekündigt wird wenn man es nach gefühlten 3 Jahren fertig hat.


----------



## L.B. (5. Dezember 2010)

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

Hier ist ja Einiges los.  

Zuerst einmal wird die Grundfunktion in C programmiert, danach kann man imer noch Ergänzungen bzw. Verbesserungen vornehmen. Das Prinzip der Software ist ja relativ einfach, schließlich wird nur ein String von einer Datei in eine andere kopiert. Wobei hier noch die passende Datei für das LCD Programm gefunden werden muss.


----------



## L.B. (6. Dezember 2010)

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

Momentan hänge ich an einem Problem und komme nicht weiter. Ich möchte nämlich mehrere einzelen Ziffern (als char Datentyp gespeichert) in einen einzigen String packen und in eine globale Variable (volatile) speichern. Hat jemand eine Idee, wie ich das machen könnte?

Theoretisch müsste es ja ganz einfach sein, denn es müssen nur vier der "character" zu einem String zusammengefasst werden.


----------



## zcei (6. Dezember 2010)

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

Meine beschränkten Kenntnisse:


```
char c[4]; <-- wos reinsoll - länge 4
char a[]="a"; <-- dein einer char
strcpy(c,a); <-- der char wird nach c kopiert
```

wenn du das mit deinen 4 chars machst sollte das doch gehen oder


----------



## L.B. (6. Dezember 2010)

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

Danke für den Tipp, zcei.  Soweit war ich allerdings auch schon und die Sache ist schon etwas komplizierter, denn char c ist eine globale Variable und char a eine Variable, in der der character gespeichert ist. 

Allerdings gibt es eine Notlösung, die zwar nicht sonderlich elegant ist, allerdings funktioniert. Und zwar kann ich einfach sehr viele Variablen definieren, sodass ich für jeden Messwert "Zehner", "Einer", "Komma" und "Dezimale" einzeln definiere. Dann gibt es keinerlei Probleme, es ist nur etwas semiprofessionell. 


Edit: Step One ist erledigt. Die Messwerte werden jetzt korrekt eingelesen und sind global verfügbar, sodass ich sie nun problemslos in der Schreib-Funktion verarbeiten kann.


----------



## Der kleine Jayson (7. Dezember 2010)

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

ich finde es klasse das ihr eucht der sache widment !
Weil ich immoemnt selber entscheiden muss ob ich mir ne aquaero oder ein hm + ein shcickes display hole wovon ich keinen plan habe ;D


----------



## L.B. (7. Dezember 2010)

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

Nimm den Heatmaster und ein 4x20Zeichen Character LCD, das ist die optimale Kombination. Mit unserer Software stellt eine Übertragung der Messwerte auf das LCD ja kein Problem mehr da. Warte aber bis die Software läuft, denn zuerst muss ich die Übertragung der Messwerte in LCD Hype hinbekommen. 


Edit: Ich möchte euch die gestrigen Erfolge nicht vorenthalten. Der Quellcode sieht jetzt wie folgt aus:


```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#include <time.h>
#include <tchar.h>
#include <windows.h>



//globale Variablen definieren 

//Sub-Variablen  
char Zehner_Internal;
char Einer_Internal;
char Komma_Internal;
char Dezimale_Internal;
     
char Zehner_temp1;
char Einer_temp1;
char Komma_temp1;
char Dezimale_temp1;
     
char Zehner_temp2;
char Einer_temp2;
char Komma_temp2;
char Dezimale_temp2;
     
char Zehner_temp3;
char Einer_temp3;
char Komma_temp3;
char Dezimale_temp3;


/*************Lesefunktionen***********************/

//LOG Datei der HM Software auslesen

void rdpm() //Messwertaufnahme
{          
     //Dateistream öffnen
     FILE *t;// Dateistream definieren (Pointer)
     
     //zum reinen Lesen öffnen
     t = fopen("C:\\Program Files (x86)\\Alphacool\\Heatmaster 2009\\log.txt","r"); 
     
     if(t==NULL) //falls die Datei nicht geöffnet werden kann...
     {
           printf("Streaming Error\n");
           system("pause");
     }              
         
     //LESEN DER WERTE    
     //Internal lesen
     fseek(t, -110L, SEEK_END);  //letzte Zeile, der LOG erster Wert
     Zehner_Internal = fgetc(t); //1. Zahl einlesen
     Einer_Internal = fgetc(t); 
     Komma_Internal = fgetc(t); 
     Dezimale_Internal = fgetc(t);          
     
     fseek(t, 1L, SEEK_CUR); //Zeichen (;) überspringen
      
     //temp1 lesen
     Zehner_temp1 = fgetc(t); 
     Einer_temp1 = fgetc(t); 
     Komma_temp1 = fgetc(t); 
     Dezimale_temp1 = fgetc(t);
     
     fseek(t, 1L, SEEK_CUR); //Zeichen (;) überspringen
     
     //temp2 lesen
     Zehner_temp2 = fgetc(t);
     Einer_temp2 = fgetc(t); 
     Komma_temp2 = fgetc(t); 
     Dezimale_temp2 = fgetc(t);
     
     fseek(t, 1L, SEEK_CUR); //Zeichen (;) überspringen
     
     //temp3 lesen 
     Zehner_temp3 = fgetc(t); 
     Einer_temp3 = fgetc(t); 
     Komma_temp3 = fgetc(t); 
     Dezimale_temp3 = fgetc(t);
     
     
     //AUSGEBEN DER WERTE IM CMD
     //Internal ausgeben
     printf("Internal: ");
     printf("%c", Zehner_Internal); 
     printf("%c", Einer_Internal);
     printf("%c", Komma_Internal);
     printf("%c^C\n", Dezimale_Internal);
     
     //temp1 ausgeben
     printf("Temp1:    ");
     printf("%c", Zehner_temp1);
     printf("%c", Einer_temp1);
     printf("%c", Komma_temp1);
     printf("%c^C\n", Dezimale_temp1);
     
     //temp2 ausgeben
     printf("Temp2:    ");
     printf("%c", Zehner_temp2);
     printf("%c", Einer_temp2);
     printf("%c", Komma_temp2);
     printf("%c^C\n", Dezimale_temp2);
     
     //temp3 ausgeben
     printf("Temp3:    ");   
     printf("%c", Zehner_temp3);
     printf("%c", Einer_temp3);
     printf("%c", Komma_temp3);
     printf("%c^C\n", Dezimale_temp3);     
}


/******************Schreiben-Funktion**************/

void write()
{
     //...dann Dateistream öffnen
     FILE *s;// Dateistream definieren (Pointer)
     
     //zum reinen Schreiben öffnen
     s = fopen("C:\\Users\\Lukas\\AppData\\Roaming\\LCDHype\\test.txt","w"); //LOG Datei wird geöffnet
     
     if(s==NULL) //falls die Datei nicht geöffnet werden kann...
     {
           printf("Streaming Error\n");
           system("pause");
     }
     
     
     fseek(s, 0L, SEEK_SET); //Pointer setzten
     
     //Internal ablegen
     fputc(Zehner_Internal, s);
     fputc(Einer_Internal, s);
     fputc(Komma_Internal, s);
     fputc(Dezimale_Internal, s);
     fputs("\n", s);
     
     //temp1 ablegen
     fputc(Zehner_temp1, s);
     fputc(Einer_temp1, s);
     fputc(Komma_temp1, s);
     fputc(Dezimale_temp1, s);
     fputs("\n", s);
     
     //temp2 ablegen
     fputc(Zehner_temp2, s);
     fputc(Einer_temp2, s);
     fputc(Komma_temp2, s);
     fputc(Dezimale_temp2, s);
     fputs("\n", s);
     
     //temp2 ablegen
     fputc(Zehner_temp3, s);
     fputc(Einer_temp3, s);
     fputc(Komma_temp3, s);
     fputc(Dezimale_temp3, s);
     fputs("\n", s);
}



/******************LOG-Funktion********************/
/*
void LOG()
{    
     //Funktion für die Uhrzeit
     struct tm *Zeit;
     long Jetzt;
     time(&Jetzt);
     Zeit = localtime(&Jetzt);     
     
     
     
     //erstmal die Messwerte und andere Zahlen in Zeichenketten umwandeln...
     //1. Durchfluss
     char Durchfluss[20];  //String
     sprintf(Durchfluss,"%d",DF);  //Umwandlung 
     printf("Durchfluss: %s\n",Durchfluss); //Ausgabe 
     
     //2. Wassertemperatur
     char Wassertemperatur[20];  
     sprintf(Wassertemperatur,"%d",Wa_Tp);  
     printf("Wassertemperatur: %s\n",Wassertemperatur); 
     
     //3. Datum
     char Jahr[20];
     char Monat[20];
     char Tag[20];
     sprintf(Jahr,"%d",Zeit->tm_year + 1900);  
     sprintf(Monat,"%d",Zeit->tm_mon + 1);  
     sprintf(Tag,"%d",Zeit->tm_mday);
     
     //4. Uhrzeit
     char Stunde[20];  
     char Minute[20];
     char Sekunde[20];
     sprintf(Stunde,"%d",Zeit->tm_hour);  
     sprintf(Minute,"%d",Zeit->tm_min);  
     sprintf(Sekunde,"%d",Zeit->tm_sec);  
          
                                        
     
     //...dann Dateistream öffnen
     FILE *f;// Dateistream definieren (Pointer)
     f = fopen(".\\data\\LOG.txt","w"); //LOG Datei wird geöffnet
     
     if(f==NULL) //falls die Datei nicht geöffnet werden kann...
     {
           printf("Streaming Error\n");
           system("pause");
     }
     
     //...dann Zeichenketten in die LOG Datei schreiben
     fputs("\nMesswertaufzeichnung:\n\n", f);
     fputs("Datum:\n",f);
     fputs(Tag,f);
     fputs(".",f);
     fputs(Monat,f);
     fputs(".",f);
     fputs(Jahr,f);
     fputs("\n\nUhrzeit:\n",f);
     fputs(Stunde,f);
     fputs(":",f);
     fputs(Minute,f);
     fputs(":",f);
     fputs(Sekunde,f);     
     
     
     fputs("\n\n\nDurchfluss: ",f);
     fputs(Durchfluss,f);
     fputs("\nWassertemperatur: ",f);
     fputs(Wassertemperatur,f);
     fputs("\n",f);
}
*/


/*********************main*************************/

int main(int argc, char *argv[])
{    
    system("color 1F"); 
    
    //LCD Hype starten... (im Hintergrund)
    //ShellExecute(NULL,"open","C:\\Program Files (x86)\\LCDHype\\lcdhype.exe",NULL,NULL,SW_MINIMIZE);
    //ShellExecute(NULL,"open","C:\\Program Files (x86)\\Alphacool\\Heatmaster 2009\\Heatmaster.exe",NULL,NULL,SW_MINIMIZE);
    
    
    //while(1) //Hauptschleife  [soll alle 2 Sekunden aufgerufen werden]
    //{ 
         
         printf("\nControlCenter\n");
         printf("Datenerfassungssystem\n\n\n");  
      
         //...dann die Funktionen ausführen
      
         rdpm();  //Werte lesen
         //system("Cls");
    
     
         //hier kommt noch eine Schleife hin {}
         //    LOG();    //LOG 
        
         //Schreiben-Funktion
         write();
    //}
    system("pause");
    return 0;  
}
```
Edit: Ich habe das Programm noch einmal angehängt und die exe hat jetzt auch ein Symbol.


----------



## bingo88 (7. Dezember 2010)

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

Nach einer kurzen Google-Anfrage, was dieses LCDHype überhaupt is, habe ich gesehen, dass die ein Plugin-System haben. Ich stelle jetzt mal die Behauptung auf, man könnte die Daten direkt an LCD Hype senden. Wenn man jetzt noch die Daten von diesem Heatmaster direkt anzapfen könnte, wäre kein Umweg über die Dateien mehr notwendig. Allerdings müsste man für das Anzapfen des Heatmaster mehr über den Aubau wissen. Hab mir mal das Paket runtergeladen und nen ersten Blick drauf geworfen. Da es sich netterweise unter anderem um Treiber handelt, ist Reverse Engineering schonmal ne Stufe krasser geworden. Vielleicht bekommt man ja Auskunft von Alphacool, wenn man lieb fragt 

Zum Code an sich: Sieht soweit ganz brauchbar aus ("nich schön, aber selten"  - kleiner Spaß am Rande). Wenn ihr fertig seid bzw. euch der Fertigstellung nähert, würde ich euch anbieten, einen Blick zwecks Optimierungen drauf zu werfen - natürlich unverbindlich! Die system()-Funktion zählen z. B. zur Kategorie der Dinge die man machen kann, aber aus mehren Gründen nicht machen sollte


----------



## L.B. (7. Dezember 2010)

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

Ich befasse mich wie gesagt noch nicht allzu lange mit nicht objektorientiertem C (um genau zu sein seit drei Wochen), weshalb es mir natürlich noch an fundiertem Hintergrundwissen fehlt. Deshalb begrüße ich deinen Vorschlag sehr.  

Bezüglich des Quellcodes haben wir bereits angefragt, allerdings ohne Erfolg. Eventuell bekommen wir ihn, wenn wir unsere ersten Ergebnisse vorweisen können, sodass Alphacool auch sicher weiß, dass wir den Quellcode nur für das Programm benötigen. 

Ich denke, dass wir bei LCD Hype auf jeden Fall über die Plugin Schnittstelle arbeiten müssen, da ich keine Config Datei gefunden habe, in die man die Daten schreiben kann, sodass sie auf dem LCD ausgegeben werden können. Das muss ich mir aber noch einmal genauer angucken.


----------



## bingo88 (7. Dezember 2010)

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

Ich vermute mal, der Datenaustausch lässt sich über Shared Memory realisieren, zumindest hab ich in deren Forum sowas gefunden. Ist nich wirklich schwer, ähnlich wie Dateien schreiben


----------



## L.B. (7. Dezember 2010)

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

Ich habe jetzt mal das Verzeichnis sowie das Verzeichnis unter AppData angeguckt. Dabei habe ich keine Config Dateien oder dergleichen gefunden. Ein Plugin ist somit unumgänglich.
In der Hilfe steht auch etwas von Shared Memory, allerdings nur ein defekter Link.


----------



## Nobody 2.0 (7. Dezember 2010)

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

Der HM lässt sich nicht direkt über den Display ansteuern.Keine Sorge das war eines der ersten dinge die ich versucht habe. Es besteht nur die möglichkeit sich die Daten via Programm abugreifen und dann mithilfe dessen über einen Plug in zu Hype weiterzureichen. 
Bei der direkten Möglichkeit sind leiter Variablen mit im Spiel die sich schlecht beeinflussen lassen. Daher gehen wir den weg über das Programm denn so wird es wohl auch Alphacool tun wenn die mal den Display support freigeben würden. Aber das wird noch ne ganze weile dauern.


----------



## L.B. (7. Dezember 2010)

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

Bezüglich des Shared Memory habe ich im LCD Hype Forum etwas gefunden. (s.Anhang) Das ist ein C++ Quellcode mit den benötigten Anweisungen. Um das zu programmieren/ einzubinden fehlt es mir aber noch an den nötigen Fertigkeiten. Trotzdem werde ich mich noch einmal damit befassen.


----------



## zcei (7. Dezember 2010)

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

Genauso wie ein fester Pfad (der unter allen x86 Windoofs nicht funzt )
Oder den Tempwert nur auf 99,9°C zu beschränken.
Was ist denn wenn der Wert einer Graka zB mal auf hundert geht. Dann schmiert dir dein Prog ab, oder du bist nahe dem Gefrierpunkt


----------



## L.B. (7. Dezember 2010)

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

Bei 100°C GPU Temperatur hat man meiner Meinung nach andere Sorgen als ein Programm, dass einen falschen Messwert ausliest.  Abstürtzen wird da nichts, es wird einfach eine Null ausgelesen. 
Aber es besteht wie gesagt noch Verbesserungpotential.  Zuerst einmal ist es aber wichtig, dass alles funktioniert. Deshalb muss ich mir zunächst das Plugin ansehen. 

Also wird die Datei bzw. deren Verzeichnis "Shared Memory Segment.cpp" einfach als normale Pfadangabe genutzt und ausgeführt? Dann übergebe ich die Variablen in das Shared Memory Segment, welches es in LCD Hype augibt?


----------



## bingo88 (8. Dezember 2010)

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

Das Projekt ist nur ein Beispiel. Was LCD Hype genau für Daten erwartet, müsste irgendwo im SDK bzw. in dessen Doku notiert sein.


----------



## pyro539 (11. Dezember 2010)

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

Hoi,

also wie du vllt. schon festgestellt hast, ist es unter C extrem umständlich eine Datei einzulesen (schwierig nicht, nur umständlich und aufwendig). Vielleicht wäre eine Skriptsprache wie Python leichter, was die Stringverarbeitung angeht.

Das Problem bei deiner Lösung hat zcei ja angesprochen, du liest nur 2 Stellen und die Dezimale ein. Auch wenn die Temperatur vmtl. nie so hoch sein wird, sollte man es trotzdem gleich "richtig" implementieren. 

Hab mich interessehalber mal hingehockt und selbst was zusammen gehackt:

```
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main() {
    FILE *fp = NULL;

    fp = fopen("test.txt", "r");
    if (!fp) {
        puts("Fehler beim Öffnen der Datei");
        return 1;
    }

    char date[11] = { 0 };
    char time[9] = { 0 };
    double temps[3];

    char buf[64];

    fgets(buf, 64, fp);
    char *token = NULL;
    int index = 0;
    
    token = strtok(buf, ";");
    do {
        switch (index) {
            case 0:
                strcpy(date, token);
                break;
            case 1:
                strcpy(time, token);
                break;
            case 2:
                break;
            case 3:
            case 4:
            case 5:
                *(strchr(token, ',')) = '.';
                temps[index-3] = atof(token);
                break; 
        }

        index++;
        token = strtok(NULL, ";");
    } while (token != NULL);
    printf("Datum: %s, Uhrzeit: %s\n", date, time);
    printf("Temp1: %e, Temp2: %e, Temp3: %e\n", temps[0], temps[1], temps[2]);

    fclose(fp);
}
```
Zuerst lese ich den gesamten String mittels fgets in ein Array ein. Danach zerteile ich den String mit der strtok-Funktion. Die einzelnen Teile speicher ich dann in verschiedene Variablen. Die index-Variable dient nur zum "Mitzählen" welcher Teil im Moment verarbeitet wird. Bei den Temperaturen muss man das "," im String zuerst durch einen "." ersetzen, sonst kann atof das nicht richtig einlesen.

Die Ausgabe der Temperaturen erfolgt grade noch in Exponentialschreibweise ("2.130000e+01"), aber das lässt sich mit den Formatierungsoptionen von printf auch lösen.

Gruß,
pyro

PS: Mit C kann man nicht wirklich objektorientiert programmieren, da typische OOP-"Features" wie Klassen, Vererbung, Polymorphie und Datenkapselung fehlen. Ist eher strukturiertes Programmieren.


----------



## L.B. (11. Dezember 2010)

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

Das sieht doch gut aus, ich werde es gleich mal ausprobieren. Momentan habe ich allerdings wenig Zeit für das Programm, weil nebenbei auch noch mein CaseCon in die Endphase geht.


Edit: Ich habe gerade den Code eingefügt und kompiliert und es funktioniert super. Jetzt muss nur noch der Pointer an die richtige Stelle gesetzt werden. Das müste doch mit fseek gehen? 

P.S. Mit printf("%f", Double); wird die Zahl richig formatiert ausgegeben.


----------



## pyro539 (12. Dezember 2010)

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

Welchen Pointer willst du an welche Stelle setzen?
Den Filepointer?!


----------



## L.B. (12. Dezember 2010)

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

Genau. In meiner Version muss der Pointer an die richtige Stelle (letzte Zeile, erster Messwert) gesetzt werden, dort werden dann die Zeichen eingelesen. Ich habe das gestern schon ausprobiert, aber es hat nicht wirklich funktioniert. Auch das Auslesen des ersten Messwertes habe ich nicht hinbekommen. Du liest ja nur die drei Tempertursensoren und nicht den internen Sensor aus.


----------



## pyro539 (12. Dezember 2010)

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

Ah, ich dachte "Internal" ist irgendein "interner" Wert, der nicht weiter interessant ist  
Den einzulesen ist aber gar nicht soo schwer, da muss man das ganze nur ein wenig erweitern.

In meiner Testdatei steht auch nur eine einzelne Zeile, deshalb hat das bei mir so gut funktioniert ;D
Wenn man die letzte Zeile auslesen will, würde ich einfach alle Zeilen auslesen und dann die Ausgelesenen Werte verwerfen (bis auf die letzte Zeile natürlich). Oder Zwischenspeichern und daraus einen netten Graphen malen oder so 

Habs mal noch kurz eingebaut:

```
#include <stdlib.h>
#include <stdio.h>
#include <string.h>

int main() {
    FILE *fp = NULL;

    fp = fopen("test.txt", "r");
    if (!fp) {
        puts("Fehler beim Öffnen der Datei");
        return 1;
    }

    char date[11] = { 0 };
    char time[9] = { 0 };
    double temps[3];
    double internal;

    while (!feof(fp)) {
        char buf[64];

        fgets(buf, 64, fp);
        char *token = NULL;
        int index = 0;
        
        token = strtok(buf, ";");
        do {
            switch (index) {
                case 0:
                    strcpy(date, token);
                    break;
                case 1:
                    strcpy(time, token);
                    break;
                case 2:
                    *(strchr(token, ',')) = '.';
                    internal = atof(token);
                    break;
                case 3:
                case 4:
                case 5:
                    *(strchr(token, ',')) = '.';
                    temps[index-3] = atof(token);
                    break; 
            }

            index++;
            token = strtok(NULL, ";");
        } while (token != NULL);
    }
    printf("Datum: %s, Uhrzeit: %s\n", date, time);
    printf("Internal: %f, Temp1: %f, Temp2: %f, Temp3: %f\n", internal, temps[0], temps[1], temps[2]);

    fclose(fp);
}
```


```
pyro@exuma:~/Coding/C $ gcc -o test test.c
pyro@exuma:~/Coding/C $ cat test.txt
2010-12-02;18:34:01;34,4;21,3;21,3;20,0;-3276,8;-3276,8;
2010-12-02;18:34:01;34,5;21,3;21,3;20,0;-3276,8;-3276,8;
2010-12-02;18:34:01;34,6;21,3;21,3;20,0;-3276,8;-3276,8;
2010-12-02;18:34:01;34,7;21,3;21,3;20,0;-3276,8;-3276,8;
2010-12-02;18:34:01;34,8;21,3;21,3;20,0;-3276,8;-3276,8;
pyro@exuma:~/Coding/C $ ./test
Datum: 2010-12-02, Uhrzeit: 18:34:01
Internal: 34.800000, Temp1: 21.300000, Temp2: 21.300000, Temp3: 20.000000
pyro@exuma:~/Coding/C $
```


----------



## L.B. (12. Dezember 2010)

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

Ok, das erscheint mir logisch. Ich habe aus double temps[3] nämlich double temps[4] gemacht, aber da wurde nur Müll ausgelesen. Eine Frage habe ich aber noch, wofür steht die Variable "buf"? 
Ich werde den Code gleich noch anpassen, wobei es noch ein Problem gibt, und zwar funktionert Return 1 nicht, weil ich den Code in eine Lese-Funktion ausgelagert habe. 
Wegen der Printf Formatierung habe ich mich auch noch ein bisschen schlau gemacht und es gibt eine ganz einfache Möglichkeit die Genauigkeit, also die Anzahl der Dezimalen, festzulegen. Das funktioniert mit beispielsweise %3.1f (drei Stellen, eine Dezimale).


----------



## pyro539 (12. Dezember 2010)

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

Hoi,

buf ist einfach nur eine temporäre Variable die als Schreibpuffer (engl. buffer, abgekürzt buf) dient. In die Variable wird der Inhalt der kompletten Zeile geschrieben, bevor er mittels strtok zerlegt wird.

Das return 1 funktioniert natürlich nicht in jeder Funktion, kommt halt auf den Rückgabetyp drauf an.


----------



## L.B. (12. Dezember 2010)

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

Ich habe das jetzt mal in das Program eingefügt und ausprobiert, allerdings stürtzt das Programm bei jedem Start ab.


----------



## pyro539 (13. Dezember 2010)

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

Wo crashts denn genau?


----------



## Nobody 2.0 (14. Dezember 2010)

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



L.B. schrieb:


> Ich habe das jetzt mal in das Program eingefügt und ausprobiert, allerdings stürtzt das Programm bei jedem Start ab.



Klingt mir fast so als würde es den Ram vollschreiben. Was wiederum bedeuten würde das eine Schleife Falsch wäre.


----------



## bingo88 (14. Dezember 2010)

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



Nobody 2.0 schrieb:


> Klingt mir fast so als würde es den Ram vollschreiben. Was wiederum bedeuten würde das eine Schleife Falsch wäre.


Ich würde jetzt eher vermuten, dass ein Zugriff auf Speicher erfolgt, der einem net gehört...

Ich würde mal den Einsatz eines Debugger empfehlen, um die problematische Codestelle zu finden. Dann können wir weitersehen


----------



## L.B. (15. Dezember 2010)

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

Also das Programm stürtzt direkt beim Start ab. Windows gibt die Fehlermeldung aus, dass das Programm nicht mehr funktioniere und nach einer Lösung gesucht werde. 
Der Arbeitsspeicher wird dabei aber definitiv nicht vollgeschrieben oder dergleichen.

Kann man überhaupt eine while-Schleife und eine do-while-Schleife verschachteln? Bei der Version ohne Internal-Temperatur, war ja nur eine do-while-Schleife vorhanden und da lief alles. 


```
[COLOR=Red]while (!feof(fp)) {        char buf[64];

        fgets(buf, 64, fp);
        char *token = NULL;
        int index = 0;
        
        token = strtok(buf, ";");
        [COLOR=Red]do {            switch (index) {
                case 0:
                    strcpy(date, token);
                    break;
                case 1:
                    strcpy(time, token);
                    break;
                case 2:
                    *(strchr(token, ',')) = '.';
                    internal = atof(token);
                    break;
                case 3:
                case 4:
                case 5:
                    *(strchr(token, ',')) = '.';
                    temps[index-3] = atof(token);
                    break; 
          [COLOR=Red]  [COLOR=Black]}
            index++;
            token = strtok(NULL, ";");
       [COLOR=Red] } while (token != NULL);[COLOR=Red]}
```


----------



## Fragile Heart (15. Dezember 2010)

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

Nur mal eine dumme Regel die du in jeden guten Buch finden wirst. Was ist wenn Token NULL ist und du verwendest es?  Richtig, bummmmm Anwendung weg!

Gehe immer davon aus das Funktionen schief gehen können und verwende nichts was du nicht geprüft hast!

Edit:
Mach mal aus der do while eine while und wenn es das ist was ich denke löst du damit das Problem.

Edit die zweite:

```
while (!feof(fp)) 
{
    char buf[64];
    char *token = NULL;
    if(fgets(buf, 64, fp))
    {
        for(int index = 0;
            index <= 5 && (token = strtok(buf, ";")) != NULL;
            index++)
        {
            switch (index)
            {
            case 0:
                strcpy(date, token);
                break;
            case 1:
                strcpy(time, token);
                break;
            case 2:
                *(strchr(token, ',')) = '.';
                internal = atof(token);
                break;
            case 3:
            case 4:
            case 5:
                *(strchr(token, ',')) = '.';
                temps[index-3] = atof(token);
                break; 
            }
        }
    }
}
```


----------



## bingo88 (15. Dezember 2010)

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

Das mit den Schleifen ist kein Problem. Kannst du das Programm mal debuggen, um zu sehen, an welcher Stelle es knallt? Also irgendwo in der Funktion nen Breakpoint setzen und dann mit Einzelschrittausführung vortasten - zumindest wenn deine IDE im Debugmodus nicht alleine an die fehlerhafte Codestelle springt...


----------



## Nobody 2.0 (15. Dezember 2010)

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

Stimmt hab mir gerade so überlegt wenn der Ram zu währe gäbs nen blauen Bildschirm. Ja ich denke ein Debugger sollte das Problem lösen. Ansonsten nochmal alle werde überprüfen.


----------



## L.B. (15. Dezember 2010)

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

Wie genau funktioniert denn die Debugging-Funktion? Ich habe so etwas noch nie gemacht, weil meine primitiven Programme normalerweise keine solchen Probleme verursachen.  
Es gibt beim Dev-C++ eine Debugging-Funktion. Hier kann man Haltepunkt auswählen oder bis zum Cursor ausführen, aber irgendwie passiert da nichts, außer das unten eine Symbolleiste erscheint.


----------



## Nobody 2.0 (15. Dezember 2010)

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

Bei Delphie gibt es direkt eine Funktion eben wie du auch sagst mit start und halte Punkt. Da werden alle Probleme angezeigt. Aber bei deinen C keine Ahnung.


----------



## Own3r (15. Dezember 2010)

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

Die Debugging Funktion ist dafür nützlich, dass wenn man sie eingeschaltet hat und die Programmschleife läuft und ein Fehler auftritt genau dort stopt und den Fehler anzeigt. (bei Delphi)


----------



## L.B. (15. Dezember 2010)

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

Ich kann zwar Haltepunkte definieren und das Programm kompilieren. Allerdings stürtzt es immer noch ab und es wird auch nichts angezeigt. 

Im Anhang ist ein Screenshot.


----------



## Fragile Heart (15. Dezember 2010)

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

Habt ihr mich jetzt übergangen?


----------



## Fragile Heart (15. Dezember 2010)

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



Nobody 2.0 schrieb:


> Stimmt hab mir gerade so überlegt wenn der Ram zu währe gäbs nen blauen Bildschirm. Ja ich denke ein Debugger sollte das Problem lösen. Ansonsten nochmal alle werde überprüfen.


Ist nicht korrekt, jeder Prozess hat seinen eigenen Adressraum, kein Speicher mehr bedeutet zwangs läufig das man nichts mehr reservieren kann, das Code Fragment reserviert im Prinzip aber nicht.


----------



## L.B. (15. Dezember 2010)

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

Die Debug-Funktion ist mir zu kompliziert, deshalb habe ich mal selbst Debugger gespielt. Wenn ich die erste while-Schleife einkommentiere, stürtzt das Programm nicht mehr ab und zeigt mir auch die richtigen Messwerte an. Das Problem muss also hier liegen:

```
while (!feof(fp)) {
```
P.S. Einen Bluescreen gab es glücklicherweise nicht. Wahrscheinlich greift Windows vorher ein und beendet das Programm.


----------



## Fragile Heart (15. Dezember 2010)

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

Hast du geprüft ob die Datei offen ist?


----------



## pyro539 (15. Dezember 2010)

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

Oh, da hast du natürlich recht, auf NULL-Pointer sollte man immer achten.
Hatte beim Coden nur recht wenig Zeit und wollte es noch unbedingt posten, deshalb bin ich etwas.. nunja, unachtsam damit umgegangen 

Deine Lösung ist natürlich besser. Sogar im Beispiel in der strtok-Manpage wird geprüft :S

@L.B.: Schleifen zu verschachteln ist absolut kein Problem.


----------



## Fragile Heart (15. Dezember 2010)

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

Macht doch nichts Pyro.  Sowas passiert jedem wenn man im Stress ist.

L.B. solltest du nicht geprüft haben ob die Datei auf geöffnet werden konnte müsstest du das entweder noch nachholen (besser wegen Fehlermeldung) oder die Schleife anpassen.


```
while (fp != NULL && !feof(fp))
```


----------



## L.B. (15. Dezember 2010)

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

@Fragile Heart: Jetzt sehe ich erst, dass du vorher den Code schon überarebitet hattest. Das habe ich übersehen. 

Ich habe jetzt einfach alles zusammengepackt, allerdings wird kein richtiger Wert ausgelesen (nur Nullen), das prgramm stürtzt aber auch nicht mehr ab. Ich muss mir das Ganze noch mal genau angucken.


Edit: Das Programm sieht jetzt so aus: (Der Compiler meldet für die rot markierte Zeile allerdings: 'for' loop initial declaration used outside C99 mode)


```
FILE *fp = NULL;

    fp = fopen("C:\\Program Files (x86)\\Alphacool\\Heatmaster 2009\\log.txt", "r");
    if (!fp) {
        puts("Fehler beim Öffnen der Datei");
    }

    char date[11] = { 0 };
    char time[9] = { 0 };
    double temps[3];
    double internal;

   while (fp != NULL && !feof(fp))
   {
    char buf[64];
    char *token = NULL;
    if(fgets(buf, 64, fp))
    {
        [COLOR=Red]for(int index = 0;            index <= 5 && (token = strtok(buf, ";")) != NULL;
            index++)
        {
            switch (index)
            {
            case 0:
                strcpy(date, token);
                break;
            case 1:
                strcpy(time, token);
                break;
            case 2:
                *(strchr(token, ',')) = '.';
                internal = atof(token);
                break;
            case 3:
            case 4:
            case 5:
                *(strchr(token, ',')) = '.';
                temps[index-3] = atof(token);
                break; 
            }

            index++;
            token = strtok(NULL, ";");
        } while (token != NULL);
    }
    printf("Datum: %s, Uhrzeit: %s\n", date, time);
    printf("Internal: %f, Temp1: %f, Temp2: %f, Temp3: %f\n", internal, temps[0], temps[1], temps[2]);

    fclose(fp);
}
```


----------



## Fragile Heart (15. Dezember 2010)

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

Was verwendest du denn da für einen alten Compiler?  Must du dann wiefolgt ändern.


```
while (fp != NULL && !feof(fp))
   {
    char buf[64];
    char *token = NULL;
[COLOR=black]    [B]int index;[/B]    if(fgets(buf, 64, fp))
    {
        [COLOR=black]for([B]index = 0[/B];            index <= 5 && (token = strtok(buf, ";")) != NULL;
            index++)
        {
```
Was das nicht funktionieren angeht, so ist der Fehler, rein aus meinen Bauchgefühl heraus hier schon zu sehen. 


```
... strtok(buf, ";")
```
Du suchst hier eigentlich immer ab der selben Stelle was ja nicht deine Funktion erfüllen kann. Ich werde gleich mal nach der genauen Funktionsdefinition schauen.


----------



## L.B. (15. Dezember 2010)

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

Ich habe alles eingesetzt und jetzt wird es auch problemlos kompiliert, dennoch stürtzt das Programm sofort beim Start ab. Der Fehler muss also doch an einer anderen Stelle liegen.


----------



## Nobody 2.0 (15. Dezember 2010)

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

Also er kompaliert fertig und dnn kommt das Programm kann nicht ausgeführt werden ?

Kann man mit C auch auf reservierten Speicher zugreifen ? 
Weil das Problem hatte ich auch mal. Ich hatte ein Programm das auf diesen Speicher zugegriffen hat. Der efekt war der selbe.


----------



## bingo88 (15. Dezember 2010)

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

Der Code tut es bei mir

```
void readFile()
{
    const int BUF_SIZE = 4096;
    FILE *fp = fopen("test.txt", "r");
    if (fp == NULL)
    {
        printf("Datei konnte nicht geöffnet werden.\n");
        return;
    }

    char date[11] = {0};
    char time[9] = {0};
    double temps[3] = {0};
    double intern;

    while (!feof(fp))
    {
        char buf[BUF_SIZE];
        char *token = NULL;
        int idx = 0;

        if (fgets(buf, BUF_SIZE, fp))
        {
            token = strtok(buf, ";");
            while (token != NULL)
            {
                switch (idx)
                {
                case 0:
                    strcpy(date, token);
                    break;

                case 1:
                    strcpy(time, token);
                    break;

                case 2:
                    *(strchr(token, ',')) = '.';
                    intern = atof(token);
                    break;

                case 3:
                case 4:
                case 5:
                    *(strchr(token, ',')) = '.';
                    temps[idx - 3] = atof(token);
                    break;
                }

                ++idx;
                token = strtok(NULL, ";");
            }
        }
    }

    fclose(fp);
    printf("%s %s %f %f\n", date, time, temps[1], intern);
}
```
Da ist aber so gut wie keine Fehlerprüfung drinnen. Bspw. kann strchr nen NULL-Pointer liefern und den zu dereferenzieren oder gar nen Wert zu setzen geht immer übel aus 

Edit: Bei deinem COde oben, was macht denn das  while (token != NULL); am Ende der for-Schleife? Ne Do-While Schleife ist an dieser Stelle übrigens ungeeignet, da die mindestens 1x durchlaufen wird, bevor die Bedingung gecheckt wird. Wenn token also von Anfang an NULL ist, knallts ebenfalls...


----------



## Fragile Heart (15. Dezember 2010)

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

Also ich hab deinen Code nochmal schnell überarbeitet. Ist immer noch nicht gut, aber geht jetzt!

Du musst dir die komplette Fehlerbehandlung mal im Detail ansehen.

```
[SIZE=2][FONT=Consolas][SIZE=2][FONT=Consolas]FILE *fp = NULL;[/FONT][/SIZE]
[SIZE=2][FONT=Consolas]fp = fopen([/FONT][/SIZE][/FONT][/SIZE][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"d:\\log.txt"[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2], [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"r"[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]);[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]if[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] (!fp) {[/SIZE][/FONT]
[SIZE=2][FONT=Consolas]   puts([/FONT][/SIZE][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"Fehler beim Öffnen der Datei"[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]);[/SIZE][/FONT]
[SIZE=2][FONT=Consolas]}[/FONT][/SIZE]
 
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]char[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] date[11] = { 0 };[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]char[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] time[9] = { 0 };[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]double[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] temps[3];[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]double [/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]internal[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2];[/SIZE][/FONT][/SIZE][/FONT]
 
[FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]while[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] (!feof(fp))[/SIZE][/FONT]
[SIZE=2][FONT=Consolas]{[/FONT][/SIZE]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]   char[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] buf[64];[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]   char[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] *token = NULL;[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]   int[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] index;[/SIZE][/FONT]
[/SIZE][/FONT]
[FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]   if[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2](fgets(buf, 64, fp))[/SIZE][/FONT]
[SIZE=2][FONT=Consolas]   {[/FONT][/SIZE]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]       for[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2](index = 0, token = strtok(buf, [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]";"[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]);[/SIZE][/FONT]
[SIZE=2][FONT=Consolas]           index <= 5 && token != NULL;[/FONT][/SIZE]
[SIZE=2][FONT=Consolas]           index++, token = strtok(NULL, [/FONT][/SIZE][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]";"[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]))[/SIZE][/FONT]
[SIZE=2][FONT=Consolas]       {[/FONT][/SIZE]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]           switch[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] (index)[/SIZE][/FONT]
[SIZE=2][FONT=Consolas]           {[/FONT][/SIZE]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]           case[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] 0:[/SIZE][/FONT]
[SIZE=2][FONT=Consolas]               strcpy(date, token);[/FONT][/SIZE]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]               break[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2];[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]           case[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] 1:[/SIZE][/FONT]
[SIZE=2][FONT=Consolas]               strcpy(time, token);[/FONT][/SIZE]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]               break[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2];[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]           case[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] 2:[/SIZE][/FONT]
[SIZE=2][FONT=Consolas]               *(strchr(token, [/FONT][/SIZE][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]','[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2])) = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]'.'[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2];[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]               internal[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] = atof(token);[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]               break[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2];[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]           case[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] 3:[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]           case[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] 4:[/SIZE][/FONT]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]           case[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2] 5:[/SIZE][/FONT]
[SIZE=2][FONT=Consolas]               *(strchr(token, [/FONT][/SIZE][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]','[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2])) = [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]'.'[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2];[/SIZE][/FONT]
[SIZE=2][FONT=Consolas]               temps[index-3] = atof(token);[/FONT][/SIZE]
[/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]               break[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2]; [/SIZE][/FONT]
[SIZE=2][FONT=Consolas]           }[/FONT][/SIZE]
[SIZE=2][FONT=Consolas]       }[/FONT][/SIZE]
[SIZE=2][FONT=Consolas]   }[/FONT][/SIZE]
[SIZE=2][FONT=Consolas]   printf([/FONT][/SIZE][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"Datum: %s, Uhrzeit: %s\n"[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2], date, time);[/SIZE][/FONT]
[SIZE=2][FONT=Consolas]   printf([/FONT][/SIZE][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515][FONT=Consolas][SIZE=2][COLOR=#a31515]"Internal: %f, Temp1: %f, Temp2: %f, Temp3: %f\n"[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2], [/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff][FONT=Consolas][SIZE=2][COLOR=#0000ff]internal[/SIZE][/FONT][/SIZE][/FONT][/SIZE][/FONT][FONT=Consolas][SIZE=2][FONT=Consolas][SIZE=2], temps[0], temps[1], temps[2]);[/SIZE][/FONT][/SIZE][/FONT]
[FONT=Consolas][SIZE=2][SIZE=2][FONT=Consolas]}[/FONT][/SIZE]
[SIZE=2][FONT=Consolas]fclose(fp);[/FONT][/SIZE]
[/SIZE][/FONT]
```


----------



## Fragile Heart (15. Dezember 2010)

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



bingo88 schrieb:


> Der Code tut es bei mir


Hallo Bingo, kurze Frage wie hast du den Code ausprobiert? Da ist noch ein Fehler drin der mir auch nicht direkt aufgefallen wäre. Schau die mal am Ende der erste Schleife an, was mit dem Dateipointer passiert.


----------



## L.B. (15. Dezember 2010)

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

Danke, dass ihr euch soviel Mühe gebt.  Ich werde mir das Ganze morgen mal angucken und ausprobieren.


----------



## bingo88 (15. Dezember 2010)

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

Zur Sicherheit: Hab 5 Warnings wegen unsafe-Funktionen in VS2010
An 2 Stellen ließe sich relativ leicht Schadcode durch die Datei einschleusen 

Noch ein Tipp: Zur Optimierung der Lese-Performance solltest du den Lesepuffer auf die Clustergröße deiner Platte/Partition anpassen. Windows mit NTFS ist da mit einem Vielfachen von 4k (also 4096) zufrieden


----------



## bingo88 (15. Dezember 2010)

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

Sry.. Doppelpost o0



Fragile Heart schrieb:


> Hallo Bingo, kurze Frage wie hast du den Code ausprobiert? Da ist noch ein Fehler drin der mir auch nicht direkt aufgefallen wäre. Schau die mal am Ende der erste Schleife an, was mit dem Dateipointer passiert.


Das fclose ist außerhalb der ersten Schleife, falls du das meinst? Ich habe die ganze Funktion gepostet, daher sind da noch zwei {} mehr...


----------



## Fragile Heart (15. Dezember 2010)

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



bingo88 schrieb:


> Das fclose ist außerhalb der ersten Schleife, falls du das meinst? Ich habe die ganze Funktion gepostet, daher sind da noch zwei {} mehr...


Ok, übersehen! Aber dann gibtst du immer nur die letzte Zeile in der Datei aus. 

Zu den Sicherheitsbedenken muss man eh nichts sagen. Das ganze Funktioniert ja schon nicht, wenn man da nur ein , in den FP Werten weg läst.


----------



## bingo88 (15. Dezember 2010)

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

Ahja, dann müsste das printf() noch nach oben. Hab das nur schnell zusammengeschustert, nebenbei auch noch nen netten Bug eingebaut (immer strtok(buf, ";") aufgerufen, d. h. der hat immer von vorne angefangen  )


----------



## Fragile Heart (15. Dezember 2010)

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

Hehe, hab auch nur schnell zusammen geklickt und probiert. Muss noch viel geändert werden, aber ich denke mit dem kann er jetzt weiter arbeiten. Aber das Debugen muss er definitiv noch üben!


----------



## bingo88 (15. Dezember 2010)

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



Fragile Heart schrieb:


> Aber das Debugen muss er definitiv noch üben!


Japp, da müssen wir noch was machen. Ohne geht garnicht


----------



## Fragile Heart (15. Dezember 2010)

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

Noch ein Tipp zum Abschluss des Tages. L.B.


```
[FONT=Consolas]*(strchr(token, [SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]','[/SIZE][/SIZE][/SIZE][SIZE=2][SIZE=2])) = [/SIZE][/SIZE][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515][SIZE=2][COLOR=#a31515]'.'[/SIZE][/SIZE][/SIZE][/FONT][SIZE=2][FONT=Consolas][SIZE=2];[/SIZE][/FONT][/SIZE]
```
Diese Zeilen (hast die zwei mal im Code) werden zum Problem wenn kein ',' im Token ist. Dann gibt strchr ein NULL zurück was sofort zum Absturz der Anwendung führt. Da musste noch mal was korrigieren.  Hätte ich ja machen können, aber ich war wohl zu faul.


----------



## bingo88 (15. Dezember 2010)

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



Fragile Heart schrieb:


> Noch ein Tipp zum Abschluss des Tages. L.B.
> 
> 
> ```
> ...


Jap, hab ich auch irgendwo geschrieben. Da war dann auch mein bereits angesprochener Bug eingebaut, im Datum kam nämlich kein , vor


----------



## pyro539 (16. Dezember 2010)

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

Pah, wer macht sich denn über sowas Gedanken 

Eigentlich sollte man auch strtod verwenden und nicht atof, da man bei atof nicht zwischen einer 0 als eingabe und einer 0 als Fehlerrückgabe unterscheiden kann.


----------



## Fragile Heart (16. Dezember 2010)

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

Fang nicht so an, sonst hole ich mal aus mit was man machen sollte!


----------



## L.B. (16. Dezember 2010)

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

Meiner Meinug nach ist die Performance unseres Programmes schon ziemlich gut und ich glaube kaum, dass jemand Interesse daran hat, eine Datenauswertung für Temperturen und Lüfterdrehzahlen zu hacken.  Deshalb ist es in erster Linie wichtig, dass das Programm einfach nur funktioniert.


----------



## Fragile Heart (16. Dezember 2010)

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

Sag mal, ist eine Dateibasierte Schnittstelle die einzige Möglochkeit an die Daten zu bekommen? Ich würde gerne für mein nächstes Projekt eine Wasserkühlung in betracht ziehen, aber das muss sich besser auslesen und überwachen oder sogar Steuern lassen.


----------



## L.B. (16. Dezember 2010)

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

Die gesamte Steuerung übernimmt die Software des Heatmasters: Aquatuning - Der Wasserkühlung Vollsortimenter - Alphacool Heatmaster Alphacool Heatmaster 70125 (Heute gibt es sogar 10% Rabatt auf den HM )

Hätte man den Quellcode der Software, ließe sich die Aufnahmen der Messwerte mit Sicherheit auch noch optimieren und von der Log-Datei lösen. Allerdings war Alphacool nicht bereit, den Code herauszugeben, was ich aber auch verstehen kann. 

Unsere Software dient in erster Linie ja dazu, die Messwerte an das LCD weiterzusenden. 
Dehalb denke ich, wäre es sinnvoll, dass wir uns zuerst mit der Ausgabe auf dem LCD beschäftigen. Dazu wird das Programm  LCD Hype verwendet, für das ein Plugin geschrieben werden muss.  (s. einige Seiten weiter vorne)


----------



## L.B. (20. Dezember 2010)

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

Auch wenn es hier derzeit ein bisschen ruhig ist, habe ich das Programmieren längst nicht aufgegeben. Ich habe von einem Freund ein gutes Buch zu C bekommen, sodass ich mir zurzeit ein bisschen mehr Grundwissen aneigne. Dann sollten meine Programme demnächst auch ein wenig funktioneller und praktischer sein.


----------



## L.B. (26. Dezember 2010)

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

Ich mache programmiertechnisch Fortschritte und habe Einiges programmiert und gelernt.  Demnächst werde ich mich dann wieder mit dem Programm befassen.

Momentan beschäftige ich mich mit dynamischer Speicherverwaltung, dazu gibt es auch ein Programm im Anhang.


----------



## Fragile Heart (27. Dezember 2010)

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

Entschuldige, aber welchen Sinn verfolgst du mit diesen Programm?  Und eine Sache hast du noch nicht verinnerlicht. Du musst die Rückgabe einer Funktion prüfen, das ist besonders bei Dynamischen Speicher sehr sehr wichtig!


----------



## L.B. (27. Dezember 2010)

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



Fragile Heart schrieb:


> Entschuldige, aber welchen Sinn verfolgst du mit diesen Programm?



Das Program dient nur der Übung. Mir ist klar, dass man mit dem Programm an sich nicht viel anfangen kann.   



> Und eine Sache hast du noch nicht verinnerlicht. Du musst die Rückgabe einer Funktion prüfen, das ist besonders bei Dynamischen Speicher sehr sehr wichtig!



Wie sähe das dann aus?


----------



## Fragile Heart (27. Dezember 2010)

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

Alles was von malloc zurückgeben wird, erst mal gegen null prüfen. 

Wenn malloc null zurück gibt, dann konnte kein Speicher reserviert werden und ein Zugriff würde unweigerlich zum Absturz der Anwendung führen.


----------



## L.B. (27. Dezember 2010)

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

Ach so, kein Problem. Gibt es eine Möglichkeit, bei der Eingabe zu überprüfen, ob die Eingabe außerhalb des Wertebereichs von bspw. int liegt? Wenn ich nämlich 10000000000000 eingebe, wird ein undefinierter Wert zurückgegeben und das Programm stürtzt ab.


----------



## Fragile Heart (27. Dezember 2010)

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

Klar du kannst den String mit atol umwandeln und prüfen.


----------



## Chaoswave (4. Januar 2011)

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

Sehr schönes Projekt 
nur eben zum Verständniss:
Du willst nen Programm schreiben das die Werte ausm Heatmaster ausliest und diese an ein LCD mit LCDHype weitergibt. Richtig so?
Wenn das so ist dann hätte ich großes Interesse an der Software 

MfG


----------



## L.B. (4. Januar 2011)

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

Exakt das soll das Programm später können. Momentan programmiere ich aber nicht, 
weil ich erst einmal meinen CaseCon beenden muss. Lange kann es aber nicht mehr 
dauern, also geht es auch bald weiter.


----------



## Chaoswave (5. Januar 2011)

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

kannste nen bisschen schneller machen? 
Ich bin nämlich grad auch an meinem kleine CaseCon dran und überlege grad ob ich noch ne Aussparung für nen LCDisplay machen soll 

Spaß beiseite:
Lass dir Zeit, mach erst mal dein geiles Projekt  weiter.
Aussparung kann ich ja später evtl noch machen.

MfG Chaoswave


----------



## L.B. (5. Januar 2011)

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

Ein LCD kann man immer gebrauchen. Dafür gibt es auch schon zahlreiche gute Programme, mit denen man schon fast alles anzeigen lassen kann. Wenn man einmal ein LCD hatt, kann man in Zukunft nicht mehr darauf verzichten. 

Die Entwicklung kann aber noch etwas dauern, weil gerade das Plugin für LCD Hype noch richtig kompliziert wird.


----------



## Darkknightrippper (5. Januar 2011)

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

Könnte man die Werte nicht auch im Memory auslesen, statt in der Log-Datei ?. Oder kann man das bei C nicht ?
Evtl. muss man dann noch die Basepointer finden (die Offsets hab mich immer genervt  ), bei manchen Programmen ändert sich immer die Adresse, wenn man es neustartet.


----------



## bingo88 (5. Januar 2011)

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

Solange das Tool von der WaKü nicht mit shared memory arbeitet, nein. Sonst gibt es ne Speicherschutzverletzung und das Programm wird von Windows beendet. Früher, zu 16 Bit Zeiten war das kein Thema, aber ab 32 Bit (aka "Protected Mode") hat jedes Programm seinen eigenen Speicherbereich und Zugriffe auf diesen von anderen Programmen aus führen meist zu einem segmentation fault.


----------



## L.B. (5. Januar 2011)

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

Cool, dass ich jetzt auch mal mitreden kann (mein C Buch ist echt klasse).  Soweit ich weiß, wird jedem Programm Speicherplatz zugewiesen, den es dann auf unterschiedliche Art und Weise nutzt. In C muss für das Programm ja auch Speicher zuweisen, den es falls verfügbar dann erhält.

Man könnte also direkt über den Speicher arbeiten, dazu müsste man dann mit dem C Programm auf den Speicherbereich zugreifen, der der Software (in diesem Falle die Heatmaster Software) zugewiesen ist. Das geht dann (wenn ich alles richtig verstanden habe) nur mit dem Shared Memory, weil es ansonsten zu einer Speicherzugriffsverletzung kommen würde.


Haltet ihr die Verwendung von Shared Memory denn für sinnvoll? Eventuell könnte man damit schnellere Aktualisierungsraten erreichen, denn die Log wird ja nur alle zwei Sekunden aktualisiert, wobei ich denke, dass die Software deutlich schneller arbeitet.


----------



## bingo88 (5. Januar 2011)

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

Das mit dem shared memory (oder jede andere Form der Interprozesskommunikation) klappt aber nur mit dem Heatmaster, wenn dieser auch dafür ausgelegt ist, sprich: Die Heatmaster-SW muss das bereits unterstützen, damit du da die Daten abgreifen kannst.


----------



## L.B. (5. Januar 2011)

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

Ok, ich denke das ist eher nicht der Fall. Der Weg über die Log ist also die beste und einfachste Alternative.


----------



## bingo88 (5. Januar 2011)

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



L.B. schrieb:


> Ok, ich denke das ist eher nicht der Fall. Der Weg über die Log ist also die beste und einfachste Alternative.


Vorerst ja. Vielleicht ergibt sich bei Aerocool ja noch was (Hoffnung stirbt bekanntlich zuletzt)...


----------



## L.B. (5. Januar 2011)

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

Wenn wir die erste funktionstüchtige Version vorliegen haben, kann man eventuell etwas erreichen, vor allem, weil die Aktion ja über Aquatuning läuft. 

Vorerst müssen wir aber diese Version ans Laufen kriegen. Das Problem ist nur, dass mein Rechner, auf dem die Software gespeichert ist, auseinandergebaut neben mir liegt.


----------



## Own3r (5. Januar 2011)

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

Ich würde auch erstmal übers Log gehen und später (wenn sie es erlauben) kannst du es ja über shared memory laufen lassen


----------



## bingo88 (6. Januar 2011)

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

Okay, ich habe jetzt mal ganz tief in meiner WinAPI-Trickkiste gebuddelt: Es gibt Möglichkeiten an Speicher eines anderen Prozesses zu kommen, da gibt es Funktionen für! Allerdings arbeitet man da vollkommen low-level, d. h. man muss Prozess-ID, Speicheradressen, etc. kennen. Und vorallem muss man die notwendigen Rechte besitzen, um an den Prozessspeicher zu kommen. Ich probier im Moment mal ein wenig mit dem Krempel rum, kann dir aber schon jetzt sagen, dass das ziemlich heftiger Kram ist 

Edit: Habe es hinbekommen eine Variable aus Programm A im Programm B zu lesen


----------



## bingo88 (6. Januar 2011)

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

Ich habe gerade dieses Review hier entdeckt und dabei gesehen, dass sich der Heatmaster-Treiber u. a. als COM-Port meldet (daher vermute ich jetzt mal stark, es handelt sich um eine USB -> COM Umsetzung. Ich kann leider außer dem Atmel-Chip nichts erkennen, der kleine Chip unterhalb des Relais könnte ein Kandidat sein). Das macht die Sache wesentlich einfacher! Man könnte nämlich jetz mit einem COM-Port-Sniffer das Protokoll untersuchen, welches von der Originalsoftware genutzt wird und damit seine eigene Software entwickeln. Da ich allerdings keinen Heatmaster besitze, kann ich in die Richtung aktuell nicht viel machen machen. Damit könnte man diesen ganzen Firlefanz mit Prozesspeicher lesen etc. geschickt umschiffen


----------



## Darkknightrippper (6. Januar 2011)

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

Bei C++ hätte ich so auf den Speicher zugegriffen.

HWND hwnd;
hwnd = FindWindow(0,L"Solitär");
DWORD Id;
HANDLE ProcessHandle;       
GetWindowThreadProcessId(hwnd,&Id); 
ProcessHandle = OpenProcess(PROCESS_VM_WRITE |PROCESS_VM_OPERATION ,false,Id);

Ich weiß nur nicht ob das so bzw. so ähnlich auch unter C geht. Ist übrigens ein Hack für Solitär. Die Speicheradressen kann man ganz gut Cheat Engine finden.


----------



## bingo88 (6. Januar 2011)

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

Ja, genau. Das ist was ich bei meinem Beispiel auch gemacht hatte. Aber wenn die eine COM-Verbindung zur Datenübertragung nutzen, muss man das nicht so kompliziert machen, zumal der Zugriff auf Prozessspeicher eigentlich nur mit globalen Variablen sicher funktioniert. Lokale Variablen müssen während der Programmlaufzeit nicht immer an derselben Stelle im Speicher liegen, was die Sache ziemlich schwierig macht.


----------



## L.B. (6. Januar 2011)

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

Auf dem Chip, den du meinst, steht Silab CP2102 und der Hauptchip ist ein AtMega32.
Wenn es eine Möglichkeit gäbe, die Heatmaster Software komplett zu ersetzen, wäre das natürlich auch nicht schlecht, hätte aber den Nachteil, dass man sämtliche Funktionen (Steuerungsschleifen, Anzeige, usw.) neu programmieren müsste. Das halte ich nicht für sinnvoll, wenn man schon ein entsprehendes Programm zur Verfügung stehen hat.
Der Weg über den Prozessspeicher gefällt mir da besser und es scheint ja auch zu funktionieren.


----------



## bingo88 (6. Januar 2011)

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

Na dann viel Spaß beim Suchen der Adressen 
Und falls die eine neue Version der Software rausbringen, kannst du auch alle Adressen ersetzen. Und wie gesagt, wenn die Daten innerhalb einer Funktion in lokalen Variablen landen, wird es noch schwieriger. Lokale Variablen müssen nicht zwangsläufig an derselben Adresse landen, da sie zur Laufzeit dynamisch auf dem Stack erzeugt werden und dieser sich zwischen Funktionsaufrufen einfach ändern kann.

Das mit dem Prozessspeicher kann ab Windows Vista übrigens vom Programm gesperrt werden (obwohl ich nicht glaube, dass dies hier gemacht wurde).

Edit: Der Silab CP2102 ist ein USB nach UART Umsetzer, also wie ich bereits vermutet hatte ^^


----------



## L.B. (6. Januar 2011)

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

Also vergessen wir die Übertragung von Daten über den Prozessspeicher. Wenn wir eine eigene Software programmieren, könnten wir natürlich direkt eine LCD Funktion einbauen, sodass wir uns den Umweg über LCD Hype sparen könnten. Ich stelle mir das allerdings sehr kompliziert vor.


----------



## Darkknightrippper (6. Januar 2011)

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

Ich hätte euch helfen können, ich finde die passenden Adressen relativ schnell mit Cheat Engine, aber da ich weder den Heatmaster noch das Programm habe, fällt das Weg. Das Programm alleine bringt nichts es gibt zig Tausend Adressen mit dem Wert 0.
Die passenden Base-Pointer würde ich dann auch versuchen zu finden, wenn es welche gibt.


----------



## bingo88 (6. Januar 2011)

*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 

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)


----------



## L.B. (6. Januar 2011)

*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.


----------



## bingo88 (6. Januar 2011)

*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 

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 

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...


----------



## L.B. (6. Januar 2011)

*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.  

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.


----------



## bingo88 (6. Januar 2011)

*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


----------



## pyro539 (6. Januar 2011)

*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.


----------



## L.B. (7. Januar 2011)

*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.


----------



## Chaoswave (16. Januar 2011)

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

was macht der Stand der Entwicklung?


----------



## L.B. (17. Januar 2011)

*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.


----------



## Chaoswave (19. Januar 2011)

*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?


----------



## Nobody 2.0 (19. Januar 2011)

*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


----------



## L.B. (19. Januar 2011)

*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.


----------



## Nobody 2.0 (19. Januar 2011)

*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


----------



## L.B. (27. Januar 2011)

*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. 


Edit: Ich habe den Installer noch weiter verbessert und sogar ein schickes User Interface zustande bekommen. Das Auge installiert schließlich mit.


----------



## L.B. (31. Januar 2011)

*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. )
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.


----------



## Chaoswave (1. Februar 2011)

*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 
instalieren und deinstalieren funktioniert wunderbar
MfG Chaoswave


----------



## L.B. (1. Februar 2011)

*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.


----------



## L.B. (3. Februar 2011)

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

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


```
//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.


----------



## bingo88 (4. Februar 2011)

*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:

```
2010-12-02;18:34:01;34,4;21,3;21,3;20,0;-3276,8;-3276,8;
```


```
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.


----------



## Chaoswave (10. Februar 2011)

*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


----------



## L.B. (10. Februar 2011)

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

@ Chaoswave: Kein Problem, das liegt an der nicht vorhandenen Log Datei des Heatmasters, denn diese muss erst erstellt werden. Dazu wählst du in der HM Software unter "File"->"Aufzeichnung aktivieren". Wenn du Windows 7 nutzt, dürfte aber immer noch keine Log angelegt werden (Bug in der HM Software). Damit die Datei ordnungsgemäß angelegt wird, musst du die HM Software im Kompatiblitätsmodus für XP und mit Administratorrchten starten. 

Je nachdem welche Version du hast, werden jetzt die Werte angezeigt (meine erste semi-professionelle Version) oder es flackert ein bisschen und das Programm verhält sich undefiniert (neue Version mit String-Funktionen).


----------



## Nobody 2.0 (10. Februar 2011)

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



L.B. schrieb:


> @ Chaoswave: Kein Problem, das liegt an der nicht vorhandenen Log Datei des Haetmasters, denn diese muss erst erstellt werden. Dazu wählst du in der HM Software unter "File"->"Aufzeichnung aktivieren". Wenn du Windows 7 nutzt, dürfte aber immer noch keine Log angelegt werden (Bug in der HM Software). Damit die Datei ordnungsgemäß angelegt wird, musst du die HM Software im Kompatiblitätsmodus für XP und mit Administratorrchten starten.
> 
> Je nachdem welche Version du hast, werden jetzt die Werte angezeigt (meine erste semi-professionelle Version) oder es flackert ein bisschen und das Programm verhält sich undefiniert (neue Version mit String-Funktionen).



Es flackert nicht nur es schmiert ab L.B....

Ohne Vorwahrnungen kann es sein das sich das Programm aufhängt hab ich so beim Testen heraus gefunden. An welchen Programm genau es nun liegt weiß ich nicht. Aber es bleibt nur die HM Software und die deine übrig.


----------



## L.B. (10. Februar 2011)

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

Die neue Version meiner Software (speziell die Auslese-Funktion) ist nicht funktionstüchtig, aus welchem Grund auch immer. (s.oben) 
Ich denke, dass die Auslese-Funktion komplett neu geschrieben werden muss. Mittlerweile habe ich mir auch das nötige Know-How angelesen, sodass ich mich demnächst (evtl. gleich, wenn ich Linux fertig installiert habe) damit befassen werde.


----------



## Chaoswave (10. Februar 2011)

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


ich könnt grad mein Windows und die scheiß Heatmaster ausm Fenster werfen
Ich bekomm hier gleich nen Anfall.
Ich hab die sch**** logdatei aktiviert! Und zack geht die Software zu. Minimiert sich erstmal. Lässt sich auch nicht mehr maximieren 
erst mal neu installieren, ändert nichts, Software schreibt sofort ne Logdatei neu und geht dann wieder in den Minimodus. Das wars. 
Kompatibilitätsmodi hab ich alle durch. Admin auch.
Diverse Neustarts auch.
Das Problem ist die Dumme Logdatei(glaube ich). Die kann ich aber auch nicht abschalten...  der schreibt die immer wieder neu, nach ner KOMPLETTEN deinstallation und neu installation schreibt der die sofort wieder neu. Ich kanns nicht ausstellen. Auffällig ist auch das er sofort nach Port3 scannt. Da hängt der Heatmaster dran, der hat aber am Anfang immer erst Port 1 gescannt bis ichs umgestellt hatte.
Hat der noch irgendwo nen Profil angelegt was der immer abruft?

Btw: trotz lodDatei kann das Programm die Werte nicht auslesen. Kann aber auch an der defekten HMSoftware liegen.......


MfG Jannik


----------



## Nobody 2.0 (10. Februar 2011)

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



Chaoswave schrieb:


> ich könnt grad mein Windows und die scheiß Heatmaster ausm Fenster werfen
> Ich bekomm hier gleich nen Anfall.
> Ich hab die sch**** logdatei aktiviert! Und zack geht die Software zu. Minimiert sich erstmal. Lässt sich auch nicht mehr maximieren
> erst mal neu installieren, ändert nichts, Software schreibt sofort ne Logdatei neu und geht dann wieder in den Minimodus. Das wars.
> ...



Ich kann dich beruhigen es liegt nicht an der Log Datei. Aber wenn du jetzt am ausrasten bist sollte ich vlt nicht schreiben das es ein allgemeiner Fehler des Programmes ist und das er auftretten kann unabhänig was gerade gemacht wird. Er ist sehr selten und nicht reproduzierbar. Ich hatte ihn auch und trotz masivster eingriffe habe ich das Problem nicht in den Griff bekommen. Aber sei beruihgt. Eine neu instalation hilft. Ansonsten kannst du noch Versuchen das Programm zu deinstalieren, die regestry zu säubern. Den heatmaster an einen anderen PC anschliesen, ihn soweit zurückzustellen wie es geht und wieder neu anschliesen und einrichten. 

Ich hab aber das OS lieber neu instaliert.


Oh ups jetzt hab ichs doch geschrieben.


----------



## L.B. (10. Februar 2011)

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

Meine Software liest noch nichts aus, weil der entsprechende Funktionsblock nicht funktioniert oder auskommentiert ist.


Ich habe bei der Software des Heatmasters keine Stabilitätsprobleme, weshalb ich nicht sagen kann, woran das Problem liegt. Sei aber versichert, an meiner Software liegt es nicht, denn diese ist zwar noch nicht funktionstüchtig, greift aber auch nicht in die HM Software ein. Die einzige Verbindung liegt im Zeiger, der den Stream zur Log Datei adressiert. 

Bei Problemem mit der HM-Sooftware kann dir Nobody besser helfen, da er sich mit der Software besser auskennt als ich. 


P.S. Ich schreibe gerade auf Linux in der virtuellen Maschine, das funktioniert super.


----------



## Chaoswave (11. Februar 2011)

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



Nobody 2.0 schrieb:


> Ich kann dich beruhigen es liegt nicht an der Log Datei. Aber wenn du jetzt am ausrasten bist sollte ich vlt nicht schreiben das es ein allgemeiner Fehler des Programmes ist und das er auftretten kann unabhänig was gerade gemacht wird. Er ist sehr selten und nicht reproduzierbar. Ich hatte ihn auch und trotz masivster eingriffe habe ich das Problem nicht in den Griff bekommen. Aber sei beruihgt. Eine neu instalation hilft. Ansonsten kannst du noch Versuchen das Programm zu deinstalieren, die regestry zu säubern. Den heatmaster an einen anderen PC anschliesen, ihn soweit zurückzustellen wie es geht und wieder neu anschliesen und einrichten.
> 
> Ich hab aber das OS lieber neu instaliert.
> 
> ...



oh man da hast dus doch gesagt... menno 
hab mich mittlerweile wieder beruhigt 
die Software ist generell nicht so der Knaller... gibts nicht irgendwie nen Relaunch? Hab da mal was läuten gehört. Ich weiß nur nicht mehr wo.

Naja läuft jetzt soweit. Hatte ja schon alles eingestellt zu meiner Zufriedenheit.
Die HM braucht ja zum Glück keine dauerhafte Steuerung.
Dann mach ich das OS in 1 Monat Platt und machs dann neu.
Danke nobody das du mir erzählt hast wie hoffnungslos die Situation ist 


@Lukas
ich glaub ich guck mir Linux mal an. Lohnt sich virtuelle Maschine oder sollte man das komplett installieren und dann mit nem Bootloader zwischen Win und Linux wählen?

MfG


----------



## bingo88 (11. Februar 2011)

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

Wenn du nicht grade unter Linux spielen willst oder anderwertig 3D-Anwendungen nutzen willst, geht ne VM ganz gut. Arbeite selbst mit einer Linux-VM.


----------



## L.B. (11. Februar 2011)

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

Ich würde es eher normal installieren, also nicht in einer virtuellen Maschine. Das System läuft zwar stabil, allerdings ist die Auflösung auf 600x800 Pixel limitiert. Es gibt allerdings eine Erweiterung, die auch höhere Auflösungen erlaubt, nur habe ich einige Probleme, diese unter Linux zu installieren.


----------



## pyro539 (11. Februar 2011)

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

Welche Distribution ist bei dir am laufen? Und welche Virtualisierungssoftware?

Ich hatte mit VirtualBox als Software und Arch Linux bzw. Debian-Guests keine Probleme, die Guest Additions zu installieren.


----------



## bingo88 (11. Februar 2011)

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



L.B. schrieb:


> Ich würde es eher normal installieren, also nicht in einer virtuellen Maschine. Das System läuft zwar stabil, allerdings ist die Auflösung auf 600x800 Pixel limitiert. Es gibt allerdings eine Erweiterung, die auch höhere Auflösungen erlaubt, nur habe ich einige Probleme, diese unter Linux zu installieren.


Nutz du Virtualbox? Um die VM-Treiber zu installieren brauchst du gcc + libs, sowie die Kernel-Header zu deinem aktuellen Kernel. Wenn das Zeugs da ist, kannst du eigentlich problemlos die Treiber mittels des beigefügten Install-Skripts installieren, das macht dann alles notwendige. Einmal neustarten und der Treiber sollte aktiv sein....


----------



## L.B. (11. Februar 2011)

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

Ja, ich nutze VirtualBox (Ver. 4.0.2), ganz so kompliziert ist es aber doch nicht. Man muss nur ein ISO-Package herunterladen (VBoxAdditions 4.0.2), welches in das optische Laufwerk eingebunden wird. Dann kann man auf den Ordner zugreifen und das entsprechende Paket installieren. Ich habe dabei den Fehler gemacht, dass ich das Windows Paket (.exe über Wine ausgeführt) und nicht das Paket für Linux instaliert habe.  
Ich habe gelesen, dass man in die Linux-Konsole zwei Befehle eingeben muss und das entsprechende Paket sollte installiert werden. Das werde ich später mal ausprobieren.


----------



## bingo88 (11. Februar 2011)

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



L.B. schrieb:


> Ja, ich nutze VirtualBox (Ver. 4.0.2), ganz so kompliziert ist es aber doch nicht. Man muss nur ein ISO-Package herunterladen (VBoxAdditions 4.0.2), welches in das optische Laufwerk eingebunden wird. Dann kann man auf den Ordner zugreifen und das entsprechende Paket installieren. Ich habe dabei den Fehler gemacht, dass ich das Windows Paket (.exe über Wine ausgeführt) und nicht das Paket für Linux instaliert habe.
> Ich habe gelesen, dass man in die Linux-Konsole zwei Befehle eingeben muss und das entsprechende Paket sollte installiert werden. Das werde ich später mal ausprobieren.


Das brauchst net runterladen, das ist schon dabei. Einfach Hosttaste + D (z. B. Strg + D) und das ISO wird ins virt. Laufwerk gelegt. Der Aufwand hängt halt nur von deinem Linux ab: Wenn du noch kein gcc bzw. keine Kernel-Header drauf hast, schlägt das Setup halt fehl.


----------



## L.B. (11. Februar 2011)

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

Gut zu wissen. Dann werde ich das gleich ausprobieren. Welche 
Entwicklungsumgebung (C/C++) empfehlt ihr mir für Linux?


----------



## Nobody 2.0 (11. Februar 2011)

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



> die Software ist generell nicht so der Knaller... gibts nicht irgendwie nen Relaunch? Hab da mal was läuten gehört. Ich weiß nur nicht mehr wo.



Jo das ist sie nicht gerade. 

Angeblich sollte es anfang diesen Jahres was geben. Aber naja mein alter spruch kommt leider mal wieder zum tragen.

Alphacool und die Software.....

Achja Linux gehört nicht in einer VM. Das gehört als Haupt OS auf die Platte.


----------



## bingo88 (11. Februar 2011)

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



L.B. schrieb:


> Gut zu wissen. Dann werde ich das gleich ausprobieren. Welche
> Entwicklungsumgebung (C/C++) empfehlt ihr mir für Linux?


Für einfaches reicht durchaus ein editor deiner wahl. Ich arbeite zur Zeit mit Eclipse CDT (also Eclipse + C++ Tools) und naja, Eclipse ist halt was mächtig für den Anfang, da muss man erst mal reinfinden. Wenn man dann aber die ganzen Shortcuts, etc. drauf hat, klappt's aber alles wunderbar. Eclipse hat halt noch den Vorteil, du brauchst es nur zu entpacken, es ist keine Installation nötig. Du müllst dir also nicht dein System zu 

NetBeans wäre noch ne Alternative, allerdings zickt das bei mir unter Linux ein wenig rum (sowohl Darstellungsfehler als auch "echte" Bugs im Sinne von nicht funktionierenden Build-Tools...)


----------



## L.B. (11. Februar 2011)

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

@bingo88: Danke, dann werde ich mir entprechende Programme mal angucken. 

@Nobody: Linux ist wirklich genial. Wenn ich das gewusst hätte, hätte ich mir kein Windows 7 für 80€ gekauft. 

Nachdem ich ein bisschen in der Konsole rumgetippt habe, konnte die Erweiterung installiert werden, sodass ich nun auch auf 1920x1080 Pixeln arbeiten kann. 

Ich habe ungefähr folgende Befehle eingegeben:

1.) cd /media
2.) dir
3.) VBoxAdditions_4.0.2_blabla dir
4.) cd sh ./VBoxLinuxAdditions.run


Ich bin dann mal konfigurieren...


----------



## L.B. (11. Februar 2011)

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

Ich habe noch etwas programmiert, leider ohne Erfolg. Die aktuelle Version ist einfach nicht funktionstüchtig und da ich den Quellcode nur zu 80% nachvollziehen kann, ist es mir auch kaum möglich, hier irgendwelche Fehler zu korrigieren.


----------



## L.B. (13. Februar 2011)

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

Gerade habe ich mich wieder ein bisschen mit graphischer Programmierung auseinandergesetzt, damit man später nicht in der Konsole arbeiten muss. 

Allerdings habe ich Probleme mit dem Programm Qt Creator, und zwar beim Kompilieren. In der Ausgabe steht dann "Das 'make'-Kommando 'make' konnte in der Build-Umgebung nicht gefunden werden".
Irgendwo muss es eine Funktion geben, mit der man die Pfade richtig einstellen kann, ich weiß nur nicht wie.


----------



## bingo88 (13. Februar 2011)

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

Linux oder Win? Die Pfade kannst du unter den Einstellungen einstellen (Build-Tools oder so). Habe leider grade kein Qt SDK hier installiert, daher kann ich dir nicht den genauen Ort nennen.


----------



## pyro539 (13. Februar 2011)

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

Welche Distribution verwendest du noch gleich? Bei eigentlich allen Distributionen gibt es ein Paket, welches die benötigten Tools (u.A. make) installiert. Bei Debian(-derivaten) heißt das z.B. build-essential.

Pfade musst du unter Linux generell nicht einstellen, wenn die Tools richtig installiert sind, dann werden sie i.d.R. auch gefunden 

Aja, Qt ist übrigens eine C++-Bibliothek, d.h. mit C kommst du da nicht weit. Aber vllt. wäre es vorher erstmal wichtiger das Auslesen und Anzeigen richtig zu implementieren. Ein GUI kann man dann ja immer noch dazu bauen. Wobei ein CLI eigentlich ausreicht


----------



## L.B. (13. Februar 2011)

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

Qt läuft derzeit unter Windows. 

Aber pyro539 hat recht, dass erst einmal die Grundfunktionen laufen müssen. Wobei so ein graphisches Interface auch nicht schlecht wäre. Dass Qt Creator mit C++ arbeitet, ist klar, wobei es sich ja auch nicht wirklich von C unterscheidet, zumindest in Bezug auf die Funktionen, die wir benötigen.

Forenuser BaSH hat mir eben ein gutes Program für das Auslesen des Speicherberichs der HM Software empfohlen.  Es nennt sich Cheatengine (Cheat Engine - Download - CHIP Online). D.h. die Auslesefunktion könnte man doch über Shared Memory realisieren. Nur weiß ich da wieder nicht, wie das funktionieren soll.


----------



## bingo88 (13. Februar 2011)

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

Hast du MinGW installiert? Das brauchst du für Qt unter Windows. Evtl. stimmen auch einfach nur die Pfade nicht (ich glaube MinGWs make heißt nicht "make" sonder "mingw-make" oder so)

Zu Shared Memory: Dieser Ansatz hat halt den gravierenden Nachteil, dass jedes SW Update von HM eine neue Analyse des Speichers und dementsprechend eine Anpassung deines Programms notwendig macht. Abgesehen davon gibt es ab Win Vista die Möglichkeit, Shared Memory für eine Anwendung zu blockieren


----------



## <BaSh> (14. Februar 2011)

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

Das heraussuchen der Pointer (Werte) würde ich übernehmen. Das Problem dabei ist ,dass das Heatmaster Programm ohne selbigen sich nicht öffnet. Ansonsten würde ich dir ein Schritt für Schritt Tutorial für das Auslesen der Pointer bzw Werte zusammensuchen.

Edit:
Die Grafische Oberfläche in C++ kann ich nach Wünschen gestalten dank VS2010


----------



## L.B. (14. Februar 2011)

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

Die HM Software wird aber sowieso nur sehr selten mit Updates versorgt, von daher denke ich, ist das kein Grund, das Auslesen nicht über Shared Memory zu realisieren. 

Des Weiteren habe ich endlich den Qt Creator zum Kopilieren bewegen können. Ich hatte nämlich zuerst nur den Creator ohne Compiler, etc. installiert. Mit dem Qt SDK funktioniert es jetzt.

Ich habe natürlich sofort ein bisschen herumprobiert und herausgekommen ist diese Oberfläche. Natürlich sind die Signalslots noch nicht bearbeitet, allerdings weiß ich ungefähr wie das geht. ein simples Programm, das den Text aus einer Eingabe nach dem Drücken eines Buttons in ein Label  schreibt, habe ich auf jeden Fall hinbekommen. 





			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        






			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        






			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




Soweit ich das verstanden habe, kann man später einfach die MainWindow.cpp, Main.cpp, MainWindow.h und MainWindow.ui in sein Programm (Windows Programm) einbinden und über die Funktionen ansprechen. Das heißt natürlich, dass wir auf C++ umsteigen müssen, da die Dateien in C++ geschrieben sind. Eventuell dürfte das aber auch das Ausesen der Werte und Ansprechen des Plugins für LCD Smartie aufgrund der vielfältigeren Möglichkeiten vereinfachen.

Ich werde jetzt mal die Slots bearbeiten.


----------



## <BaSh> (14. Februar 2011)

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

Für die Checkboxen bei Log beziehungsweise Display kannst du eine einfache while Schleife bauen. Und in Label schreiben ist in C++ wirklich einfach.

Edit: Du hast autoart anstelle von autostart im OptionsFenster geschrieben.


----------



## <BaSh> (14. Februar 2011)

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

Würde die Schleife ungefähr so aufbauen ( Verschachtelungen möglich):

```
void _abfrage()
{
    int lcd_checked = 0;
    int log_checked = 0;
    int autostart_checked = 0;
    int startminimized_checked = 0;
    //int setzen_von_boxen = 0;        Variable zum Testen

    /* diese For-Schleife dient nur zum Testen ob die Ausgabe mit der Whileschleife funktioniert
    for(int i=0; i<3; i++)
    {
        setzen_von_boxen++;
        if(setzen_von_boxen = 1)            
        {
            lcd_checked = 1;
        }
        else if (setzen_von_boxen = 2)
        {
            log_checked = 1;
        }
        else if (setzen_von_boxen = 3)
        {
            autostart_checked = 1;
        }
        else if (setzen_von_boxen = 4)
        {
            startminimized_checked = 1;
        }
    }

    */
    if(autostart_checked == 1)
    {
        //Funktion wenn Autostart gechecked ist
        printf("Autostart aktiviert");
        break;
    }
    while(lcd_checked == 1)
    {
        //Funktion wenn LCD gechecked ist
        printf("LCD checked");
        break;
    }
    if(startminimized_checked == 1)
    {
        //Funktion wenn minimiert gestartet werden soll
        printf("Minimiert starten");
        break;
    }
    while(log_checked == 1 )
    {
        //Funktion wenn Log aktiviert ist
        printf("Logdateien aktiviert");
        break;
    }
    
    

}
```


----------



## Monsterclock (20. Februar 2011)

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

Hi ich wollte den Heatmaster auch mal auf meinem LCD Display haben, deswegen hab ich log Datei vom Heatmaster ausgelesen.

Das sah in den Anfängen so aus

```
/ T1 =26
  T2 =31
  T3 =36
  T4 =41
  T5 =46/
   'System Time:     ' %System.GetDateTime('hh:nn:ss')                                                  %Common.CreateNewLine()
    'Heatmaster Zeit: ' %String.Copy(%System.ReadFile('E:\Programme\Alphacool\Heatmaster 2009\output.csv'),12,8)       %Common.CreateNewLine()
    'Temp Internal:   ' %String.Copy(%System.ReadFile('E:\Programme\Alphacool\Heatmaster 2009\output.csv'),21,4)  'C'   %Common.CreateNewLine()
    'Temp H2O RadIn:  ' %String.Copy(%System.ReadFile('E:\Programme\Alphacool\Heatmaster 2009\output.csv'),26,4)  'C'   %Common.CreateNewLine() 
    /'Temp H2O RadOUT: ' %String.Copy(%System.ReadFile('E:\Programme\Alphacool\Heatmaster 2009\output.csv'),26,4)  'C'   %Common.CreateNewLine()/
    'Temp Air In:     ' %String.Copy(%System.ReadFile('E:\Programme\Alphacool\Heatmaster 2009\output.csv'),41,4)  'C'   %Common.CreateNewLine()
    'Temp Air Out:    ' %String.Copy(%System.ReadFile('E:\Programme\Alphacool\Heatmaster 2009\output.csv'),46,4)  'C'   %Common.CreateNewLine()
    'Temp Spawas:     ' %String.Copy(%System.ReadFile('E:\Programme\Alphacool\Heatmaster 2009\output.csv'),31,4)  'C'   %Common.CreateNewLine()
    'Pumpspeed:       ' %String.Copy(%System.ReadFile('E:\Programme\Alphacool\Heatmaster 2009\output.csv'),96,4) 'RPM'   %Common.CreateNewLine()
    'Fanspeed:  MoRa  ' %String.Copy(%System.ReadFile('E:\Programme\Alphacool\Heatmaster 2009\output.csv'),101,4)  'RPM'   %Common.CreateNewLine() 
    /'Fanspeed:  T-Rad ' %String.Copy(%System.ReadFile('E:\Programme\Alphacool\Heatmaster 2009\output.csv'),101,4) 'RPM'   %Common.CreateNewLine() /
#EndGfxMode
```

Die oberen angaben T=.... war die Stelle im String vom Temeratursensor (Die Ausgegebene CSV Datei wurde vorher noch mit einen Programm mit Nullen aufgefüllt, das der String imer gleichlang war, deswegen output.csv)

Leider hat mir win7 meine alte Festpallte zerschossen , auf der das script war mit schöner hintergrundgrafik usw... evtl  finde ich die auch wieder....


----------



## L.B. (21. Februar 2011)

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

Ich wuste gar nicht, dass das mit LCD Hype so einfach ist.  Zwar ist diese Möglichkeit eher weniger professionell, aber erfüllt ihren Zweck. Ich werde mir das später mal ansehen.


----------



## <BaSh> (8. März 2011)

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

Gibt es schon irgendetwas neues?


----------



## L.B. (8. März 2011)

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

Bezüglich des Programms gibt es nichts Neues, aber ich habe mich ein bisschen in den Qt Creator eingearbeitet und ein halbwegs vernünftiges Programm hinbekommen. Allerdings kann ich seit Kurzem nicht mehr Kompilieren.  Es wird folgende Fehlermeldung unabhängig vom geladenen Projekt ausgegeben: "collect2: Id Returned 1 exit status" An den Verzeichnissen wurde nichts geändert. 

Eine Frage habe ich auch noch, und zwar kann ich die kompilierte exe Datei nicht einfach ausführen, denn hier fehlen angeblich entsprechende dll Dateien. Woran liegt das?


----------



## bingo88 (8. März 2011)

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

ld ist der Linker. Scheint mir so, als würde der ne Lib/Funktion nicht finden. Leider sind diese Fehlermeldung meist wenig hilfreich 

Das DLL-Problem hängt mit Qt zusammen. Du benötigst für Qt eine Runtime (z. B. DLLs im selben VZ), sofern du dein Programm nicht statisch bindest.


----------



## <BaSh> (23. März 2011)

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

Bin gerade mal wieder am durchschauen und dabei ist mir aufgefallen das man doch alle diese Zeilen: 

```
char Zehner_Internal;
char Einer_Internal;
char Komma_Internal;
char Dezimale_Internal;
```
in ein array schreiben könnte um einfach viel schreibarbeit und vorallem Fehlerquellen zu sparen.
Kann zum Thema Arrays diese Seite nur empfehlen:
Link hier


----------



## L.B. (23. März 2011)

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

Wenn ich mich richtig erinnere sind die Werte auch in char-Arrays gespeichert, denn in C gibt es ja keinen separten Datentyp für Strings. 

Ich muss ganz ehrlich sagen, dass ich mich nicht mehr wirklich mit dem Programm beschäftigt habe, da wir derzeit schulisch an einem sehr aufwendigen Projekt arbeiten, welches ebenfalls in C programmiert ist. Dort sammeln wir natürlich sehr viele Erfahrungen, die auch dem Ausleseprogramm zugute kommen werden.


----------



## <BaSh> (24. März 2011)

Die Werte werden noch in einzelnen Variablen gespeichert. In einem Array könnten zum Beispiel alle ausgelesenen Daten der Temperatur 0 in einer anstelle von 4 Variablen gespeichert werden.


----------



## <BaSh> (26. April 2011)

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

Also werde mir bald einen Heatmaster gönnen und mich dann nocheinmal weiter mit dem Problemen hier beschäftigen, alias Speicher auslesen etc.....


----------



## L.B. (1. Mai 2011)

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

Hey, das hört sich doch gut an. Ich habe mich leider nicht mehr mit dem Projekt beschäftigen können, da ich in letzter Zeit Probleme mit meinem Rechner hatte (zweimal NT abgeraucht, momentan außer Betrieb).  
Natürlich werde ich weiterhin dranbleiben.


----------



## <BaSh> (4. Mai 2011)

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

Wie ich darauf kam?

Habe das hier gefunden.

Lese mich gerade über das auslesen des Com-Ports schlau...
Vielleicht wäre das ja eine Alternative. Ende des Monats sollte der Heatmaster bei mir liegen 

Edit:
Hier mal das was ich mir gerade anschaue o_O

Edit2: 
Noch etwas schönes gefunden


----------



## Monsterclock (4. Mai 2011)

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

Da man auch einfach die log Datei auslesen kann, werde ich mal innerhalb der nächsten 5Wochen mal schreiben wie man das (brauchbar) machen kann. 

Grüße


----------



## <BaSh> (4. Mai 2011)

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

Aber für die Logdateien musste die Software aufhaben für das auslesen der Daten vom Port nicht


----------



## L.B. (5. Mai 2011)

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

Das Auslesen über das Log File haben wir ja schon zu Anfang des Projekts angefangen. Es geht zwar, ist aber nicht wirklich sauber. Wenn <BaSh> es sich zutraut, die Schnittstelle direkt anzusteuern, dann ist das natürlich nicht nur, mit weniger Konfigurationsaufwand der fertigen Software verbunden, sondern auch noch schneler, stabiler und weniger Ressourcenintensiv (man bedenke, dass alle zwei Sekunden ein Eintrag in die log Datei gemacht wird).  

Trotzdem kannst du natürlich auch den Weg über die Log weiter verfolgen.


----------



## Monsterclock (5. Mai 2011)

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



L.B. schrieb:


> [...] Es geht zwar, ist aber nicht wirklich sauber. [...]


 jo genau das is auch mein Problem, ich hab aber denke ich ne idee, die ich noch etwas ausbauen muss  Aber die Tatsache mit den Ressourcen bleibt natürlich, es wäre aber ein Anfang


----------



## L.B. (5. Mai 2011)

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

Ok, der Aspekt mit den Ressourcen ist jetzt nicht wirklich ausschlaggebend, denn so eine Textdatei kann schon ein paar Daten packen, bis sie 100MB groß wird. (Die größte Textdatei auf meinem Rechner hat 32MB und in ihr stehen die ersten 32*10^6 Dezimalen von Pi.) 
Der wesentlich größere Haken an der Sachen ist die Aktualisierungsgeschwindigkeit der Werte, denn hier liegt die schnellste Einstellung bei 2 Werten pro Sekunde. Trotzdem reicht das natürlich für eine einfache Anzeige auf einem LCD bei Weitem aus.


----------



## Monsterclock (5. Mai 2011)

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

Ja und ein weiters Problem is, wenn die Datei zu groß wird hat mein umschreibungs-Programm (das die CSV datei für LCD hype lesbar macht) Probleme... Das muss ich noch etwas umprogrammieren.


----------



## L.B. (5. Mai 2011)

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

Eine einfache Möglichkeit wäre es, die Log bei jedem Start des Programms oder in definierten Intervallen zu leeren.


----------



## <BaSh> (5. Mai 2011)

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

Werde morgen mal Bilder von einem Vorschlag fürs GUI liefern oO dank VS 2010 ist das ja supereinfach, übringens auch die Einbindung eines seriellen Ports in das Programm 
Aber nur in der Professionalversion


----------



## L.B. (5. Mai 2011)

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

Hört sich super an.  Immer her mit den Infos.


----------



## <BaSh> (6. Mai 2011)

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

So hier mal das was ich mir vorstelle. Zwar noch alles einfach aber auf das sinnvolle begrenzt.

Edit: Solange euch das Layout nicht gefält werde ich natürlich nichts an der Hintergrund sache machen. Außer mich mit den seriellen Ports auseinanderzusetzen.


----------



## L.B. (7. Mai 2011)

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

Ok, die Oberfläche macht schon mal einen sehr guten Eindruck.  Ich würde allerdings noch ein paar Kleinigkeiten abändern. Beim erstern Screen (Portauswahl) wäre es sinnvoller, die verfügbaren Ports in einer Listbox anzuzeigen, denn wer weiß schon, welcher Ports verfügbar sind und welche nicht. Der Screen mit der Ausgabe der Daten ist soweit sehr gut. Wenn die Heatmaster Software allerdings ganz ersetzt werden soll (was bei deiner Vorgehensweise ja der Fall wäre), würde ich allerdings für jede Temperatur und Lüfter-(Pumpen)drehzahl eine eigene Ausgabe machen und diese eventuell noch unter verschiedene Tabs einsortieren. (Ich weiß nicht, wie sich das bei VS 2010 gestaltet, mit QT Creator stellt es keinen Mehraufwand dar, alles über verschiedene Unterseite anstatt nur einer Seite zu verteilen.) Der Hauptscreen ist ein wenig Ausdruckslos, eventuell könntest du hier noch ein Menü machen: 
1.) Porteinstrellungen
2.) Anzeige
3.) Optionen (allgemeine Optionen wie Autostart mit Windows, usw.)

Alles in allem ist die Oberfläche aber schon ganz gut. Wenn du die genannten Kritikpunkte noch verbesserst, ist sie perfekt.  (beim Anzeige-Screen reicht aber auch eine Box für alle Infos, das dürfte die Programmierung ja auch ein bisschen vereinfachen.)


P.S. Wenn du möchtest, kannst du mir auch die Dateien für das UI schicken, dann kann ich selbst mal ein bisschen herumprobieren, damit du dich auf die wichtigeren Punkte (Portansterung) konzentieren kannst.


----------



## <BaSh> (7. Mai 2011)

Jo werde die Datei heute mal hochladen und mich dann auf das auslesen konzentrieren 


Edit: Hier der Link zum Project 
LINK


----------



## L.B. (7. Mai 2011)

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

Momentan funktioniert der Download nicht. Ich probiere es morgen nochmal, wenn ich wieder zu Hause bin. Notfalls musst du die Datei als zip im Anhang hinzufügen. 
Kann man das UI eigentlich auch mit der kostenlosen Version von VS 2010 bearbeiten?


----------



## <BaSh> (8. Mai 2011)

Gute Frage da ich nur die Professional Version habe kann ich dir das leider nicht sagen o_O
Ok hier hochladen kann ich es nicht. 
Maximal 8Mb hier erlaubt, es ist aber 13Mb groß.
Also in C++ ist es verdammt schwer die Ports einzubinden.
Habe es mal mit C# verglichen. In C# ist es ein Kinderspiel o_O


----------



## L.B. (8. Mai 2011)

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

Ok, der Download hat jetzt funktioniert und auch VS 2010 Professional befindet sich in der Installation. Mal gucken, ob ich es hinbekomme, das GUI zu bearbeiten.


----------



## <BaSh> (8. Mai 2011)

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

Das bearbeiten ist total einfach 
Aber die Verbindung herzustellen leider nicht o_O


----------



## L.B. (8. Mai 2011)

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

Ok, das kenne ich von QT Creator.  Die Installation dauert leider noch etwas, was schon mal vorkommen kann, wenn man 5GB Daten mit 200kB/s herunterladen darf.


----------



## L.B. (8. Mai 2011)

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

Ich habe die GUI mal nach meinen Vorstellungen angepasst. Was sagst du dazu, BaSh? Ich wusste nicht genau, was du mit deiner alten Hauptseite ("Testen", "Anzeigen") bezwecken wolltest, deshalb habe ich die beiden Buttons erst einmal ausßen vorgelassen. 





			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## <BaSh> (8. Mai 2011)

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

Sieht gut aus  Sollte auch nicht schwer sein das zu Verknüpfen  
Dann prügel ich mir nochmal die SerialPort funktion in den Kopf


----------



## L.B. (9. Mai 2011)

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

Ok, dann werde ich heute abend noch die letzten Feinheiten optimieren, dann können die Elemte mit ihren Funktionen belegt werden.  Die Programmierung ist an sich ja nicht schwieriger als bei deiner Variante, es sind halt nur alle Elemte im selben Fenster. 

Hat noch jemand leicht zu realisierende Möglichkeiten für weitere Optionen, die nicht fehlen dürfen?


----------



## <BaSh> (9. Mai 2011)

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

Es fehlt noch ein Button Um den Programm zusagen das es jetzt die Daten übertragen soll, oder machen wir das über den OK Button?


----------



## L.B. (9. Mai 2011)

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

Ok, ich würde aber sagen, dass wir eine Checkbox "Messwerte aufzeichnen" machen. Eigentlich brauchen wir auch noch etwas für das LCD, also eine Option, um die Ausgabe auf dem LCD zu (de)aktivieren.


----------



## <BaSh> (9. Mai 2011)

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

Ja dafür könnte man entweder eine Checkbox oder aber eine Combobox nehmen :O

Heute Abend werde ich versuchen euch ein kleines UPDATE zu zeigen.


----------



## Dr.Snuggles (21. Mai 2011)

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

Tolles Projekt... bleib am Ball. Vor allem da demnächst der Kauf einer Heatmaster ansteht. Mal ganz uneigennützig gesprochen.


----------



## L.B. (22. Mai 2011)

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

Es geht voran bzw. BaSh hat sehr gute Arbeit geleistet. 


 @BaSh: Im Anhang findest du die Config (ich habe schon exemplarisch Werte gesetzt). Mehr muss da ja eigentlich nicht gespeichert werden.


----------



## <BaSh> (22. Mai 2011)

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

Ok werde mich morgen mal daran setzen die Daten aus der Datei zu lesen beziehungsweise sie hinein zu schreiben. Und natürlich geht es noch um die Ports 
Edit: 
Fileschreiben funktioniert jedoch die Daten wieder in eine Variable hineinzuschreiben funktioniert noch nicht richtig.


----------



## BroBlem (30. Mai 2011)

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

Super Projekt,
sagt mal: wie lange braucht ihr noch?


----------



## <BaSh> (30. Mai 2011)

Hängt davon ab, wieviel Zeit ich am nächsten Wochenende habe und wie gut die Portabfrage läuft


----------



## <BaSh> (5. Juni 2011)

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

So bin gerade auf ein Problem gestoßen. Werde es einfach mal hier Posten:

```
private void port_read(string port)
        {
            char[] buffer;
            
            int offset = 1;
            int count = 1;
            //Sucht den Port mit den übergebenem Namen
            this.serialPort1.PortName = port;
            this.serialPort1.Open();

            while (this.serialPort1.IsOpen)
            {
                this.serialPort1.Read(buffer, offset, count);
            }
```
Und zwar bekomme ich die Variable char[] buffer nicht initialisert. 
Wäre super wenn jemand weiss wie es geht


----------



## zcei (5. Juni 2011)

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

Ich weiß grad nicht mehr in welcher Sprache du das ganze zauberst, aber es sieht mir ziemlich wie Objective-C oder Java oder sowas aus.
Und wenn ich mich da grade nicht ganz gewaltig täusche, dann muss man größen angeben, die das Feld haben soll, denn die dynamische Liste ist zumeist nicht implementiert.


----------



## bingo88 (5. Juni 2011)

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

Entweder aufm Stack:

```
char buffer[4096]; // 4kb char buffer auf dem Stack anlegen
```
oder im Heap:

```
char *buffer = new char[4096]; // 4kb Heap-Speicher anfordern
// ...
delete[] buffer; // nicht vergessen! Gibt den Speicher wieder frei
```


----------



## <BaSh> (5. Juni 2011)

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

Ok danke für die Tips, werde mich da nachher nocheinmal ranwagen, jetzt ersteinmla eine Runde nach draußen in die pralle Sonne 
Und es ist in Visual C++ geschrieben.


----------



## bingo88 (5. Juni 2011)

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



<BaSh> schrieb:


> Ok danke für die Tips, werde mich da nachher nocheinmal ranwagen, jetzt ersteinmla eine Runde nach draußen in die pralle Sonne
> Und es ist in Visual C++ geschrieben.


Das ist doch mal ne gute Idee! 
(Mein Hinweis bezieht sich auf C++)


----------



## <BaSh> (29. Juni 2011)

So der Heatmaster ist endlich angekommen 
Am Wochenende kann das testen losgehen o_O


----------



## L.B. (29. Juni 2011)

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

Sehr gut.  Dann wollen wir mal hoffen, dass die Portabfrage auch unter realen Bedingungen läuft. 

Wie weit sind die Programmierarbeiten momentan fortgeschritten? Könntest du mal die Funktionen, die schon vorhanden sind, im Groben auflisten? Was genau brauchen wir noch? 

P.S. Das Programm zum Erstellen der Setup-Dateien habe ich leider nicht mehr gefunden. Aber du sagtest ja ohnehin, dass es nicht so viel Aufwand sei.


----------



## <BaSh> (29. Juni 2011)

Also die Setup Datei steht, kann ich dir denke ich am Wochenende mal zuschicken.
Den Rest der Funktionen die 

*Sicher funktionieren:*
-minimiertes starten des Programmes
-Vorblendung zur Auswahl der Ports
-Portauswahl des Heatmasters
-Config.txt schreiben
-Auslesen der Checkboxen
-Auswahl ob LCD-Hype oder Smartie LCD
-Info welcher LCD mit welchem Programm benutzt werden kann
-Daten aus der Config.txt auszulesen

*Vielleicht funktionieren:*
-auslesen der Daten vom Alphacool Heatmaster
-Benutzung von Bars um die Temperatur anzuzeigen

*Noch nicht funktionieren:*
-Ausgabe der Werte auf dem LCD
-Verarbeitung der ausgelesenen Daten der Config.txt

Vorschläge werden natürlich gerne aufgenommen


----------



## L.B. (29. Juni 2011)

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

Na, das sieht doch schon mal äußerst vielversprechend aus.  Du kannst mir die nächste Build ja mal schicken, dann werde ich mal Alphatester spielen. 
Wie genau hast du das mit dem LCD jetzt geregelt? Denn dafür bräuchten wir ja eigentlich ein Plugin für ein Programm wie LCD Smartie oder LCD Hype bzw. eine C++ Library für HD44708 kompatible LCDs.


----------



## <BaSh> (29. Juni 2011)

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

Daran muss ich noch arbeiten, aber ich glaube, dass das auch noch ohne Probleme mit rein kann. Ansonsten wird LCD Hype mit in das Setup eingebunden


----------



## L.B. (29. Juni 2011)

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

Man kann ja auch nur den "Kernel" von LCD Hype nehmen.  Aber besser wären verschiedene Plugins für die gängigsten LCD Programme, als da wären LCD Hype und LCD Smartie. Die Plugins liegen dabei als *.dll im Plugin-Verzeichnis vor und enthalten sämtliche Funktionen des Plugins. Wie genau man das schreibt, sollte in der Dokumentation der einzelnen Programme stehen.

P.S. Ich persönlich ziehe für mein Charakter-LCD LCD-Smartie vor, da es einfacher zu konfigurieren ist und weniger Ressourcen verbraucht. Für graphische LCDs ist es allerdings nicht geeignet.


----------



## <BaSh> (29. Juni 2011)

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

Hört sich gut an, werde ich mir,wenn das Auslesen der Daten klappt, mal genauer anschauen.


----------



## L.B. (30. Juni 2011)

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

Die Ausgabe auf dem LCD ist genau so wichtig wie die restlichen Funktionen, denn was bringt uns ein Heatmaster LCD Programm, wenn wir kein LCD ansteuern können.  
Ich werde mich da auch noch mal genauer informieren und dir die Infos zukommen lassen.


P.S. Den Namen des Programms sollten wir ebenfalls noch einmal überdenken, denn ControlCenter passt nicht so wirklich zum angepeilten Ziel der Software. Das ist zwar nur nebensächlich, aber dennoch für den User nicht ganz unwichtig, denn der soll schließlich auf Anhieb erkennen, worum es geht. Ich schlage deshalb so etwas wie "Heatmaster LCD Support" oder Ähnliches vor.


----------



## <BaSh> (30. Juni 2011)

Die Ausgabe auf dem LCD sollte, wenn Bibliotheken benutzt werden können, in denen die Funktionen zur Übergabe vorhanden sind kein großes Problem sein.

Ja den Namen zu ändern wäre für mich nicht schwer


----------



## L.B. (30. Juni 2011)

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

Das Problem bei einem eigenständigen LCD Programm ist, dass der User keine Möglichkeit hat, andere Infos außer den Messwerten des Heatmasters anzuzeigen. Meistens möchte man ja noch ein paar Winamp-Infos ausgeben oder die Uhrzeit, etc. Deshalb würde ich primär auf Plugins für externe Software setzen.


----------



## <BaSh> (3. Juli 2011)

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

Muss leider sagen das ich den Heatmaster noch nicht installiert habe. Das neuverschlauchen und vorallem das anbringen eines weiteren Radiators hat (nach einer kleinen Sauftour) zuviel Zeit in anspruch genommen. Daher wird jetzt in der Woche der Heatmaster installiert und das Abfragen der Daten getestet.


----------



## L.B. (3. Juli 2011)

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



			
				;3164520 schrieb:
			
		

> [...](nach einer kleinen Sauftour)[...]


Erinnert mich irgendwie an den Film, den ich gerade gesehen habe: Hangover 2 

Lass dir Zeit beim Aufbau der Wasserkühlung, nicht dass noch etwas geflutet wird.  Ich habe die aktuelle Version bekommen und werde morgen mal testen.


----------



## <BaSh> (3. Juli 2011)

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

Hört sich gut an, auch wenn ich mir nicht sicher bin,ob es schon funktioniert.


----------



## L.B. (3. Juli 2011)

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

Ich werde es auf meinem alten Rechner testen, für den ich noch einiges an Ersatz-Hardware da habe. Da kann ruhig mal was in die Hose gehen.  

Die letzte Version ist bei mir auf jeden Fall schon mal nicht abgestürtzt, von daher bin ich optimistisch.


----------



## <BaSh> (3. Juli 2011)

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

Abstürtzen tut sie momentan nur wenn sie keine Daten bekommt nachdem der Port ausgewählt ist


----------



## Fragile Heart (4. Juli 2011)

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

Gibt es eine Meldung mit der sich abstrüzt? Was steht im Windows Log?


----------



## <BaSh> (4. Juli 2011)

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

Das Abstürzen liegt daran, das ich noch kein BackgroundWorker eingearbeitet hat und die "Form" dann freezt.
Außerdem sollten wir eventuell noch eine Funktion zur Auswahl der auszugebenen Werte einfügen, das sollte aber kein Problem sein


----------



## Fragile Heart (4. Juli 2011)

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

Also irgendwann müssen wir mal an der Bezeichnungsstrategie arbeiten!


----------



## <BaSh> (4. Juli 2011)

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

Achwas du verstehst doch was ich meine aber btt.
Heute wird der Heatmaster angebaut (armer 5,25" Schacht) und dann mal getestet was für Werte herauskommen wenn auf ihn zugegriffen wird


----------



## L.B. (4. Juli 2011)

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

Ich bin gerade dabei das Programm zu testen, NET Framework muss allerdings erst noch installiert werden. 
Wird später nur die Installer.exe benötigt, aus der alle benötigten Dateien extrahiert werden?


----------



## <BaSh> (4. Juli 2011)

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

Leider nicht. Das extrahieren funktioniert leider nicht. Es werden die Dateien in das vom User gewünschte Verzeichnis kopiert. Dabei müssen die Daten bei der Installation aber im selben Verzeichnis sein wie der Installer(nach Änderung auch in einem Unterordner).


----------



## L.B. (4. Juli 2011)

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

Ok, allerdings arbeitet der Installer bei mir nicht, bzw. kopiert die Dateien nicht in das gewünschte Verzeichnis. (x86 XP) Sicher, dass wir nicht doch auf den Setup-Generator zurückgreifen sollen? Dann würden die Dateien auch aus der Setup.exe extrahiert werden. 

Das Hauptprogramm macht einen sehr guten Eindruck. Ich bin überrascht, wie umfangreich du es gestaltet hast. Saubere Arbeit.  Hier und da sind noch einige Kleinigkeiten zu verbessern, aber es geht natürlich erst einmal um die Hauptfunktionen des Programms. 
Wie sieht es mit der Insatllation des Heatmasters aus?


Edit: Ich habe den Installer gefunden, er hieß AKInstaller und ist extrem umfangreich. 
Im Anhang ein Beispielsetup, das ich mal eben auf die Schnelle zusammengestrickt habe.
Mir persönlich gefällt das Programm auch deshalb so gut, weil in der Systemsteuerung unter "Programme und Funktionen" ein Eintrag erstellt wird und darüber auch die Deinstallation erfolgen kann.


----------



## <BaSh> (4. Juli 2011)

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

Bin gerade noch auf der Arbeit, wenn ich zuhause bin werde ich den Heatmaster an meinen 5,25" Schacht kleben und alle Kabel (sind ja nur 4 Lüfter und Pumpe + Tempsensoren installieren. Den AKInstaller schaue ich mir dann gerne mal an. 
Statusbericht gibt es dann schätzungsweise heute Abend


----------



## <BaSh> (4. Juli 2011)

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

*Update*:
Also habe heute den Heatmaster rangeschraubt, das Programm liest auch Daten aus( werden auf Messagebox ausgegeben) jedoch kann ich diese noch nicht zuordnen.
Würde außerdem noch gerne eine Funktion erstellen,in der man die Möglichkeit hat, die auszugebenen Werte auszuwählen,also Fan1,Fan2,Temp2 etc und diese auch zu benennen.
Ist zwar noch ein bisschen mehr Arbeit aber so weiß jeder welche Daten momentan ausgegeben werden.


----------



## L.B. (4. Juli 2011)

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

Das sind gute News.  Eine Zuordnung bzw. Beschreibung wäre tatsächlich sinnvoll, so wird das "Handling" der ausgelesenen Daten vereinfacht. 

Nochmal zum Installer. Mir ist aufgefallen, dass es sich um eine kostenlose Testversion handelt, die registriert werden muss. Zwar gibt es auch eine Seite, die bereits registrierte Versionen zum Download anbietet, ich kann mir aber nicht vorstellen, dass das legal ist und sonderlich seriös sieht das Ganze auch nicht aus.  Was meinst du?


----------



## <BaSh> (4. Juli 2011)

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

Wenn ich wüsste, wie ich das mit dem extrahieren hinbekomme würde ich es selber schreiben  aber leider keine ahnung wie das geht,muss ich mich mal schlau machen


----------



## L.B. (4. Juli 2011)

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

Dein Programm sah schon nicht schlecht aus (würde mich als User auf jeden Fall schon mal ansprechen ) und dass außer dem eigentlichen Setup noch ein Ordner mit den Daten vorhanden ist, ist jetzt auch nicht so dramatisch, nur hat das Setup bei mir wie gesagt nicht funktioniert. Eventuell liegt es auch am System (XP =^ *X*tra *P*roblems).


----------



## <BaSh> (4. Juli 2011)

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

Was genau funktionierte nicht?
Das Programm öffnen oder das kopieren?


----------



## L.B. (4. Juli 2011)

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

Nur das Kopieren. Das Programm selbst lief ohne Absturtz.


----------



## <BaSh> (4. Juli 2011)

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

Gut, ich schick dir denke ich bald eine neue Version die sollte noch um einiges detailierter sein(mit auswahl der anzuzeigenden Temps etc )


----------



## L.B. (4. Juli 2011)

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

Sehr gut, danke. 
Während du dich mit den wichtigen Dingen befasst, habe ich schon mal den Kleinkram gemacht, also erst einmal ein dem Namen angepasstes Programmsymbol. 
Zwei Varianten stehen zur Auswahl. 

#########Variante 1##########



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



#########Variante 2##########



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Die Zweite kann man meiner Meinung nach besser lesen, denn das Symbol wird ja meist recht klein dargestsellt. Du kannst dir ja eins aussuchen und im nächsten Release einbinden.


----------



## <BaSh> (5. Juli 2011)

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

Also die zweite Variante gefällt mir um einiges besser.
Habe gestern noch bis 12 Uhr ein wenig an der Auswahl der auszugebenen Daten gepfeilt.
Dabei fiel mir ein, wieviele Daten können wir maximal wiedergeben? 2 Zeilen mit jeweils xyz Zeichen? Wenn ja müssten ich mir noch etwas überlegen, das die ausgegebenen Daten wechselt(oder kann das Smartie LCD, Hyper LCD?).


----------



## Monsterclock (5. Juli 2011)

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

Falls du LCD Hype meinst, das kann wenn es die Daten einglesen kann, die auch immer selbständig wechseln. Mit Smartie LCD kenn ich mich leider net aus.


----------



## <BaSh> (5. Juli 2011)

Kann man die Funktion fürs Plugin benutzen?
Muss mich, wenn die Daten sicher ausgelesen werden eh einmal mit den 2 Programmen, und den Pluginmöglichkeiten beschäftigen.


----------



## L.B. (5. Juli 2011)

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

Du kannst in LCD Smartie (aber auch in LCD Hype) die Screens selbst konfigurieren. D.h. du gibts erst einmal die Größe deines LCDs an und kannst dann über ein Textfeld, den geünschten Text ausgeben. Natürlich kann man hier auch Funktionen einfügen und hier kommt die Plugin Funktion ins Spiel. Ziel ist es, dass man folgenden Befehl eingibt $dll(HLS,1,1,1). Hierbei steht $dll()für die Plugin-Funktion, "HLS" für das Plugin, in diesem Fall unser Prog, die erste Zahl steht für die Art der Infomation (1=>Temperatur; 2=>Lüfter/Pumpendrehzahl; 3=>evtl. Durchfluss), die zweite für die Nummer des Sensors (1-5=>Temp1-5; 6-10=>Fan1-5; 11=>DFM) und die dritte Zahl steht für die angezeigten Dezimalstellen (0=> keine Nachkommastelle; 1=>eine Dezimale, usw. bis maximal 3 oder 4 Stellen). 
Mit LCD Hype kenne ich mich leider nicht so gut aus, da ich noch nicht wirklich genutzt habe. Hier ist übrigens die Homepage von LCD Smartie, wo du auch Infos über die Plugins erhälst. Eventuell finden wir auch jemanden, der schon Plugins für LCD Smartie geschrieben hat und diesen Part übernehmen könnte.

P.S. Dann nehmen wir das zweite Symbol. Du kannst es ja direkt einbauen.


----------



## Monsterclock (8. Juli 2011)

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

Ich könnte versuchen das LCDHype plugin zu schreiben. (Ob ichs hinbekomm weiß ich net  ) was hat euer Programm denn für eine schnitstelle, um die daten zu übertagen?


----------



## L.B. (8. Juli 2011)

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

Natürlich darfst du versuchen, ein Plugin zu schreiben. Je mehr Leute sich beteiligen, umso schneller wird das Programm fertig. Wie die Daten intern zwischengespeichert werden, weiß ich nicht. Ich vermute mal, dass Bash hier einfach globale Variablen gesetzt hat, in denen die entsprechenden Messwerte stehen. Bash kann dir hier sicher eine ausführlichere Hilfestellung geben, da er das Programm geschrieben hat.  Du kannst aber davon ausgehen, dass du wahrscheinlich auf den Speicherbereich des Programms zugreifen musst, um die Variablen auszulesen. Dazu gab es weiter vorne im Thread ja auch schon eine Diskussion. Einfacher wäre es natürlich, wenn eine temporäre Textdatei geschrieben wird, in der in Echtzeit der aktuelle Messwert geschrieben wird und anschließend vom Plugin wieder eingelesen wird.


----------



## Monsterclock (8. Juli 2011)

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

Wenn man eine textdatei, schreibt, braucht man gar kein plugin mehr - LCDhype kann die Daten dann direkt einlesen.
Solange die Datei immer nur die Werte enthält und nicht dazuschreibt, bleibt das ganze auch schnll genug


----------



## L.B. (8. Juli 2011)

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

Na, das ist doch für den Anfang sehr gut.  Warte aber nochmal BaShs Meinung ab, er ist schleißlich für den Kernel verantwortlich. Meiner Meinung nach ist es sehr sinnvoll am Anfang ein funktionierendes Produkt zu haben, das nach und nach weiter verbessert und entwickelt wird. Unterstützungen für andere LCD Programme kann man später immer noch schreiben. 

@BaSh: Eine grundsätzliche Frage habe ich noch. Wird die Originalsoftware des Heatmasters durch das Auslesen des Ports in irgendeiner Weise beeinträchtigt oder kann sie parallel zur LCD-Ausgabe laufen?


----------



## L.B. (10. Juli 2011)

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

Gerade habe ich mir mal LCD Hype ein bisschen genauer angeguckt. Das Einlesen einer Textdatei ist tatsächlich absolut idiotensicher. Das einzige Problem besteht darin, dass die Aktualisierung des Inhalts recht langsam erfolgt. Wird der Wert in der Textdatei geändert, dauert es ca. eine Sekunde, bis die Änderung auf dem LCD übernommen wird. Zur einfachen Anzeige reicht es aber auf jeden Fall erst einmal aus. 

@BaSh: Damit das funktioniert, muss das Program für jeden Messwert (egal ob Temp oder Fan) eine eigene Textdatei anlegen, in die per Filestream der aktuelle Messwert eingetragen wird. Im LCD Hype Skript wird dann einfach der Wert mit dem Befehl %System.ReadFile('C:\*.txt')
aufgerufen und angezeigt. Das sollte recht leicht zu bewältigen sein. Ein vernünftiges Plugin wäre natürlich die bessere Lösug, nur leider gibt es so gut wie keine Dokumentation über das Erstellen solcher Plugins.


----------



## <BaSh> (10. Juli 2011)

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

Mh ok, nach einem langen Wochenende endlich mal wieder hier was zum schreiben.
Also
1. Ich bekomme Werte ausgelesen, muss diese aber noch dem jeweiligem fan1 etc zuweisen.
2. Eine Textdatei für jede Ausgabe zu schreiben ist kein Problem.
3. Ob es Einfluss auf die Software hat muss ich noch testen.


----------



## Monsterclock (10. Juli 2011)

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

Es geht auch wenn alle Daten in einer Datei sind, da man dem Befehl System.ReadFile mehrere Parameter hinzufügen kann.


----------



## L.B. (11. Juli 2011)

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

Das ist ja noch besser. 

Ich habe mich noch etwas mit LCD Hype auseinandergesetzt und diese Erweiterung (s.Anhang) gefunden. Damit kann man dieses LCD auch mit LCD Hype ansteuern - theoretisch zumindest, ich werde es ausprobieren, wenn ich wieder zu Hause bin. Das LCD habe ich vor einiger Zeit einmal gebaut, allerdings nicht in Betrieb genommen, weil es nur mit einem relativ einfachem Programm gesteuert werden konnte. Der einzige Nachteil beim Aufbau ist, dass man den Mikrocontroller flashen muss, was entweder über den LPT geht oder mit diesemUSB Adapter über USB (Problem - auch hier muss ein µC geflasht werden ). Wenn es bei mir funktioniert, würde ich euch zur Entwicklung aber den Controller flashen, sofern ihr noch kein anderes LCD habt. 

Lukas


----------



## <BaSh> (11. Juli 2011)

Hört sich super an. Bin heute wider ein bisschen weiter gekommen fan1 und 2 sind zugeordnet


----------



## L.B. (12. Juli 2011)

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

Das ist gut.  Wie lange wirst du noch brauchen, um das Programm in die erste Beta-Phase zu bringen? 
Ich könnte dir (wenn du mir die Bauteile bezahlst) auch den Adapter für das LCD bauen. Neuerdings besitze ich ja das Equipment zum Platinenätzen.  Günstige LCDs bekommt man übrigens bei Pollin für ca. 7-15€.


----------



## <BaSh> (12. Juli 2011)

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

Mh die LCD Ausgabe überlasse ich erstmal dir. Mein LCD soll später ins Seitenteil meines HAF-X eingebaut werden 
Denke das ich in ca 2 Wochen fertig bin 
Aber danach geht es dann ja an Verbesserungen und Fehlersuche


----------



## L.B. (12. Juli 2011)

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

Ok, ich habe schon mit dem Board Layout begonnen. Die Ausgabe auf dem LCD ist wie Monsterclock schon sagte nicht sonderlich kompliziert, weil man einfach die Textdatei einlesen muss, was LCD Hype automatisch macht.


----------



## <BaSh> (12. Juli 2011)

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

Gut, dann fehlt eigentlich nur noch der Algorithmus, der alle x Sekunden die Textdatei mit den neuen Daten erneuert.
Und das heißt arbeiten mit Timern , mit denen ich mich leider noch nicht gut auskenne. Aber das kann ja nicht so schwer sein


----------



## L.B. (12. Juli 2011)

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

Das bekommst du schon hin. Pass nur auf, dass sich das Programm nicht zu oft aktualisiert und du dann unfreiwillig einen CPU Benchmark programmiert (HLS CPU Elektronendonator ).  

Die Platine ist fertig, allerdings noch nicht auf Fehler geprüft. Hier ein klienes Preview. Das LCD wird später mit einem entsprechenden Kabel am 15 poligen Sub-D Anschluss angeschlossen und die Platine über USB an den Rechner angebunden, worüber auch die Stromversorgung stattfindet. 





			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        






			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




Edit: Die Platine ist fertig layoutet und fehlerbereinigt. Die Bauteilkosten belaufen sich bei Conrad Elektronik inklusive Versandkosten auf ~17€. Dazu ein günstiges LCD von Pollin macht insgesamt ca. 25€, also weniger als die Hälfte eines fertigen LCDs mit Adapter.


----------



## L.B. (15. Juli 2011)

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

Gute News für LCD Smartie Fans (wie mich ). Auch LCD Smartie bietet die optin eine belibige Textdatei einzulesen und bietet darüber hinaus noch die Möglichkeit direkt im Skript die Zeile anzuwählen, sodass nur eine Textdatei für alle Dtaen erforderlich wäre. Die Aktualisierung erfolgt hierbei ohne merkliche Verzögerung. 

Beispiel: 

*Textdatei mit folgendem Inhalt:*

```
23,5°C
35,2°C
34,8°C
50,0°C
```
*
LCD Smarite Skript: *

```
H2O: $File(C:\file.txt,1)
RAM: $File(C:\file.txt,2)
INT: $File(C:\file.txt,3)
GPU: $File(C:\file.txt,4)
```
*Ausgabe: *

H2O: 23,5°C
RAM: 35,2°C
INT: 34,8°C
GPU: 50,0°C



@BaSh: Das heißt für das Programm, dass keine komplexen Plugins geschrieben werdne müssen, sondern lediglich eine Textdatei (data.txt) erstellt werden muss, die ca. alle 100ms aktualisiert wird, indem die aktuellen Messwerte, sprich ausgelsenen Daten aus dem Port hineingeschrieben werden (und zwar jeder Messwert in seine vorher festglegte zeile, sonst gibt es ein tolles Datenchaos ). 
Ich werde inzwischen schon mal eine Datei verfassen, in der genau steht, welcher Sensor welche Nummer bzw. Zeile hat, sodass der User später weiß, was er im Skript einsetzen muss, um den gewünschten Messwert ausgeben zu lassen.


Edit: Die entsprechende Readme befindet im Anhang. Etwas Ähnliches muss ich noch für LCD Hype erstellen. Die Sensornummern und deren Reihenfolge gelten jetzt auch für die data.txt, in die die Messwerte geschrieben werden müssen. Wenn irgendetwas unverständlich ist, bitte jetzt kritisieren. 


________________________
Anhangemulator 1.0 (*.rar kann ich leider nicht hochladen )

*Dateiname:* HLS_LCD Smartie Plugin.txt


```
Diese Tabelle enthält die Sensornummern, die für die 
Verwendung des internen Befehls (s.unten) für LCD Smartie nötig sind.

Befehl für LCD Smartie:
$File([#dir#]\data.txt,xx)

Das [#dir#] stellt das Installtionsverzeichnis von HLS dar und 
muss entsprechen angepasst werden.

Das xx wird durch eine der unten stehenden Sensornummern 
ersetzt, sodass der zugehörige Sensorwert auf dem LCD angezeigt 
wird.

Sensortyp | Nr |
----------------
Sensor T1 |  1 |
Sensor T2 |  2 |
Sensor T3 |  3 |
Sensor T4 |  4 |
Sensor T5 |  5 |
----------------
Fan1/Pump |  6 |
Fan2      |  7 |
Fan3      |  8 |
Fan4      |  9 | 
----------------
Flowsensor| 10 |
Relay     | 11 |
----------------
```


----------



## <BaSh> (15. Juli 2011)

Das ist super. Am Wochenende und nächste Woche(Urlaub wuhu) werde ich mich darum kümmern


----------



## L.B. (15. Juli 2011)

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

Sehr gut.  Dann wird das Projekt ja bald zum Abschluss gebracht werden und wir können ein Beta-Release machen.

@Monsterclock:


> Es geht auch wenn alle Daten in einer Datei sind, da man dem Befehl System.ReadFile mehrere Parameter hinzufügen kann.



Welche Parameter sind das genau und wie sieht die Syntax aus? Das brauche ich, um auch noch eine Readme für LCD Hype zu erstellen.


----------



## <BaSh> (15. Juli 2011)

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

Jo hoffe ich auch 
Werde mich dann nächste Woche damit beschäftigen und schauen welcher Wert durch welche Bits übergeben werden. 
Aber die beiden Wochenenden also vom 21-24 undvom 29-31 werde ich denke ich nichts schaffen, da 1. Festival und 2. Community-Treffen 
Das schreiben der Textdatei sollte kein Problem sein,
nur das untereinander schreiben habe ich noch nicht probiert.


----------



## L.B. (15. Juli 2011)

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

Zum Untereinanderschreiben übergibts du im Stream einfach ein "\n", dann sollte auch ein Zeilenumbruch gemacht werden (theoretisch zumindest ). 
Ich verzweifle gerade daran, die LCD Hype Hilfe zu finden, damit ich mir endlich diese Parameter für den Befehl angucken kann. 

Edit: Die Hilfe für LCD Hype habe ich jetzt gefunden und an sich ist der Befehl identisch mit dem für LCD Smartie, mit dem kleinen Unterschied, dass er nicht funktioniert.  Ich gebe 
	
	



```
%System.ReadFile('C:\file.txt',1)
   %System.ReadFile('C:\file.txt',2)
```
 an und trotzdem wird nur die letzte Zeile der file.txt zweimal wiederholt ausgegeben. In der Hilfe steht, dass der Zeilenumbruch durch Sonderzeichen #10 und #13 markiert werden muss.  (Geht es noch komplizierter?)

Edit: Jetzt funktioniert es.  Die zweite Readme für LCD Hype ist auch fertig und die für LCD Smartie wurde noch ein wenig überarebeitet. So kannst du die Dateien jetzt einfach in den Hilfe-Ordner oder was auch immer packen.


----------



## <BaSh> (15. Juli 2011)

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

Gut denke mla heute werd ich nicht weiterkommen,
eventuell geht morgen noch was 
Aber ansonsten nächste Woche (URLAUB!!!!)


----------



## L.B. (15. Juli 2011)

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

Kein Problem, lass dir Zeit. 

Was ist das für ein Community-Treffen?


----------



## <BaSh> (15. Juli 2011)

Keins von Pcghx sondern von meiner Spielecommunity


----------



## L.B. (15. Juli 2011)

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

Ach so, ok. Ich dachte schon, ich hätte was verpennt.


----------



## <BaSh> (3. August 2011)

Am Wochenende gibt es ein Update mit Programmschnippsel für euch. 

Zumindest wenn alles gut läuft.


----------



## L.B. (3. August 2011)

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

Sehr gut. Ich bin gespannt.  
Dann kan ich dir auch gleich ein ordentliches Feedback geben, denn die letzte Version, die ich habe, ist schon relativ alt.


----------



## <BaSh> (3. August 2011)

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

Hierschoneinmal das worauf man später klicken darf 



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## L.B. (4. August 2011)

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

Dürfte ich um eine Vorabversion bitten. Ich muss mir das Schmuckstück in Echtzeit angucken.  Funktioniert denn soweit alles oder gibt es noch irgendwo Praxisprobleme? 

Welcher Sensor verbirgt sich hinter 'MB' und da müsste noch irgendwo ein Wert übergeben werden, der dem Zustand des Relais entspricht. Zwar braucht man das Relais normalerweise nicht, aber trotzdem muss es ja eine Möglichkeit zur Anzeige geben.  

Dann noch eine Kleinigkeit, und zwar wäre ein Hilfe-Button (am besten im Config-Fenster, anstelle des About-Buttons) nicht schlecht, der die Anleitung zur Konfigurationd des Programms und der LCD Programme in einem separaten Fenster mit Textbox öffnet (Das dürfte ja kein Problem sein). Die Hilfe werde ich noch mal überarbeiten und ergänzen, ich gebe dir dann demnächst den Text, damit du ihn noch einbauen kannst.
In zukünftigen Versionen wäre vielleicht auch über eine Menü-Leiste nachzudenken, aber jetzt wird erst einmal noch kein Menü benötigt.


----------



## <BaSh> (4. August 2011)

Die Vorabversion sollte bis Sonntag bei dir sein


----------



## L.B. (4. August 2011)

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

Ok, danke dir.  Dann kann ich die oben beschriebenen Vorschläge ja selbst einbauen. Das sollte ich gerade noch so hinbekommen.


----------



## HUBA (16. August 2011)

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

Hallo Leute,

wie ist denn der Stand der Dinge? Vielleicht kann mir Jemand eine kleine Einführung in diesen Thread geben 

Wenn ich alles gelesen hätte (bin beim überfliegen zumindest auf com-Sniffer gestoßen) wüste ich auch ob ihr es schon wisst  



			
				ehmkay@hardwareluxx Forum schrieb:
			
		

> einfach mal COM Port zum heatmaster mit Terminalprg. (38400,8,N,1) für  Statuslog öffnen (">[0:32]" sind Lüfter, 0:48 Temps, 0:64 der Flow  und 0:80 das Relais)



funktioniert prima, liefert alle 2 Sek (ja nach Config vom Heatmaster Tool) folgende Werte:

```
>[0:32]1:0:0|2:0:38|3:0:255|4:0:255
>[0:48]1:360|2:264|3:265|4:261|5:292|6:-32768
>[0:64]1:0:1
>[0:80]1:0
```
Mir wäre eine direkte Kommunikation mit dem Display wichtig. Das ist ja gerade der große Vorteil des Heatmasters, dass er keine Ressourcen brauch  Falls in diese Richtung schon was gemacht wurde sagt bescheid. Ansonsten kann man auch prima ein Laptop dranhängen 

Lg HUBA


----------



## HUBA (16. August 2011)

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

aha, lesen hilft. BaSh hat die selbe Quelle gefunden 

Hat auch schon jemand die Kommunikation belauscht? Ich habe gestern leider keinen vernünftigen Com-Sniffer gefunden. Vielversprechend war der Free Serial Port Monitor aber wie ich nach langem probieren feststellen musste funktioniert er nicht mit XP x64 und Win7


----------



## <BaSh> (16. August 2011)

Das Auslesen funktioniert. Aber dafür benutzen wir ein eigenes Programm. Dieses steht im Grundgerüst schon. Das Auslesen einiger Daten funktioniert auch schon. Eventuell wird es auch möglich die angeschlossenen Lüfter anzusteuern.


----------



## L.B. (16. August 2011)

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

Unser Programm belegt natürlich auch Ressourcen, aber ich würde sagen, das ist in der heutigen Zeit nur noch von sehr geringer Bedeutung. 

Eine wirklich direkte Verbindung des Heatmasters zu einem Display ist nur realisierbar, wenn man das LCD direkt an den auf den HM verbauten Atmega8 anschließt. Soweit ich weiß, ist die Hardware sogar schon dafür vorgesehen. Allerdings wären dann Firmwareanpassungen nötig und eine Firmware kann man nicht so ohne Weiteres auf den Controller spielen, wenn man keinen Flasher hat. Darüber hinaus werden wir dann vermutlich auch rechtliche Probleme mit Alphacool bekommen.  

Wenn man bereits ein LCD in Benutzung hat, wird man in den meisten Fällen mit LCD Hype oder LCD Smartie gearbeitet haben (sind einfach die gängisten Programme) und kann dann einfach einen Screen für die HM Daten erstellen und muss trotzdem nicht auf die anderen Screens (Winamp, Aida64, etc.) verzichten. 

Theoretisch scheint es sogar möglich zu sein, die angeschlossenen Lüfter/Pumpe über den COM-Port zu regeln. Weshab in Zukunft ähnliche Funktionen wie bei der Standardsoftware (Regelkreise) implemetiert werden könnten. 

@BaSh: Du denkst dran, mir die aktuelle Version zu schicken, wenn du soweit bist, ja?


----------



## <BaSh> (16. August 2011)

Jo werde ich machen. Das Auslesen muss ich noch wieder einarbeiten. Aber ich weiss jetzt wie es geht 
Deinw Verbesserungsvorschläge sind zu 75% hinzugefügt


----------



## L.B. (16. August 2011)

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

Sehr gut.  hast du auch die Grafikwidgets hinbekommen? Ich kann es kaum erwarten, die erste Version unter die Lupe nehmen zu dürfen. *Weihnachtsgeschenkmodus an*


----------



## <BaSh> (16. August 2011)

Du meinst die Graphen?
Wenn ja, an denen arbeite ich noch, aber die Idee wie es ablaufen soll habe ich schon im Kopf


----------



## L.B. (16. August 2011)

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

Hört sich gut an. Die Software wird richtig gut. 
Soll ich auf der Webseite die aktuellen Programmierfortschritte bloggen?


----------



## HUBA (17. August 2011)

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

ja, von wegen Ressourcen, ich komm noch aus einer Zeit, in der die Crackerintros besser waren als das ganze Spiel 

Aber es gibt sie noch
2011 - Assembly Archive

Mir ist es auch gelungen ein altes System aus zu graben und den Com Sniffer zu installieren. Geht prima und lässt sich wirklich alles übers Terminal steuern. Auch die Sensorwerte lassen sich jede Sekunde übermitteln und zB. die Namen der Sensoren ändern bzw. ausgeben. 

Falls ihr ein Tool für x64 bzw. Win7 kennt mit dem die Ports "belauscht" werden können sagt es mir, ich hab nur ältere Programme gefunden


----------



## L.B. (17. August 2011)

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

Soweit ich weiß, hat BaSh diese Funktionen direkt in das Programm implementiert. D.h. eine weitere Software zum Auslesen des Ports ist gar nicht nötig. 
Falls du ein separates Programm suchst, kann ich leider nicht helfen. 

P.S. Wenn ich die Software teste, kann ich ja auch mal ein Auge auf die Ressourcen werfen.


----------



## <BaSh> (21. August 2011)

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

@LB die aktuelle Version sollte dich heute abend erreichen leider noch ohne Port-Abfrage da diese noch nicht richtig funktioniert. An den Graphen arbeite ich noch der sollte aber bald soweit sein 
Email geht nachher raus wenn mein Emailanbieter nicht mehr down ist.


----------



## L.B. (21. August 2011)

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

Ok, dann bin ich mal sehr auf das Programm gespannt. Ich sitze zwar gerade wegen Gewitter am Notebook (beim letzten mal hat es mir das NT zerhauen, jetzt ich bin bedient ), aber testen kann ich es ja trotzdem.


----------



## L.B. (24. August 2011)

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

@BaSh:

Ich dachte an so etwas, was die Updatefunktion betrifft. 



			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## <BaSh> (24. August 2011)

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

Jo, wäre ja eigentlich nur eine Abfrage auf IP die dann in einem Ordner eine Datei sucht. Wenn der Name nicht der selbe ist, wie im Programm, wird das Programm heruntergeladen


----------



## L.B. (24. August 2011)

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

Oder so, das wäre dann Version 2.0 mit automatischem Download.


----------



## <BaSh> (24. August 2011)

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

Jo, aber erstmal das auslesen vollenden und die Lüftersteuerung


----------



## L.B. (24. August 2011)

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

Ja, lass dir ruhig Zeit.  Wir sind ja nicht AMD und legen einen Termin fest, um ihn dann doch wieder zu verschieben. 

Ich habe mich eben nochmal mit einem Setup Programm, bzw. dessen Oberfläche beschäftigt. Hier die Screenshots. Ich kann dir die Dateien auch komplett geben, damit du nicht noch einmal alles neu machen musst. Das Bild wird noch ersetzt. 




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        





			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        





			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        





			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        




P.S. Fühl dich jetzt nicht unter Druck gesetzt, das kann auch alles noch in späteren Versionen editiert werden. 

Edit: Die Tippfehler sollte ich vorher vielleicht noch eliminieren.


----------



## L.B. (26. August 2011)

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

Ich bin gerade nochmal mit kritischem Blick über das Hauptfenster gegangen und habe mal einige Änderungen markiert, die ich vorgenommen habe. 




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Folgendes wurde geändert: 
Die Hilfe wurde in die Menüleiste verschoben, dadurch wird das Fenster im rechten Bereich kompakter. Ein paar Elemente wurden verschoben, die Pfeile markieren die Richtung. Der Config-Button auf der linken Seite wurde entfernt, der ok-Button im Config-Bereich ebenfalls. Außerdem habe ich eine Fußzeile eingefügt, in der zum Beispiel angezeigt wird, ob das LCD gerade aktiv ist (Spielerei, aber egal , entsprechende bunte "Ampellichter" sind schon erstellt). Außerdem wird ein Tray Icon erzeugt, dafür gibt es extra ein Element (NotifyIcon).

Du kannst ja mal gucken, was du davon umsetzen kannst und möchtest.  Morgen abend TSen wir mal über den weiteren Verlauf, ok?


----------



## <BaSh> (26. August 2011)

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

Wir gehen das morgen nocheinmal alles durch


----------



## L.B. (26. August 2011)

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

Ok, bis dann.  Aber ich werde wahrscheinlich nicht so früh zu Hause sein, da ich in Hannover auf der Expo bin.


----------



## <BaSh> (26. August 2011)

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

Wird schon


----------



## L.B. (26. August 2011)

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

Ein paar Ideen habe ich noch im GUI eingebaut, ich knall dir einfach mal den Screenshot hin. 




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        



Details und was machbar ist und was nicht, klären wir dann. 

Edit: Wenn man so auf Seite 1 guckt, kann man schon sagen, dass sich das Programm deutlich weiterentwickelt hat.


----------



## HUBA (27. August 2011)

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

Das sieht doch sehr gut aus, bin schon gespannt aus das fertige Programm 
Eine Kleinlichkeit ist mir noch aufgefallen; und zwar fehlt der interne Temperatursensor dafür könnte vermutlich der/das MB (Mainboard Alarm?) raus.


edit: Alphacool hat den Heatmaster wieder im Programm. War wohl nur kurzzeitig nicht lieferbar.


----------



## L.B. (27. August 2011)

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

Du scheinst Recht zu haben, der Heatmaster ist gar nicht mehr verfügbar.  Also schnell noch einen kaufen. 
Den MB-Sensor finde ich bei mir in der Originalsoftware gar nicht. Der kann wirklich aus der Liste entfernt und stattdessen der interne Sensor hinzugefügt werden.

eine kleine Todo-Liste für das Projekt:

- Änderungen und zusätzliche Funktionen im Programm (GUI) vornehmen bzw. hinzufügen (s. mein letzter Beitrag)
- Graphen zur Anzeige des Verlaufs fertigstellen
- Installationsprogramm
- Artikel zum Programm auf der Main veröffentlichen und erstes Programmrelease zum Download anbieten (Dank an PCGH_Stephan)

---------nächste Version---------------------------
- Auto-Update
- LCD Smartie/ LCD Hype ins Setup-Programm einbauen, sodass die Programme bei Bedarf automatisch installiert werden können und nicht erst heruntergeladen werden müssen 
(- Plugin für LCD Programme)


----------



## L.B. (3. September 2011)

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

Ich habe mal etwas Nettes mit Photoshop gebastelt, was wir eventuell für die Software (als Spielerei) verwenden könnten, nämlich einen Tacho bzw. eine Tankuhr. Vielleicht kann man die Teile irgendwie zur Anzeige von Messwerten nutzen. 




			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.
        






			Dieser Inhalt steht nur eingeloggten Mitgliedern zur Verfügung.


----------



## HUBA (20. September 2011)

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

und Jungs, wie sieht's aus? Gibt es schon was zum ausprobieren 

Inzwischen hat Alphacool auch den Heatmater 2 raus gebracht, aber erst mal schauen was da noch kommt, es soll anscheinen ganz viel Zusatzkram geben, aber bis jetzt gibts nur die Grundplatine.


----------



## <BaSh> (20. September 2011)

Hallo, ich habe momentan das Problem das ich sehr viel auf der Arbeit bin und somit maximal am Wochenende zum Programmieren komme. Allerdings läuft schon das auslesen einiger Daten. Auch eine Lüftersteuerung ist bald fertig (zumindest der Algorithmus).
Ich frage mich ob die Displayconfig des HM2 auch für LCDs gilt


----------



## L.B. (20. September 2011)

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

Soweit ich das anhand des Produktbilds abschätzen kann, bietet auch die zweiter Version des Heatmasters keine Möglichkeit zum Anschluss eines Displays, was ich nicht verstehen kann, aber umso besser für unsere Software.  BTW: Der HM II sieht mir noch ziemlich nach Prototyp und auf extreme Sparmaßnahmen getrimmt aus, nicht mal eine vernünftige USB Buchse ist verbaut.  Auch die Dimensionen sind im Gegensatz zur ersten Version sehr groß geraten. Der Funktionsumfang liest sich natürlich nicht schlecht. Es hört sich aber so an, als seinen zahlreiche Zusatzmodule in Planung, die noch nicht veröffentlicht sind.

Edit: Ich glaube, ich weiß, wie das Gesamtprodukt später aussehen soll. Die Platine deckt zwei 5 1/4" Schächte ab, auf der Oberseite kann ein LCD montiert werden, vll. sogar ein graphisches. Deshalb sind die Anschlüsse auch nach unten abgewinkelt und die Platine ist so groß. Der Wannenstecker oben könnte der Anschluss sein.


----------



## rille (12. Oktober 2011)

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

Ohne jetzt alles durchgelesen zu haben, nur ein paar kurze Fragen:

Der Treiber installiert ja lt. Anleitung einfach eine virtuelle serielle Schnittstelle. Wie sieht das Kommunikationsprotokoll aus? Habt ihr das selber rausgefunden bzw. gibt es da eine Zusammenfassung/Beschreibung?


----------



## L.B. (12. Oktober 2011)

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

Der Heatmaster sendet über den virtuellen COM-Port Daten an den PC, die von unserer Software ausgelesen werden. Wie genau BaSh die einzelnen Befehle ermittelt hat, weiß ich nicht, da musst du ihn fragen.


----------



## HUBA (13. Oktober 2011)

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

Das Auslesen geht recht einfach, wie unten beschrieben einfach mit einem Terminalprogramm. Der HM sendet auch fleißig Daten. Die Steuerung bzw. Übermittlung von Daten geht auch aber man müsste wissen welche Kommandos es gibt. Leider konnte ich nur wenig testen, da ich leider keinen COM-Sniffer für XP gefunden habe, aber soviel weiß ich:

die Kommandos sind in der form [adr]aktion:value CR (ascii 13 in bsp. als Punkt) z.B.

[0:0]CR:1. - Neustart
[0:0]WL:10. - Export alle 10s

[0:17]WE:1. - Loop 1 aktivieren
[0:18]WC:"L2". - benenne loop2 = L2

[0:33]WA:1. - Alarm Fan1 aktivieren
[0:34]WP:128. - Fan2 50% manuelle Steuerung

[0:50]WS:500. - soll Temp T1 50c
[0:54]WS:300. - soll Temp T5 30c
[0:54]WX:500. - max/warn Temp T1 50c
[0:51]WX:333. - max/warn Temp T2 33,3c

Statt W(schreiben) geht auch R(lesen) also zB.

[0:65]RO. - [0:65]RO:"Flow"
[0:65]RC. - [0:65]RC:"Flowsensor"

Alle Angaben ohne Gewähr  für mehr Infos einfach einen sniffer benutzen und an den Einstellungen rumspielen 




> einfach mal COM Port zum heatmaster mit Terminalprg. (38400,8,N,1) für  Statuslog öffnen (">[0:32]" sind Lüfter, 0:48 Temps, 0:64 der Flow  und 0:80 das Relais)


----------



## L.B. (13. Oktober 2011)

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

Das Auslesen des Ports wird allerdings nativ vom Programm unterstützt, sodass man nicht zusätzlich noch eine Software installieren muss.


----------



## Fockich (18. Juni 2012)

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

was ist aus dem projekt geworden ???

top oder flop...


----------



## L.B. (18. Juni 2012)

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

Ich muss gestehen, dass ich mich schon seit langem nicht mehr mit dem Projekt beschäftigt habe und ich denke, dass es <Bash> genauso geht (@Bash: Steinige mich, wenn dem nicht so ist...). Problematisch war, dass ich aufgrund nicht vorhandener C++ Kenntnisse keine Hilfe für technische Probleme war. Außerdem ist ja auch schon seit längerem der HM 2 raus und fürr den gibt es ja ein Display.

Wenn irgendjemand das Projekt zu Ende führen möchte, darf er das natürlich gerne machen.


----------



## Fockich (19. Juni 2012)

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

wie weit wart ihr denn???

reicht es um mir die daten von der heatmaster software ganz simpel anzeigen zu lassen?


----------



## L.B. (19. Juni 2012)

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

Ich gaube, das Auslesen hat schon funktioniert, aber da müsstest du mal BaSh fragen, denn ich habe bei mir nicht die aktuelle Version der Software.

@BaSh: Könntest du vielleicht die neueste Version der Software nochmal posten? Vielleicht wird es mit der Software ja doch noch was, man hat sich in der Zwischenzeit schließlich auch weitergebildet.


----------

