Script läuft nicht richtig!!!

  • Hallo zusammen, habe folgendes Problem bei meinem aufgelistetem Script:
    1. Die Ausführung ab Zeile 9 läuft sobald ich das Script starte...sollte aber erst laufen, sobald ich den Hotkey "strg+Space" drücke
    2. Hotkeys reagieren nicht!

    Kann mir jemand weiterhelfen?
    Gruß Melanie

    Einmal editiert, zuletzt von MelS3247 (27. April 2010 um 07:48)

  • Hey Melanie.

    [autoit]

    ;~ script for next sample automation

    [/autoit][autoit][/autoit][autoit]

    global $play=0
    HotKeySet("{SPACE}","_starten")
    HotKeySet("{x}","_stoppen")

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    while 1
    if($play = 1) then
    WinActivate("Analyst - ", "")
    ControlSend("Analyst -", "", "AfxOleControl42u2", "{RIGHT}")
    $time = 20
    AdlibRegister("_countdown", 1000)
    Endif

    [/autoit][autoit][/autoit][autoit]

    While $time > 0
    ToolTip($time)
    Sleep(10)
    WEnd
    WEnd

    [/autoit][autoit][/autoit][autoit]

    Func _countdown()
    $time -= 1
    EndFunc

    [/autoit][autoit][/autoit][autoit]

    func _starten()
    $play=1
    endfunc

    [/autoit][autoit][/autoit][autoit]

    func _stoppen()
    $play=0
    endfunc

    [/autoit][autoit][/autoit][autoit][/autoit]

    Aber dein Script hat in meinen Augen nicht wirklich nen Sinn?

    Du hast 2 Whileschleifen ineinander, sprich: Bist du in der 2., kannst du nicht mehr auf die 1. Zugreifen. Also ist die Abfrage nach $play schonmal nicht brauchbar. Desweiteren: Wenn sich die 2. While Schleife ausführt, kommst du da nichtmehr rauß. Du hast nirgendwo einen Bzug von der Schleife gezogen, womit du $time änderst. Also ist der Wert konstant und somit eine Endlosschleife....


    Rubberducky

    Einmal editiert, zuletzt von Rubberducky (26. April 2010 um 11:45)

  • lol...suuuuuper...um ehrlich zu sein hab ich mir einfach einpaar Scripts hier aus dem Forum zusammen gebastelt, und mit dem verknüpft was ich brauche!

    Wie komme ich denn da nun wieder raus???
    Meine Programmier-Kenntnisse reichen für sowas absolut nicht aus!

    Danke und Gruß
    Melanie

  • Hi!

    Hier dein etwas verändertes Script.

    Spoiler anzeigen
    [autoit]


    Dim $play = 0
    Dim $time = 20
    HotKeySet("^{SPACE}", "starten")
    HotKeySet("^{x}", "stoppen")
    While 1
    If $play Then
    WinActivate("Analyst - ", "")
    ControlSend("Analyst -", "", "AfxOleControl42u2", "^{RIGHT}")
    AdlibRegister("_Countdown", 1000)
    While $time > 0 And $play = 1
    ToolTip($time)
    Sleep(10)
    WEnd
    ToolTip($time)
    $play = 0
    AdlibUnRegister( "_Countdown" )
    EndIf
    Sleep(100)
    WEnd
    Func _Countdown()
    $time -= 1
    EndFunc ;==>_Countdown
    Func starten()
    If $time = 0 Then
    $time = 20
    EndIf
    $play = 1
    EndFunc ;==>starten
    Func stoppen()
    AdlibUnRegister( "_Countdown" )
    $play = 0
    EndFunc ;==>stoppen

    [/autoit]


    Wahrscheinlich geht es auch einfacher aber ehrlich gesagt ich wollte nicht zu lange darüber nachdenken.
    LG
    Concara

    If not :?: then ?( else :thumbup:

  • Mhhhhhhhh, ok...nun funktionieren zwar die Hotkeys, aber nicht ganz so wie ich es will.

    Hätte gerne dass der Zähler wieder resetet wird, sobald man stop und dann irgendwann wieder start gedrückt hat.
    Außerdem müsste die While-Schleife endlos laufen...bis ich mein Programm durch stop beende, oder komplett schließe!

    Danke für eure Hilfe

  • Wofür soll denn das Script sein? habe da so ein verdacht :huh:

    Damit in meiner QC-Software von LC-MS-Daten die samples automatisch weiterlaufen, und ich 20 Sekunden Zeit habe, diese Chromatogramme zu interpretieren und auszuwerten!
    Wieso???

  • Weil hier oft Hilfe für Spielebots gesucht wird, was nach Forenregeln verboten wird.

    mfg Ubuntu

  • HI!
    Ich hab keine Ahnung was das für ein Programm ist was du da angegeben hast.

    Wenn der Zähler wieder auf 20 gestellt werden soll dann einfach die if then Abfrage löschen.

    [autoit]


    Func starten()
    ;~ If $time = 0 Then diese Zeile löschen
    $time = 20
    ;~ EndIf und diese löschen
    $play = 1
    EndFunc ;==>starten

    [/autoit]

    lg concara

    If not :?: then ?( else :thumbup:

  • Mit dem Programm "Analyst" kann ich die Reinheit meiner LC-MS-gemessenen Proben bestimmen ;)

    Aber was ist mit meinem zweiten Problem...das die While-Schleife eigentlich endlos laufen soll, bis ich das ganze abstoppe???
    Grüße

  • Zitat

    Mit dem Programm "Analyst" kann ich die Reinheit meiner LC-MS-gemessenen Proben bestimmen ;)

    Aber was ist mit meinem zweiten Problem...das die While-Schleife eigentlich endlos laufen soll, bis ich das ganze abstoppe???
    Grüße


    ;) der war Gut.
    Weiß doch jeder was LC-MC Proben sind, warum habe ich nur gefragt. :S

    Also eigendlich soll dieses Forum eine Hilfestellung sein zum selber Programmieren.
    Wenn du willst das es jemand für dich macht dann musst du es unter Jobbörse ausschreiben.

    Was genau meinst du eigendlich mit der While schleife abstoppen?
    Was genau soll das Programm erfüllen?

    Edit: ich nehme an das du es so haben willst.

    Spoiler anzeigen
    [autoit]


    Dim $play
    Dim $time = 20
    Dim $exit = 1
    HotKeySet("^{SPACE}", "starten")
    HotKeySet("^{x}", "stoppen")
    HotKeySet("^{e}", "_exit")
    While $exit
    While $play = 1
    WinActivate("Analyst - ", "")
    ControlSend("Analyst -", "", "AfxOleControl42u2", "^{RIGHT}")
    AdlibRegister("_Countdown", 1000)
    While $time > 0 And $play = 1
    ToolTip($time)
    Sleep(10)
    WEnd
    ToolTip($time)
    AdlibUnRegister("_Countdown")
    $time = 20
    WEnd
    Sleep(250)
    WEnd
    Func _Countdown()
    $time -= 1
    EndFunc ;==>_Countdown
    Func starten()
    $play = 1
    EndFunc ;==>starten
    Func stoppen()
    AdlibUnRegister("_Countdown")
    $play = 0
    EndFunc ;==>stoppen
    Func _exit()
    $play = 0
    $exit = 0
    EndFunc ;==>_exit

    [/autoit]

    Eine Version ohne AdlibRegister

    Spoiler anzeigen
    [autoit]


    Dim $play
    Dim $time = 20
    Dim $exit = 1
    HotKeySet("^{SPACE}", "starten")
    HotKeySet("^{x}", "stoppen")
    HotKeySet("^{e}", "_exit")
    While $exit
    While $play = 1
    WinActivate("Analyst - ", "")
    ControlSend("Analyst -", "", "AfxOleControl42u2", "^{RIGHT}")
    ;~ AdlibRegister("_Countdown", 1000)
    While $time > 0 And $play = 1
    ToolTip($time)
    $time -= 1
    Sleep(1000)
    WEnd
    ToolTip($time)
    ;~ AdlibUnRegister("_Countdown")
    $time = 20
    WEnd
    Sleep(250)
    WEnd
    ;~ Func _Countdown()
    ;~ $time -= 1
    ;~ EndFunc ;==>_Countdown
    Func starten()
    $play = 1
    EndFunc ;==>starten
    Func stoppen()
    ;~ AdlibUnRegister("_Countdown")
    $play = 0
    EndFunc ;==>stoppen
    Func _exit()
    $play = 0
    $exit = 0
    EndFunc ;==>_exit

    [/autoit]

    If not :?: then ?( else :thumbup:

    2 Mal editiert, zuletzt von Concara (26. April 2010 um 15:09)


  • ;) der war Gut.
    Weiß doch jeder was LC-MC Proben sind, warum habe ich nur gefragt. :S

    Also eigendlich soll dieses Forum eine Hilfestellung sein zum selber Programmieren.
    Wenn du willst das es jemand für dich macht dann musst du es unter Jobbörse ausschreiben.

    Was genau meinst du eigendlich mit der While schleife abstoppen?
    Was genau soll das Programm erfüllen?

    ich nehme an das du es so haben willst.

    Schönen guten Morgen,

    also nur ganz kurz angerissen:
    LC = Liquid Chromatography
    MS = Mass Spectrometry
    Sind beides instrumentelle Verfahren zur Strukturaufklärung von Molekülen (synthetischer oder natureller Chemie!)

    So nun aber zu deinem Script...viiiiiiiielen Dank...ich denke, das sollte fürs erste genau das sein, was ich wollte. Auch bei allen anderen Beteiligten, die mir helfen wollten, bedanke ich mich!

    Damit werde ich diesen Beitrag "closen"
    Und falls ich doch noch was brauche, dann werde ich mich an die Jobbörse wenden...sorry, wusste ich vorher nicht.

    Gruß Melanie

  • Ähhhhhhhhm??? Wie geht das denn? Oder darf ich das gar nicht selbst???

    natürlich darfste , wär sogar gut :)


    einfach den ersten post editieren, als präfix gelöst auswählen und senden nicht vergessen ;)