@cyril15
wo genau das Problem bei Dir liegt, kann ich Dir jetzt leider auch nicht sagen. Ich hab jedenfalls nur den jeweiligen Ordner kopiert, die Verknüpfung (beim Systray-Client) auf dieses Verzeichnis angepasst und in der Client.cfg die ID geändert. Damit ging es dann.
@7even
ja, das ist die Ansicht beim Programmieren, das sogenannte Blockdiagramm.
In der Regel programmiert man von links nach rechts und von oben nach unten.
Ich hab auch schon textbasiert (z.B. Turbo Pascal, QBasic oder Matlab) programmiert. Imho alles das gleiche
Sagst ja selbst, die Logik ists. Der Rest ist imho nur Vokabular.
Das Programm arbeitet hauptsächlich mit der FAHlog.txt
In LabVIEW gibts eine Funktion, die einen String in ein Array (1D) schreibt (jede Zeile ist ein Element)
Dieses Array kehre ich dann um (erstes Element wird zum letzten), muss aber nicht sein, wenn man die Länge des Arrays berücksichtigt.
Im nun ersten Element schaue ich nach, ob "Folding@Home Client Shutdown." drin steht.
Falls ja, dann läuft der Client nicht
Falls nein, dann läuft er wahrscheinlich (er könnte ja noch unsanft beendet worden sein)
Dann schaut das Programm noch nach dem Wort "Completed". Hat das Programm dieses Wort das erste Mal gefunden (ich bewege mich ja vom unteren Ende des Arrays nach oben), dann habe ich auch schon den Wert des Fortschritts.
Wenn der Client läuft und bei den letzten 2-3 Zeilen kein Completed zu finden ist, dann schaut das Programm nach dem Wort "Attempt #" Die Zahl die dahinter steht, gibt an, wie oft der Client bereits versucht hat, eine WU zu bekommen. Ist dieser Wert größer als 7 (kann man aber einstellen), dann erfolgt eine Überprüfung wieviele Clients laufen und wieviele keine WU bekommen. Ist diese Anzahl gleich, so wird ein Client gestartet, der noch nicht läuft. So lange also zb 2 Clients laufen, aber nur einer davon keine WU bekommt, so wird kein weiterer Client gestartet.
Wenn 0 Clients laufen und 0 Clients keine WU bekommen, dann wird mit der Logik ebenfalls ein Client gestartet. Kann man so lassen, oder unterbinden.
Wann eine WU fällig ist, liest das Programm aus der Datei "unitinfo.txt".
So viel macht das Programm also gar nicht
Die Abfrage über alle verfügbaren Clients erfolgt in einer For-Schleife automatisch im 10 Sekunden-Takt (aber quasi einstellbar).
Da ich 2 Grakas im Rechner habe, hab ich es für 2 programmiert. Eigentlich reichts ja einmal, da man es auch mehrmals starten kann.
Ich denke, damit solltest Du schon mal was anfangen können.
ciao Tom
P.S. hier mal ein etwas größeres Programm: