加工前のシート検査プログラムをUSBカメラ(センサー)を選んで使えるように、Ver1.1にアップデートしてみた。
他の更新点は、ThreadPoolExecutorでのBEEP音の並列化処理。
if SPK==1:
beeps = [(440, 600)] #単位は Hz 値は 37 から 32767,ms
# ThreadPoolExecutorを使用して並列処理
with ThreadPoolExecutor(max_workers=3) as executor:
for frequency, duration in beeps:
executor.submit(play_beep, frequency, duration)
if __name__ == '__main__': が必要ないので追加は容易だった。
センサー選択は、セットプログラムで、こんな感じで選択する。
[sg.Text('カメラセンサー IMX298,IMX577,IMX179 要再起動')],
[sg.Slider((0, 2), IMX1, 1, orientation='h', key='SLIDER_IMX1', enable_events=True)],
フォーカス設定は初期値は200で、微調整設定。
[sg.Text('フォーカス設定 -40<>+40 :IMX298は無効')],
[sg.Slider((FCS-40, FCS+40), FCS, 2, orientation='h', key='SLIDER_FCS', enable_events=True)],
保存して、本プログラムで使用する。
elif event == 's': # 「s」キーが押されたら、環境設定をファイル保存
IMX1 = int(values['SLIDER_IMX1']) # カメラセンサースライダーIMX1の書き込み
VCAP1 = int(values['SLIDER_VCAP1']) # カメラ選択スライダーVCAP1の書き込み
FCS = int(values['SLIDER_FCS']) # カメラフォーカススライダーFCSの書き込み
EXP1 = int(values['SLIDER_EXP1']) # 露光時間スライダーEXP1の書き込み
TY1 = int(values['SLIDER_TY1']) # トリミングスライダーTY1の書き込み
TX1 = int(values['SLIDER_TX1']) # トリミングスライダーTX1の書き込み
TY2 = int(values['SLIDER_TY2']) # トリミングスライダーTY2の書き込み
TX2 = int(values['SLIDER_TX2']) # トリミングスライダーTX2の書き込み
DSP = int(values['SLIDER_DSP']) # 画面サイズスライダーDSPの書き込み
SPK = int(values['SLIDER_SPK']) # スピーカースライダーSPKの書き込み
if IMX1 == 0: # IMX298
CAY1 = 4656
CAX1 = 3496
DL = 2
elif IMX1 == 1: # IMX577
CAY1 = 4000
CAX1 = 3000
DL = 1
else: # IMX1=2,IMX179
CAY1 = 3264
CAX1 = 2448
DL = 0
env_vars[0] = ('IMX1',IMX1)
env_vars[1] = ('DL',DL)
env_vars[2] = ('VCAP1',VCAP1)
env_vars[3] = ('EXP1',EXP1)
env_vars[4] = ('TY1',TY1)
env_vars[5] = ('TX1',TX1)
env_vars[6] = ('TY2',TY2)
env_vars[7] = ('TX2',TX2)
env_vars[8] = ('DSP',DSP)
env_vars[9] = ('SPK',SPK)
env_vars[10] = ('FCS',FCS)
with open('C:/code/python/Ta2SInspectSeet/settings1.1.txt', 'w') as f:
for key, value in env_vars:
f.write(f"{key}={value}\n")
continue
IMX179は、フルサイズでは解像度的に目標の0.15mmを越え0.16mmとなるので、フルサイズでも0.14mm以内に収まるIMX577も検討中で、いつでも切り替えられるように事前に全面更新済みとした。
コメント
コメントを投稿