aa2zz6 Posted July 8, 2015 Share Posted July 8, 2015 (edited) So I've written a program and I tried adding a while sleep loop instead of using a task scheduler so wrote a simple while loop to sleep and every 20 minutes it would repeat two functions. I'll post the code below if anyone have suggestions. Thanks for any feedback. The While 1 is supposed to loop Application1 and Application2 every 20mins.expandcollapse popupWhile 1 Application1() Application2() Sleep(1200000 ) ; loop every 1200000 seconds = 20mins WEnd Func Application1() If @WDAY >= 2 And @HOUR = 18 And @MIN = 0 Then If pixelgetcolor(38, 280) = 0x6AB622 then ;IF [Application1] - BLUE was found. Software is running; sleep(5000) MsgBox($MB_OK, "Application1", "The application is running", 5) sleep(5000) EndIf If Not pixelgetcolor then ;IF NOT COLOR BLUE THEN CALL Application1; sleep(5000) Call("Application1") sleep(8000) EndIf EndIf EndFunc Func Application2() If @WDAY >= 2 And @HOUR = 18 And @MIN = 0 Then If pixelgetcolor(37, 310) = 0x32BEF2 then ;IF Application[2] - BLUE was found. Software is running; sleep(5000) MsgBox($MB_OK, "Application2", "The application is running", 5) sleep(5000) endif If Not pixelgetcolor then ;IF NOT COLOR BLUE THEN CALL Application2; sleep(5000) Call("Application2") sleep(5000) EndIf EndIf EndFunc Edited July 8, 2015 by aa2zz6 Displayed code as colored text Link to comment Share on other sites More sharing options...
TheSaint Posted July 8, 2015 Share Posted July 8, 2015 (edited) Hi. Welcome.You should be using proper code highlighting. You can do that using the <> button, to the left of the smiley face button.That makes it much easier for others to troubleshoot your code.expandcollapse popupWhile 1 Application1() Application2() Sleep(1200000 ) ; loop every 1200000 seconds = 20mins WEnd Func Application1() If @WDAY >= 2 And @HOUR = 18 And @MIN = 0 Then If pixelgetcolor(38, 280) = 0x6AB622 then ;IF [Application1] - BLUE was found. Software is running; sleep(5000) MsgBox($MB_OK, "Application1", "The application is running", 5) sleep(5000) EndIf If Not pixelgetcolor then ;IF NOT COLOR BLUE THEN CALL Application1; sleep(5000) Call("Application1") sleep(8000) EndIf EndIf EndFunc Func Application2() If @WDAY >= 2 And @HOUR = 18 And @MIN = 0 Then If pixelgetcolor(37, 310) = 0x32BEF2 then ;IF Application[2] - BLUE was found. Software is running; sleep(5000) MsgBox($MB_OK, "Application2", "The application is running", 5) sleep(5000) endif If Not pixelgetcolor then ;IF NOT COLOR BLUE THEN CALL Application2; sleep(5000) Call("Application2") sleep(5000) EndIf EndIf EndFuncI've only had a quick look at your code, but it seems apparent to me, that you may have a timing issue, specifically as the use of @MIN = 0 is very specific and limiting.You can of course, test that element by displaying it in a Msgbox.I suggest you have a go at trying to come up with a solution, bearing that in mind.Perhaps using the time plus a much smaller sleep rather than just sleep in your function calling loop. Edited July 8, 2015 by TheSaint Make sure brain is in gear before opening mouth! Remember, what is not said, can be just as important as what is said. Spoiler What is the Secret Key? Life is like a Donut If I put effort into communication, I expect you to read properly & fully, or just not comment. Ignoring those who try to divert conversation with irrelevancies. If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it. I'm only big and bad, to those who have an over-active imagination. I may have the Artistic Liesense to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage) Link to comment Share on other sites More sharing options...
aa2zz6 Posted July 8, 2015 Author Share Posted July 8, 2015 (edited) I was doing a little more research, learned something new, and here is what I found out. This seems to work but I'm not sure about this piece of code:If TimerDiff($iTimer) >= 1 * 1 * 2 Then$iTimer = TimerInit() While 1 If TimerDiff($iTimer) >= 1 * 1 * 2 Then wave1() wave2() EndIf Sleep(900000) WEnd Edited July 8, 2015 by aa2zz6 There was a typo in the code. Needed corrected. Link to comment Share on other sites More sharing options...
kylomas Posted July 9, 2015 Share Posted July 9, 2015 aa2zz6,You are testing for a difference of 2 milli seconds, doing something then sleeping for 15 minutes. Is this what you intended? You also have no way of ending the loop. If you explain what you are trying to do then we are in a better position to advise.kylomas Forum Rules Procedure for posting code "I like pigs. Dogs look up to us. Cats look down on us. Pigs treat us as equals." - Sir Winston Churchill Link to comment Share on other sites More sharing options...
jvds Posted July 9, 2015 Share Posted July 9, 2015 if you are trying to use the timerinit instead of sleep to run your code every 20 mins then try this $iTimer = TimerInit() $minutes = 1 ;the timer will trigger at this amount of minutes While 1 If TimerDiff($iTimer) / 1000/60 >= $minutes Then $iTimer = TimerInit() ;reset timer so it can trigger again in X minutes set at $minutes consolewrite ("!TIMER was triggered"&@LF) ;~ wave1() ;~ wave2() EndIf ;~ consolewrite ("diff="&TimerDiff($iTimer)/1000/60&@crlf) Sleep(1000) WEnd aa2zz6 1 Link to comment Share on other sites More sharing options...
TheSaint Posted July 9, 2015 Share Posted July 9, 2015 (edited) In your first post, both functions run under the same conditions, which you test for twice, but really only need to do once.So you could just use that testIf @WDAY >= 2 And @HOUR = 18 And @MIN = 0 ThenIn your While 1...Wend and then have both functions run one after the other.While 1 If @WDAY >= 2 And @HOUR = 18 And @MIN = 0 Then Application1() Application2() EndIf Sleep(1000) ; loop every 1 second WEndYou can of course adjust the Sleep to whatever is appropriate.I was hoping you would understand enough from my first post to determine that. Edited July 9, 2015 by TheSaint Make sure brain is in gear before opening mouth! Remember, what is not said, can be just as important as what is said. Spoiler What is the Secret Key? Life is like a Donut If I put effort into communication, I expect you to read properly & fully, or just not comment. Ignoring those who try to divert conversation with irrelevancies. If I'm intent on insulting you or being rude, I will be obvious, not ambiguous about it. I'm only big and bad, to those who have an over-active imagination. I may have the Artistic Liesense to disagree with you. TheSaint's Toolbox (be advised many downloads are not working due to ISP screwup with my storage) Link to comment Share on other sites More sharing options...
aa2zz6 Posted September 18, 2015 Author Share Posted September 18, 2015 Thanks the information was very helpful. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now