Navi: An/Aus in Abhänggkeit ext. Stromversorgung

  • Zitat

    Original von jwoegerbauer
    ...


    Mach Dir doch keine Mühe mehr in dieser Sache: es scheint tatsächlich NIEMAND ein Interesse hieran zu haben:


    @jwoegerbauer


    Zu spät. Ich hab die berichtigungen bereits gemacht, und es flutscht
    jetzt bei meinem navi. Nochmal danke!



    Die von mir geänderten Stellen sind rot gemacht


    # POWERNOTIFIER_PROMPT.mscr
    #
    # 2009-08-28
    # J.Wögerbauer
    # GNU General Public License (GPL), Version 2, June 1991
    #
    #
    ErrorLevel("off")
    Local()
    #
    #
    # note: the exe here defined must be the same as defined in file
    # ON_AC_POWER_LOSS.mscr
    #
    Set OFF_EXE, "Sleep.exe"
    Set OFF_EXE_PATH, "\My Flash Disk\SystemProgs\"
    Sleep 50
    #
    #
    If (not FileExists( %OFF_EXE_PATH% & %OFF_EXE% ))
    # notify user
    SleepMessage(3, "Datei^NL^" & %OFF_EXE% & "^NL^nicht gefunden!")
    # go out
    Exit
    EndIf
    #
    #
    Set PN_EXE, "PowerNotify.exe"
    Set PN_EXE_PATH, "\My Flash Disk\programme\TroNikPowerNotifier\"
    Set INI, "PowerNotifyFlags.ini"
    Sleep 50
    #
    #
    If (not FileExists( %PN_EXE_PATH% & %PN_EXE% ))
    # notify user
    SleepMessage(3, "Datei^NL^" & %PN_EXE% & "^NL^nicht gefunden!")
    # go out
    Exit
    EndIf
    #
    #
    If (not FileExists( %PN_EXE_PATH% & %INI% ))
    # notify user
    SleepMessage(3, "Datei^NL^" & %INI% & "^NL^nicht gefunden!")
    # go out
    Exit
    EndIf
    #
    #
    Set PN_LNK, "\Windows\Startup\PowerNotify.lnk"
    #
    #
    Set fontSize, "22"
    Set fontName, "Verdana"
    Set lineHeight, "30"
    options[1] = "Aktivieren"
    options[2] = "Deaktivieren"
    options[3] = "Neu Initialisieren"
    options[4] = " "
    options[5] = "Deinstallieren"
    Sleep(100)
    #
    #
    SetChoiceEntryFormat(%lineHeight%, %fontSize%, %fontName%)
    Choice("Auto On/Off Optionen", "^NL^^NL^", options)
    Case( 1 )
    #
    CreateShortcut( %PN_LNK%, %PN_EXE_PATH% & %PN_EXE% )
    #
    # start PowerNotify.exe that will register for PowerNotifications
    #
    Run( %PN_EXE_PATH% & %PN_EXE%)
    #
    Case( 2 )
    #
    #
    # stop PowerNotify.exe
    #
    If(ProcExists(%PN_EXE%))
    Kill(%PN_EXE%)
    EndIf
    #
    Delete( %PN_LNK% )
    #
    Case( 3 )
    # stop PowerNotify.exe
    #
    If(ProcExists(%PN_EXE%))
    Kill(%PN_EXE%)
    EndIf
    #
    #
    IniWrite( %PN_EXE_PATH% & %INI%, "PowerOnOff", "PowerFlag", "1" )
    Sleep(100)
    # re-start PowerNotify.exe
    #
    Run( %PN_EXE_PATH% & %PN_EXE%)
    #
    Case( 4)


    # nothing to do


    Case( 5 )
    # stop PowerNotify.exe
    #
    If(ProcExists(%PN_EXE%))
    Kill(%PN_EXE%)
    EndIf
    #
    Delete( %PN_LNK% )
    #
    # remove all related entries in \My Flash Disk
    #
    DelTree( %PN_EXE_PATH% )
    files[1] = "\My Flash Disk\navigation\menu\desktop\PowerNotifier.xml"
    files[2] = "\My Flash Disk\navigation\menu\desktop\PowerNotifier.png"
    files[3] = "\My Flash Disk\programme\MortScript\ON_AC_POWER_LOSS_EXE"
    files[4] = "\My Flash Disk\programme\MortScript\ON_AC_POWER_LOSS.mscr"
    files[5] = "\My Flash Disk\programme\MortScript\ON_AC_POWER_RESUME.EXE"
    files[6] = "\My Flash Disk\programme\MortScript\ON_AC_POWER_RESUME.mscr"
    files[7] = "\My Flash Disk\programme\MortScript\ON_AC_POWER_DAEMON.EXE"
    files[8] = "\My Flash Disk\programme\MortScript\ON_AC_POWER_DAEMON.mscr"
    For i = 1 To ElementCount(files) Step 1
    Delete( files[i] )
    Sleep 50
    Next
    #
    EndChoice
    #
    #
    Exit



    # ON_AC_POWER_LOSS.mscr
    #
    # jwoegerbauer 09/04/2009
    # GNU General Public License (GPL), Version 2, June 1991
    #
    #
    #
    # NO ERROR CHECKING IS DONE !!!
    #
    ErrorLevel("off")
    #
    # Before using this script add these lines to PowerNotifyFlags.ini
    # [PowerOnSUSPEND]
    # PowerFlag=1
    #
    Local()
    #
    #
    #
    # check for sufficient power or don't run anything and don't resubmit
    If (BatteryPercentage() <= 35)
    SleepMessage(5, "Battery level is low: " & BatteryPercentage(), "Power Warning", 1))
    Exit
    EndIf
    #
    # adjust to your needs
    Set WAIT_SECS, 0
    #
    # prevent ourselves from doing things twice
    If (not ExternalPowered())
    #
    #
    Set ON_AC_POWER_DAEMON, "\My Flash Disk\programme\MortScript\ON_AC_POWER_DAEMON.exe"
    #
    # note: the turn OFF exe here defined must be the same as defined in file
    # POWERNOTIFIER_PROMPT.mscr
    #
    #
    Set TURN_OFF, "\My Flash Disk\SystemProgs\Sleep.exe"
    Set INI, \
    "\My Flash Disk\programme\TroNikPowerNotifier\PowerNotifyFlags.ini"
    Sleep(50)
    #
    # assume the device is running on external power and we unplug
    # the usb-powered cable or engined off, and the power is re-supplied
    # we should Cancel this script automatically.
    # IMO this is a useful case when we use the device in the car in
    # ignition mode and then start the engine.
    #
    # hence we implement now an additional power state listener (a sec timer)
    While(%WAIT_SECS% > 0)
    #
    # 1 second
    Sleep(1000)
    #
    # query current power state
    acPower = ExternalPowered()
    If (acPower = TRUE )
    # power is re-supplied
    # therefore we don't go into Standby
    Exit
    EndIf
    %WAIT_SECS% = %WAIT_SECS% - 1
    EndWhile
    #
    #
    PlaySound("\My Flash Disk\programme\TroNikPowerNotifier\chime_down.wav")
    #
    #
    Set SECTION, "PowerOnOff"
    Set KEY, "PowerFlag"
    Sleep(50)
    #
    # Read PowerFlag value
    PowerFlag = IniRead( %INI%, %SECTION%, %KEY% )
    #
    # On suspend mode we set PowerFlag=0
    If(PowerFlag)
    #
    #
    IniWrite( %INI%, %SECTION%, %KEY%, "0" )
    Sleep(100)
    #
    # kill old notification(s) to prevent overlap
    RemoveNotifications( %ON_AC_POWER_DAEMON% )
    #
    # set new notify (will be processed in 1 min from now on)
    RunAt( TimeStamp() + 60, %ON_AC_POWER_DAEMON% )
    #
    # turn device into sleep mode
    Run( %TURN_OFF% )
    #
    #
    EndIf
    #
    #
    EndIf
    #
    #
    Exit



    # ON_AC_POWER_DAEMON.mscr
    #
    # jwoegerbauer 09/04/2009
    # GNU General Public License (GPL), Version 2, June 1991
    #
    #
    #
    # NO ERROR CHECKING IS DONE !!!
    #
    ErrorLevel("off")
    Local()
    #
    #
    # adjust to your needs (seconds !!!!)
    Set SUBMIT_TIME, 5
    Set ON_AC_POWER_DAEMON, "\My Flash Disk\programme\MortScript\ON_AC_POWER_DAEMON.exe"
    Set ON_AC_POWER_RESUME, "\My Flash Disk\programme\MortScript\ON_AC_POWER_RESUME.exe"
    Sleep(50)
    #
    #
    If( not ExternalPowered())
    #
    # kill old notification(s) to prevent overlap
    RemoveNotifications( %ON_AC_POWER_DAEMON% )
    #
    # set new notify
    # i.e. check back in SUBMIT_TIME seconds
    RunAt( TimeStamp() + %SUBMIT_TIME%, %ON_AC_POWER_DAEMON% )
    Else

    #
    # kill old notification(s) to prevent overlap
    RemoveNotifications( %ON_AC_POWER_DAEMON% )
    # set new notify
    # i.e. check back in SUBMIT_TIME seconds
    RunAt( TimeStamp() + %SUBMIT_TIME%, %ON_AC_POWER_RESUME% )

    EndIf
    #
    #
    Exit



    ;PowerNotify.ini
    ;

    PowerACOff=\My Flash Disk\programme\MortScript\ON_AC_POWER_LOSS.exe
    PowerACOn=\My Flash Disk\programme\MortScript\ON_AC_POWER_RESUME.exe
    ;PowerCritical=
    ;PowerLow=
    PowerResume=\My Flash Disk\programme\MortScript\ON_AC_POWER_RESUME.exe



  • Hallo jwoegerbauer


    Doch das Interesse ist bestimmt groß , ich warte auch manchmal ab ob andere auch das Problem habe das ScreenSaver nur einmal geht , wenn sich kein anderer melden muss ich was falsch gemacht haben , aber wie Ralf25 schon sagt IMO ist Urlaubzeit da kann man nach nichts gehen.


    Wie gesagt bei mir ist es immer noch mit einmal die Funktion ScreenSaver , nach SR und zurück kopieren der Datei PowerNotifyFlags.ini PowerFlag= ist dann wieder 1 anstatt 0 und betätigen des Auto On/Off Schalter im Start-Menü geht es wieder für einmal.
    Habe schon die Sleep höher gesetzt vom 100 auf 300 , dache vielleicht braucht er ein bisschen mehr Zeit, daran lag es nicht.


    Habe grad daniHG sein Standby probiert , geht auch nur einmal, vorher gar nicht.


    Irgend wie habe ich immer die Arschkarte . :-D)


    Ich warte erst mal ab biss die meisten wieder aus dem Urlaub zurück sind.


    Gruß Manni

  • @daniHG


    hab's bei mir aufgespielt: EINWANDFREI!
    Für mich hast Du die 100 von möglichen 100 Punkten.



    @Manni123


    es ist nur ein sehr, sehr vaguer Verdacht: vielleicht stehen Deinem Erfolgerlebnis
    bestimmte Registry-Einträge im Wege, ich denke hier im Besonderen an


    HKLM, System\CurrentControlSet\Control\Power\Timeouts
    HKCU, ControlPanel\Backlight


    will mich aber hierauf nicht festlegen lassen.


    EDIT:


    Ein ständiges Kopieren ist nicht nötig, es gibt dafür den Menüpunkt
    "Neu Initialisieren" ( der noch von der Testphase herrührt)

    Einmal editiert, zuletzt von jwoegerbauer ()

  • Hallo jwoegerbauer


    Ich versuche das die ganze Zeit auf GP5 , ist das der Fehler, geht das auf der 5 noch nicht?
    Weil die 5 hat ja solche Start-Menü Einträge nicht, das haben wir aus GP4 mit eingebracht , kann jetzt wohl an alles liegen .
    Ich werde am Wochenende mal GP4.8 wieder drauf machen.


    Mit der Registry das schaue ich mir an.


    Gruß Manni

  • hallo hier,
    ich beobachte dies schon eine ganze Weile mit Interesse.
    und ich finde es klasse, dass nach der Eskalation vorher jetzt hier gemeinsam eine Lösung gesucht wird. :respekt :respekt :respekt


    ich halte mich immer etwas zurück mit dem experimentieren, da ich mich mit den ganzen Mort-Dingen etc. sehr wenig auskenne.
    Außerdem habe ich die Befürchtung, dass jedes noch so kleine Progrämmchen Speicher frisst, den GoPal (leider) so dringend benötigt.
    Wenn Ralf25 Grünes Licht gibt, dann würde ich aufgrund der etwaigen Baugleichheit unserer Hardware einen Versuch wagen.


    weiter so.


    my-key


    PS. andere Frage, denn ich denke, dass die auch mit der Registry zu tun hat: könnte man das automatische Abdunkeln im Batterie-Betrie deaktivieren ?

  • Zitat

    Original von my-key


    ---


    PS. andere Frage, denn ich denke, dass die auch mit der Registry zu tun hat: könnte man das automatische Abdunkeln im Batterie-Betrie deaktivieren ?


    @my_key


    habe in meinem Archiv nachgeschaut und etwas gefunden, dass dieses
    Problem lösen kann:


    ################################################################
    #
    # XXX_STAY_ALIVE.mscr
    #
    # jwoegerbauer 06/14/2009
    # GNU General Public License (GPL), Version 2, June 1991
    #
    ################################################################
    #
    # Abstract:
    # Basic script to set no timeouts and full brightness
    # while using specific XXX_application
    #
    # Take control over your backlight. Want it to stay on longer
    # or not turn off when running a specific application?
    # When running certain applications you are limited to your
    # default backlight time out of just a few seconds. Ever wanted
    # to way to just leave the backlight on? Using a GPS application
    # for navigation and the screen keeps turning off?
    #
    # XXX_STAY_ALIVE might be the solution for you.
    #
    ################################################################
    #
    ErrorLevel("off")
    #
    Local()
    #
    ################################################################
    #
    # IMPORTANT --- IMPORTANT --- IMPORTANT --- IMPORTANT
    #
    # change application to run here
    Set STAY_ALIVE_APP, "\My Flash Disk\My Apps\MyApp.exe"
    #
    ################################################################
    #
    #
    Set CURR_TIMEOUTS, "System\CurrentControlSet\Control\Power\Timeouts"
    Set CURR_BACKLIGHT, "ControlPanel\Backlight"
    #
    # read current registry settings
    BattSuspendTimeout = \
    RegRead ("HKLM", %CURR_TIMEOUTS%,"BattSuspendTimeout")
    ACSuspendTimeout = \
    RegRead ("HKLM", %CURR_TIMEOUTS%,"ACSuspendTimeout")
    BatteryTimeout = \
    RegRead ("HKCU", %CURR_BACKLIGHT%, "BatteryTimeout")
    ACTimeout = \
    RegRead ("HKCU", %CURR_BACKLIGHT%, "ACTimeout")
    Brightness = \
    RegRead ("HKCU", %CURR_BACKLIGHT%, "Brightness")
    ACBrightness = \
    RegRead ("HKCU", %CURR_BACKLIGHT%, "ACBrightness")
    #
    # set registry settings
    RegWriteDword ("HKLM", %CURR_TIMEOUTS%, "BattSuspendTimeout",0)
    RegWriteDword ("HKLM", %CURR_TIMEOUTS%, "ACSuspendTimeout",0)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "BatteryTimeout", 0)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "ACTimeout", 0)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "Brightness", 10)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "ACBrightness", 10)
    #
    # run the application
    RunWait (%STAY_ALIVE_APP%)
    #
    # restore registry settings back to normal use mode
    RegWriteDword ("HKLM", %CURR_TIMEOUTS%, "BattSuspendTimeout", \
    BattSuspendTimeout)
    RegWriteDword ("HKLM", %CURR_TIMEOUTS%, "ACSuspendTimeout",\
    ACSuspendTimeout)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "BatteryTimeout", \
    BatteryTimeout)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "ACTimeout", \
    ACTimeout)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "Brightness", \
    Brightness)
    RegWriteDword ("HKCU", %CURR_BACKLIGHT%, "ACBrightness", \
    ACBrightness)
    #
    #
    Exit
    #
    ################################################################

  • danke - die Antwort gibg ja fix.
    nur, in welcher Form muss dieser Code wohin ?( ?( ?(


    my-key

  • Zitat

    Original von my-key
    danke - die Antwort gibg ja fix.
    nur, in welcher Form muss dieser Code wohin ?( ?( ?(


    my-key


    @my-key


    das hat aber jetzt überhaupt nichts mit dem Thema


    Navi: An/Aus in Abhänggkeit ext. Stromversorgung


    zu tun, ist eine ganz andere Sache, die übrigens den jeweiligen eingesetzen
    Skin zutiefst berührt.



    Vielleich ein neues Thema zu Deiner Frage starten?



  • @Manni123


    Vielleicht helfen ( aus meiner Sicht die allerletzte Möglichkeit ) diese
    drei Änderungen - dann wäre es tatsächlich ein MortScript.exe Problem:




    # ON_AC_POWER_DAEMON.mscr


    ...



    #
    #
    If( not ExternalPowered())
    #
    # kill old notification(s) to prevent overlap
    RemoveNotifications( %ON_AC_POWER_DAEMON% )
    #
    # set new notify
    # i.e. check back in SUBMIT_TIME seconds

    ReRun = TimeStamp() + %SUBMIT_TIME%
    RunAt( ReRun, %ON_AC_POWER_DAEMON% )

    Else
    #
    # kill old notification(s) to prevent overlap
    RemoveNotifications( %ON_AC_POWER_DAEMON% )
    # set new notify
    # i.e. check back in SUBMIT_TIME seconds

    ReRun = TimeStamp() + %SUBMIT_TIME%
    RunAt( ReRun, %ON_AC_POWER_RESUME% )

    EndIf
    #
    #


    ...



    # ON_AC_POWER_LOSS.mscr
    #


    ...


    # On suspend mode we set PowerFlag=0
    If(PowerFlag)
    #
    #
    IniWrite( %INI%, %SECTION%, %KEY%, "0" )
    Sleep(100)
    #
    # kill old notification(s) to prevent overlap
    RemoveNotifications( %ON_AC_POWER_DAEMON% )
    #
    # set new notify (will be processed in 1 min from now on)

    ReRun = TimeStamp() + 60
    RunAt( ReRun, %ON_AC_POWER_DAEMON% )

    #
    # turn device into sleep mode
    Run( %TURN_OFF% )
    #
    #
    EndIf
    #
    #


    ...

  • Hallo jwoegerbauer


    Ist noch genauso , geht nur einmal.


    Mach dir mit mir nicht so viel Arbeit , wenn es bei den anderen läuft kann es nur an mir liegen.
    Warten wir erst mal ab bis sich andere melden , vielleicht habe ich ja glück und es hat noch jemand das gleiche Problem. :D


    Schönen Gruß Manni

  • Habe nur heute den thread entdeckt :)
    Erstmall danke für Ihre Arbeit :)


    probiere gerade
    daniHG-Standby ,aus download in ersten post.
    Auf 470T auschalten(stand by) funzt auch nur einmall ,danach mus ich wieder auf aktivieren oder initialisieren und ok drucken,und nach c.a 1min,ohne ladekabel einstecken schaltet sich das gerät selbst ein! ?(

  • A:


    Die Debug-Version des Programm-Pakets zeigt Folgendes auf:


    1253358425 ON_AC_POWER_LOSS entered
    1253358427 ON_AC_POWER_DAEMON started
    1253358427 ON_AC_POWER_LOSS exited
    1253358533 ON_AC_POWER_DAEMON entered
    1253358534 External power supply detected
    1253358534 ON_AC_POWER_RESUME started
    1253358534 ON_AC_POWER_RESUME entered
    1253358535 ON_AC_POWER_RESUME exited
    1253358536 ON_AC_POWER_DAEMON exited


    Die Programm-Logik ist somit richtig.



    B:


    Ich habe schonmal hier angedeutet, dass das Tool laufen mag oder nicht,
    dies u.a. von Einträgen in der Registrierungsdatenbank abhängig ist.



    Die Power-Management Einträge in der registry sind


    GWES Suspend Timeouts
    (GWES = Graphics, Windowing, und Events Subsystem)


    HKLM/System/CurrentControlSet/Control/Power/$
    $: BattPowerOff - Poweroff bei Akkubetrieb (CE: ? MD: 0)
    $: ExtPowerOff - Poweroff bei Ladegerät (CE: ? MD: 0)
    $: WakeupPowerOff (CE: ? MD: 0)
    $: ScreenPowerOff (CE: ? MD:0)


    Ob diese GWES Timeouts vom System auch tatsächlich verwendet
    werden, ergibt sich aus dem Eintrag unter


    HKLM/System/CurrentControlSet/Control/Power/$
    $: DisableGwesPowerOff (CE: 1 MD: 1)


    HKLM/System/CurrentControlSet/Control/Power/$
    $: BattPowerOff - Poweroff bei Akkubetrieb (CE: ? MD: 0)
    $: ExtPowerOff - Poweroff bei Ladegerät (CE: ? MD: 0)
    $: WakeupPowerOff (CE: ? MD: 0)
    $: ScreenPowerOff (CE: ? MD:0)


    Wird DisableGwesPowerOff auf 0 (Falsch) gesetzt, müssen alle
    nachfolgenden Einträge aus der Registrierungsdatenbank ent-
    fernt werden:


    Power Manager Suspend Timeouts


    HKLM/System/CurrentControlSet/Control/Power/Timeouts/$
    $: ACSuspendTimeout - Standby nach X Sekunden mit Ladegerät
    $: ACResumingSuspendTimeout - automatisch eingeschalteten PNA
    nach X Sekunden abschalten, bei Ladegerät
    $: BattSuspendTimeout - Standby nach X Sekunden bei Akkubetrieb
    $: BattResumingSuspendTimeout - automatisch eingeschalteten PNA
    nach X Sekunden abschalten, bei Akkubetrieb
    $: ACUserIdle (CE: 60 MD: 1)
    $: ACSystemIdle (CE: 300 MD: 1)
    $: ACSuspend (CE: 0 MD: 0)
    $: BattUserIdle (CE: 60 MD: 1)
    $: BattSystemIdle (CE: 180 MD: 1)
    $: BattSuspend (CE: 300 MD:
    $: BatteryPoll (CE: 500 MD: 5000) - Millisekunden !!!


    Wird DisableGwesPowerOff auf 1 (Wahr) gesetzt, gelten systemweit
    ausschließlich die Power Manager Suspend Timeouts.



    C:


    Nach einem Hard-Reset ergibt sich bei meinem Navi folgendes Bild bezüglich
    einiger Power-Management Einträge in der registry:



    BattPowerOff=1
    ExtPowerOff=4
    ACSuspendTimeout=1
    ACResumingSuspendTimeout=1
    BattSuspendTimeout=1
    BattResumingSuspendTimeout=0



    Es ist somit offensichtlich, dass das Tool nicht auf allen Geräten so laufen
    wird, wie man sich mancher hier vorgestellt hat.


    D:


    Warum bei verschiedenen Testläufen der Bildschirm sich wieder einschaltet, obwohl
    (noch) keine externe Stromversorgung gegeben ist, ist mir absolut schleierhaft.


    [EDIT]


    Vielleicht liegt's u.a. auch am Folgenden - ich weiß es nicht:


    Es ist bekannt dass nach jedem Soft-Reset des PNA einige zusätzliche notification events
    in die notification event database des Systems geschrieben werden: diese Datenbank enthält
    System-Benachrichtigungen wie z.Bsp. Alarme, Wecker, u.s.w. Nach mehreren Soft-Resets kann die
    notification event database des PNA mehrere Hundert solcher zusätzlicher notification
    events
    aufweisen. Es sind dies zumeist "SSTimeChange" und "conmgr.exe" Ereignisse.


    Nach einem Hard-Reset sind es üblicherweise weniger als 50 notification events, die in der
    notification event database dann zu finden sind.


    Und dieses An/Aus Tool schreibt ebenfalls ständig in die notification event database.


    [/EDIT]



    E:


    Die Fortsetzung dieses Themas habe ich deshalb nach hier verlagert.

    3 Mal editiert, zuletzt von jwoegerbauer ()