Question #214163 on Sikuli changed:
https://answers.launchpad.net/sikuli/+question/214163

RaiMan proposed the following answer:
-- no, you just have to believe it ;-)

here is the java code that scans:

    boolean repeat(double timeout) throws Exception {

      int MaxTimePerScan = (int) (1000.0 / Settings.WaitScanRate);
      long begin_t = (new Date()).getTime();
      do {
        long before_find = (new Date()).getTime();
        run(); // the search 
        if (ifSuccessful()) {
          return true; // return if found
        } else if (timeout < MaxTimePerScan) {
          return false; // return immediately if not found and short timeout 
        }

        long after_find = (new Date()).getTime();
        if (after_find - before_find < MaxTimePerScan) {
          // wait until time give by scan rate is exceeded
          getScreen().getActionRobot().delay((int) (MaxTimePerScan - 
(after_find - before_find)));
        } else {
          getScreen().getActionRobot().delay(10);
        }
      } while (begin_t + timeout * 1000 > (new Date()).getTime()); // loop 
until timeout

      return false;
    }

--- But if you want full control:

use exists(image, 0), which searches only once.

def myScanner(img, max, scan):
    maxTime = max # seconds
    scanTime = scan # seconds
    endTime = time.time() + maxTime
    while time.time < maxTime:
        start = time.time()
        if exists(image, 0): return getLastMatch()
        used = time.time - start
        if used < scanTime: wait(scanTime-used)
    return None

usage:
if myScanner("some-image.png", 60, 5): print "found"
else: print "not found"

You received this question notification because you are a member of
Sikuli Drivers, which is an answer contact for Sikuli.

_______________________________________________
Mailing list: https://launchpad.net/~sikuli-driver
Post to     : sikuli-driver@lists.launchpad.net
Unsubscribe : https://launchpad.net/~sikuli-driver
More help   : https://help.launchpad.net/ListHelp

Reply via email to