加工前のシート検査プログラムを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も検討中で、いつでも切り替えられるように事前に全面更新済みとした。

コメント

このブログの人気の投稿