UWSCについての質問:画像のカウント開始時に正確に反応できない理由

このQ&Aのポイント
  • UWSCの設定について質問させて頂きます。画面上に画像が現れた瞬間からカウントをスタートし、一定時間で左クリックを一回押すという処理を行いたいですが、現在はカウント開始前にUWSCの停止ボタンのポップアップが点滅しているため、画像が現れた瞬間に正確に反応できません。コンマ数秒の誤差ですが、より正確な処理を行いたいです。
  • プログラムについての知識がなく、この問題に行き詰まってしまっています。どのようにすれば画像のカウント開始時に正確に反応できるようになるのか、アドバイスを頂きたいです。
  • また、UWSCの設定や画像認識に関する知識についても教えていただけるとありがたいです。よろしくお願い致します。
回答を見る
  • ベストアンサー

UWSCについて

UWSCの設定について質問させて頂きます。 私がしたいのは、画面上に画像が現れた瞬間からカウントをスタートし、一定時間で左クリックを一回押すというものです。 現在は下記のように試しており、大体は思い通りなのですが、カウントスタート前にUWSCの停止ボタンのポップアップが点滅状態のため画像が現れた瞬間に反応できてないような感じです。 コンマ数秒でのことですがどうしても正確にしたいのです。 プログラムについての知識もなく行き詰まってしまいました。 どうか宜しくお願い致します。 while true if GETKEYSTATE(VK_ESC)then exit ifb CHKIMG("画像.bmp",0) BTN(LEFT,CLIK,10000) ENDIF WEND

  • tufu-
  • お礼率100% (1/1)

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

UWSCはずーと使ってませんのでいい加減な回答ですが SLEEPでは正確な時間が刻めなかったと思います。 BTN(LEFT,CLIK,10000) の行を視覚的に何かを表示させるかして、どの位ずれているか? を把握してみてはどうでしょうか? 待ち時間が長ければ、 GETTIMEと言う関数を使ってBTN関数の数秒前からSLEEPに切り替えるなんて事で SLEEPのズレを吸収できるのですが。 その他思いつく方法は、 CPUの使用率CPUUSERATE()を使って取得してCPUの消費量が少ない安定した時に 動作させるなどが使えたらズレが少なくなるかも知れません。

tufu-
質問者

お礼

回答ありがとうございます。 正確に計るのは難しそうですね。 スクリプトをループさせていると(応答なし)状態になることもあるためCPUに負荷をかけないでやってみたいと思います。 ありがとうございました!

