実現したいこと
python3 ssm3Driver.py Get 'Sesame3' 'LockCurrentState' と実行すると画面内から取得した色に応じて標準出力をしたい
発生している問題・分からないこと
pullした時にprint()の中身以外の標準出力されるのが嫌で、https://qiita.com/zophos/items/2d3aee100eb4f17bd147
を参考にして書き直したコードを実行して以来、コードを元に戻しても標準出力がされなくなった。
引数から何まですべて同じつもりが、pullのログからprint()の中まで一つも出力されることなく終わる。
エラーメッセージ
error
1何もありませんでした
該当のソースコード
import sys import os import pathlib import cv2 import time def get_pixel_color(x, y): os.system('adb shell screencap -p /sdcard/screen.png') os.system('adb pull /sdcard/screen.png') # 画像を読み込む image = cv2.imread('./screen.png') # 特定のピクセル位置を定義 pixel = (x,y) # そのピクセルの色を取得 # OpenCVでは色がBGRの順で格納されているので、RGBに変換する必要がある場合は注意 b, g, r = image[pixel[1], pixel[0]] # RGB範囲を定義 # 2つのRGB範囲を定義 secured_min = (194, 64, 58) secured_max = (214, 84, 78) unsecured_min = (30, 164, 167) unsecured_max = (50, 184, 187) # 色が指定した範囲内にあるかどうかを判定 in_secured = secured_min[0] <= r <= secured_max[0] and secured_min[1] <= g <= secured_max[1] and secured_min[2] <= b <= secured_max[2] in_unsecured = unsecured_min[0] <= r <= unsecured_max[0] and unsecured_min[1] <= g <= unsecured_max[1] and unsecured_min[2] <= b <= unsecured_max[2] print (r, g, b) if in_secured: #print (0) return '0' elif in_unsecured: #print (1) return '1' else: #print (3) return '3' # adbから鍵の状態を読み取る。 def get_status(): chara = sys.argv[3] if chara == 'lockCurrentState': print(get_pixel_color(850, 380)) # 状態を変更し、statusを書き換える def set_status(): i = 0 chara = sys.argv[3] value = sys.argv[4] print(value) if chara == 'lockTargetState': while value != get_pixel_color(850, 380) and i < 5: os.system('adb shell input tap 850 385') i += 1 time.sleep(2) print('success') if __name__ == "__main__": get_status() if sys.argv[1] == 'Get': get_status() elif sys.argv[1] == 'Set': set_status() sys.exit()
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
・コード内で実行しているadbコマンドはコマンドライン上からは実行できている
・コマンドラインからpython3を起動してos.system('adb shell input tap 850 385')の一行だけを実行することもできている
補足
Ubuntu 22.04.4 LTS
Python 3.10.8
追記
実行時の環境は、初期ユーザの状態でssm3Driver.pyファイルがあるディレクトリで、python3 ssm3Driver.py Get 'Sesame3' 'LockCurrentState' と実行しています
回答2件
あなたの回答
tips
プレビュー