Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
leider kommt es bei Laborrechnern immer wieder vor, das der Energiesparmodus aktiviert ist (nach Installation, neuem SP, ...) und so die Langzeitmessungen unterbrochen werden.
Prinzipell bringt diese Funktion aus Gründen des Energieverbrauchs ja auch Sinn, aber leider nicht während der Messungen.
Deshalb würde ich aus meiner Labview Anwendung bei laufenden Messungen (via RS232 oder USB) gerne den Energiesparmodus verhindern. Gibt es eine Möglichkeit den Timer des Windows Energiesparmodus nachzutriggern oder den Energiesparmodus komplett zu blocken?
Gruß
jan
20.06.2014, 18:09 (Dieser Beitrag wurde zuletzt bearbeitet: 20.06.2014 18:11 von GerdW.)
üblicherweise lässt sich der Energiesparmodus durch Mausbewegungen vermeiden. Du musst dir also überlegen, wie du die Maus bewegt bekommst…
Es gibt Wege (z.B. Win-DLL-Aufrufe oder 3rd-party tools), mit denen man den Mauszeiger bewegen/platzieren kann, ohne das dazu ein User am PC sitzen muss. Meist reicht das aus, um den Screensaver/Energiesparmodus zu verhindern. Also: einfach regelmäßig MouseMove-Events erzeugen!
Ansonsten:
Mess-PCs sollten einen eindeutigen Admin haben, der sich um die Updates etc. kümmert. Und dieser Admin sollte der einzige sein, der die Energiesparoptionen etc. einstellt. Alles andere ist in einem produktiven Umfeld simple Geldverschwendung!
Also:
- Auto-Update ausschalten (Messrechner sollten sowieso nicht am Internet hängen)
- normalen (eingeschränkten) User-Account für Messungen einrichten
- einen Admin-Account einrichten, der sich regelmäßig und nach Absprache mit dem Mess-Plan um Updates und Rechnereinstellungen (mit Checkliste!) kümmert…
Es gibt ja viele Programme, bei denen das Herunterfaheren nicht stattfindet, wenn es läuft. (Download Manager, Video-Konvertierer). Eine Programmierung kann da doch nicht so schwer sein, und ich vermute, man macht das mit der Windows-Funktion "shutdown.exe"
Mach doch mal das:
In der Windows-Eingabezeile cmd aufrufen. Dann in dem sich öffnenden Fenster "shutdown /?" eingeben
Es erscheint die Syntax des Befehls mit allen Parametern.
Finde heraus, wie es geht, und lass das Ergebnis hier allen zugute kommen.
22.06.2014, 14:59 (Dieser Beitrag wurde zuletzt bearbeitet: 22.06.2014 15:01 von rolfk.)
Oder man ruft die Windows API Funktion kernel32.SetThreadExecutionState(uInt32 state) auf.
Mit Parameter 0x80000002 verhindert man, dass Windows das Display in den Ruhemodus schaltet. Mit 0x80000000 schaltet man das wieder zurück. Das 0x2 am Ende sagt dass die Applikation das Display nicht ausgeschaltet haben will. Mit 0x1 anstelle von 0x2 teilt man Windows mit dass das System benützt wird (aber das Display durchaus schlafen gehen darf, also das Display kann dunkel werden aber der Computer geht nicht schlafen).
Aber: explizite Requests des Benützers um den Computer auszuschalten oder in den Schlafmodus zu setzen (z.B. Laptop schliessen) werden trotzdem ausgeführt!
(24.06.2014 10:46 )jan91 schrieb: vielen Dank, das ein/ ausschalten mit der Windows API Funktion kernel32 funktioniert super.
Das ist genau die Funktion, nach der ich gesucht habe.
Dann sollte man doch die Antwort auch als "richtige Lösung" markieren. Habe das mal für Dich getan.
(22.06.2014 14:59 )rolfk schrieb: Oder man ruft die Windows API Funktion kernel32.SetThreadExecutionState(uInt32 state) auf.
Mit Parameter 0x80000002 verhindert man, dass Windows das Display in den Ruhemodus schaltet. Mit 0x80000000 schaltet man das wieder zurück. Das 0x2 am Ende sagt dass die Applikation das Display nicht ausgeschaltet haben will. Mit 0x1 anstelle von 0x2 teilt man Windows mit dass das System benützt wird (aber das Display durchaus schlafen gehen darf, also das Display kann dunkel werden aber der Computer geht nicht schlafen).
Aber: explizite Requests des Benützers um den Computer auszuschalten oder in den Schlafmodus zu setzen (z.B. Laptop schliessen) werden trotzdem ausgeführt!
Super! Genau was ich gesucht habe , danke!
Anbei ein kleines VI wo diese Lösung umgesetzt ist
(12.11.2024 12:41 )baer1775 schrieb: Anbei ein kleines VI wo diese Lösung umgesetzt ist
Cool, danke für das VI und zum aufmerksam machen auf den Thread, sowas wollte ich auch mal einbauen. Zumindest sollte es verhindern, dass meine USB Ports abgeschaltet werden während einer längeren Messung, oder?
Ich habe noch nie mit der 'Call Library Function' gearbeitet, das sieht ja umständlich aus (wenn man keine Ahnung hat). Beim lesen des Threads habe ich mal die MS Seite dazu genommen, verstehe ich das richtig, die Funktion gibt auch eine Echo als Antwort mit der aktiven Funktion?
Interessant fande ich den Teil:
"Calling SetThreadExecutionState without ES_CONTINUOUS simply resets the idle timer; to keep the display or system in the working state, the thread must call SetThreadExecutionState periodically."
Man kann sich quasi Mouse Move komplett sparen und einfach einen Timer Reset machen ..
Grüße Timo
Justieren ist dem Gerät sagen was es anzeigen soll, kalibrieren ist die Kontrolle dieser Anzeige. Eichen ist ein längerer Prüfprozess und darf nur das Eichamt!