diff --git a/cm700reader.py b/cm700reader.py index 925f197..598d885 100644 --- a/cm700reader.py +++ b/cm700reader.py @@ -138,22 +138,23 @@ # CSVファイルに保存 @staticmethod - def save_csv(data, header): + def save_csv(data, header, filename=""): # 保存ファイル名の生成 - datestr = datetime.datetime.now().strftime("%m%d") - filename = "" - for i in range(2, 6): - for ab in ["a", "b"]: - fn = f"tcc6-{i}_{datestr}{ab}.csv" - if (filename == "") and (not os.path.exists(fn)): - filename = fn - infn = input(f"csv保存ファイル名( '{filename}' はenter, 'q'で保存しない) >") - if infn == "q": - return - if len(infn) > 0: - filename = infn - if len(filename) < 1: - return + if filename == "": + datestr = datetime.datetime.now().strftime("%m%d") + filename = "" + for i in range(2, 6): + for ab in ["a", "b"]: + fn = f"tcc6-{i}_{datestr}{ab}.csv" + if (filename == "") and (not os.path.exists(fn)): + filename = fn + infn = input(f"csv保存ファイル名( '{filename}' はenter, 'q'で保存しない) >") + if infn == "q": + return + if len(infn) > 0: + filename = infn + if len(filename) < 1: + return # csv保存 np.savetxt( @@ -214,26 +215,48 @@ self.save_csv(data, header) # Dobotを使った計測 - def dobot_measurement(self): - self.mesuring_condition() + def dobot_measurement(self, filename=""): + if filename == "": + self.mesuring_condition() self.dobot = DobotMeasurer() self.move_next(0) # Move to the first position data = [] num_samples = len(config.CC_XY) - # num_samples = 3 + num_samples = 3 for i in range(num_samples): print("\r", "%3d/%3d" % (i + 1, num_samples), end="") self.measurement(data, i + 1 if i < num_samples - 1 else -1) - winsound.Beep(800, 1000) + if filename == "": + winsound.Beep(800, 1000) self.dobot.up(wait=True) self.dobot = None # Close the Dobot connection if len(data) > 0: header = "no,X,Y,Z,L*,a*,b*," + (",".join(map(str, self.wl))) - self.save_csv(data, header) + self.save_csv(data, header, filename) + + # Dobotを使った繰り返し計測 + def repeat_dobot(self): + self.mesuring_condition() + + num_samples = int(input("測定回数>")) + interval_min = float(input("間隔(分)>")) + + for i in range(num_samples): + start_time = time.time() + datestr = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") + print(f"\nDobot計測開始 {i + 1}/{num_samples} {datestr}") + self.dobot_measurement(f"dobot_{i + 1}_{datestr}.csv") + datestr = datetime.datetime.now().strftime("%Y%m%d_%H%M%S") + print(f"Dobot計測終了 {i + 1}/{num_samples} {datestr}") + + wait_sec = start_time + interval_min * 60 - time.time() + if i < num_samples - 1 and wait_sec > 0: + print(f"次の計測まで{wait_sec // 60}分待機します") + time.sleep(wait_sec) # Dobotを使って次の位置へ移動 def move_next(self, idx): @@ -318,7 +341,8 @@ print("2. 一部の本体データを取得") print("3. 手動計測") print("4. インターバル計測") - print("5. Dobot制御計測") + print("5. Dobot制御 単回計測") + print("6. Dobot制御 繰り返し計測") print("0. 終了") n = input("選択>") @@ -332,6 +356,8 @@ cm700d.interval_measurement() elif n == "5": cm700d.dobot_measurement() + elif n == "6": + cm700d.repeat_dobot() else: break