関連するQ&A

  • UWSCについて

    UWSCでマクロを使い画像判断検索?をしたいのですが While true  // 繰り返し ここから if GETKEYSTATE(VK_ESC) then exit // Escapeキーでスクリプト停止 Ifb chkimg("aiueo.bmp") = true then // 画像判定 // ここから あった時 sleep(1) // 待ち時間 // ここまで あった時 // ここから なかった時 else  sleep(1) // 待ち時間 // ここから なかった時 BTN(LEFT,CLICK,74,60,1217) Endif // 画像判定 終了 wend //繰り返し ここまで これで画像ファイルの名前を uwsc_aiueo.uws にしてくださいとあったのでそのままファイル名に使ってるのですがうまくいってません。 初心者ですが教えていただけないでしょうか?

  • UWSCで画像が消えた場合に動作せるやり方

    ある画像 aaa.bmp だったとします この画像があるときは なにもせず なくなった場合(画像が消えるまで繰り返す)に ENTER ENTER と 押すようなスプリクト を 書いて頂けないでしょうか? While true if GETKEYSTATE(VK_ESC) then exit If ChkImg("aaa.bmp")=TRUE  ←画像があるとき? Ifb and ChkImg("aaa.bmp")=FALSE ←画像が消えた時? kbd(VK_ENTER) kbd(VK_ENTER) endif wend なんとか こんな感じまで 出来ました よろしくお願いいたします

  • UWSCのスクリプト作成について

    UWSC初心者です。 画像を判別して、見つけたらクリックするものを作りました。 while True   if GETKEYSTATE(VK_ESC) then exit   ifb CHKIMG("目標.bmp")          BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y)  endif sleep(2)  wend 目的は動きのある目標を認識してクリックしたいのですが、作り方が分からないので、とりあえず目標を画像判定で少しでもクリックできればと作りました。 でもやはり画像判定の場合は目標.bmpと一致でなければならないので、たまにしかクリックしてくれません。 なので、目標をいろいろな角度から画像保存し、数で攻めたいと思います。 目標.bmp→クリック ↓なし 目標1.bmp→クリック ↓なし 目標2.bmp→クリック というものを作りたいのですが、混乱してきて分からないので教えてください。

  • UWSCの画像認識について

    質問させていただきます ifb CHKIMG("画像.bmp",) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) endif これを複数の画像でやりたいときは ifb CHKIMG("画像.bmp",) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) endif ifb CHKIMG("画像.bmp",) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) endif のようにしないとだめなのでしょうか? それとも ifb CHKIMG("画像.bmp",) CHKIMG("画像.bmp",) CHKIMG("画像.bmp",) CHKIMG("画像.bmp",) BTN(LEFT, CLICK, G_IMG_X, G_IMG_Y) endif こんな感じにまとめる事はできるのでしょうか? 例として教えてもらえると助かります。 よろしくお願いします

  • UWSCのスクリプトについて

    画像Dを認識したら画面上に画像Bがあっても 処理Bを実行しない為にはどうしたら良いでしょうか。 -------- while True BTN(LEFT,click,150,10,110)   //処理A Sleep(2) ifb CHKIMG("A.bmp")    x=G_IMG_X            y=G_IMG_Y BTN(left,click,x,y,110) Sleep(1.5) endif Ifb ChkImg("B.bmp")       //処理B BTN(LEFT,click,1120,90,110) Sleep(1) KBD(VK_return,DOWN,30) endif ifb CHKIMG("C.bmp")      //処理C x=G_IMG_X            y=G_IMG_Y BTN(left,click,x,y,110) Sleep(1.5) wend --------

  • UWSCで任意ボタンをおした時 複数条件分岐

    UWSCでのプログラムの書き方についての質問です。 ある任意のボタンをおした時に指定した画像があるか確かめてあれば 指定した画像をクリックさせたい場合の方法を教えていただきたいです。 EScボタンをを押すまで無限ループ。 条件が複数あるのでIFを使いたいとかんがえています 任意のボタンを押したことで、指定した画像と一致するものがあるか確かめ、 一致した場合、指定した画像をクリックする。 それを沢山作りたい。 追加していきたい。 いくつまでの条件分岐ができるのかわからないし、 どのコマンドを使えば良いのかもわからず1年近く四苦八苦していました。 一般的条件分岐だとIF関数ですが、 もっと楽な方法があれば お手数ではございますが 解説付きでご教授のほどよろしくお願いします。 --------------------- WHILE !GETKEYSTATE(VK_ESC) //ESCを押すまでループ   if GETKEYSTATE(VK_y) then //yが押されたら BTN(LEFT,CLICK,g_img_x,g_img_y) //画像1をクリック    elseif GETKEYSTATE(VK_u) then //uが押されたら chkimg("画像2.bmp")=true BTN(LEFT,CLICK,g_img_x,g_img_y) //画像2をクリック elseif GETKEYSTATE(VK_t) then //tが押されたら chkimg("画像3.bmp")=true BTN(LEFT,CLICK,g_img_x,g_img_y) //画像3をクリック elseif GETKEYSTATE(VK_a) then //aが押されたら chkimg("画像4.bmp")=true BTN(LEFT,CLICK,g_img_x,g_img_y) //画像4をクリック elseif GETKEYSTATE(VK_w) then //wが押されたら chkimg("画像5.bmp")=true BTN(LEFT,CLICK,g_img_x,g_img_y) //画像5をクリック endif wend --------------------- 上記が 自分で書いたプログラムなのですが、 間違いだらけと承知の上 恥を忍んで重ね重ねご教授のほど よろしくお願い申し上げます

  • UWSCについて

    画像がAになったらその画像をクリックしてBに変わったらまたクリックするというのを作りたいのですがどうにもA画像の時にクリックが連打になってしまします どこが悪いのでしょうか? While True Ifb ChkImg("A.bmp",0) BTN(LEFT,CLICK,G_IMG_X+5,G_IMG_Y+5,80) ChkImg("B.bmp",0) BTN(LEFT,CLICK,G_IMG_X+5,G_IMG_Y+5,80) ENDIF WEND

  • UWSCのプログラミングついて教えてください。

    UWSCについてです。 私は、UWSCをまだ1週間ほどしか触っていない超初心者です。 下記のようなプログラミングを組みたいと思っているので、プログラミング初挑戦なので右も左も良く分かっていません。 UWSCのプログラミングに詳しい方助けてください。 私の組みたいプログラミングは ("A.BMP",0)を無制限ループしつつ、("B.BMP",0)は2時間おきにループしつつ、("C.BMP",0)を30分間に30回実行する 場合のプログラミングです。【3つ同時進行です。】 宜しくお願いします。 while True ifb CHKIMG("A.BMP",0) x=G_IMG_X // 画像の座標をxへ代入 y=G_IMG_Y // 画像の座標をyへ代入 BTN(LEFT, CLICK, x, y, 80) endif ifb CHKIMG("B.BMP",0) x=G_IMG_X // 画像の座標をxへ代入 y=G_IMG_Y // 画像の座標をyへ代入 BTN(LEFT, CLICK, x, y, 80) endif ifb CHKIMG("C.BMP",0) x=G_IMG_X // 画像の座標をxへ代入 y=G_IMG_Y // 画像の座標をyへ代入 BTN(LEFT, CLICK, x, y, 80) endif wend

  • uwscについて

    画像認識で質問があります。 画像Aがあった場合画像Aをクリックするのは出来るのですが 画像Aがあった場合画像Bをクリックする場合どのようにすればいいのでしょうか? IFB (CHKIMG("A.bmp")=TRUE) THEN SLEEP(0.3) //B、C出現までの間を調整 IFB (CHKIMG("B.bmp")=TRUE) THEN BTN(LEFT, CLICK, G_IMG_X, G_IMG_y) ELSEIF (CHKIMG("C.bmp")=TRUE) THEN BTN(LEFT, CLICK, G_IMG_X, G_IMG_y) ENDIF しらべてこのとおりやってみたら 最初のIFBに対してENDIFがないと言われてうまくいきません ちょっと調べたのですが分からなかったので助けてください

  • uwscでマクロ作成

    1画像Aが見つかったらそこをクリック×1 2画像Bが出てくるので画像Bをクリック×2 3ある座標をクリック×1 4再度画像Bをクリック×7 まったくの初心者ですが このようなマクロを作りたく思い作ってみたのですがまったくできません。。 if GETKEYSTATE(VK_ESC) then exit ifb CHKIMG("画像A",0) BTN(LEFT, CLICK, x, y, 80) ENDIF ifb CHKIMG("画像B",0) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT,CLICK,176,399,100) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) BTN(LEFT, CLICK, x, y, 80) ENDIF このような感じです  画像はペイントで切り取ったものを使い、uwsファイルと同じ所に入れていますが違う所で引っかかるようです。

専門家に質問してみよう