diff --git a/profiler.py b/profiler.py index 8c1462c..31d73d9 100644 --- a/profiler.py +++ b/profiler.py @@ -353,7 +353,12 @@ class Profiler(object): self.hhp = HandHeldPath() self.ramses = Ramses() self.info_dict = {} - self.res = {} # 最终结果{lsky: esky: lwater: Lw: Rs:} + self.res = {} # 最终结果{ld: esky: lu: Lw: Rs:} + self.depth_m_offset = 0.0 + self.depth_m = 0.0 + self.tilt_x = 0.0 + self.tilt_y = 0.0 + self.depth_tilt_x_y = [] # [ {"depth":, "tilt_x": ,"tilt_y": }] # 方法 self.setDeviceEnum() @@ -440,38 +445,38 @@ class Profiler(object): # self.printTest(self.filelist) pass - # def dealAllMeasurements(self, ): - # log.info(f" 所有测量文件", __name__, "dealAllMeasurements", ) - # if len(self.filelist)<1: - # pass - # # 前面已经考虑各种文件错误 - # for df in self.filelist: - # # 处理信息帧 - # self.info_dict = {} - # self.info_path_fname:Path = df["info_path"] - # self.sensor_path_fname:Path = df["sensor_path"] - # hex_info = self.read_bin( self.info_path_fname ) - # try: - # self.info_dict = self.decode_info( hex_info ) - # except: - # log.error( f"处理信息文件" - # + "/" +self.info_path_fname.stem - # + "出现错误", __name__, "dealAllMeasurements" ) - # raise MyException( "处理文件"+ self.info_path_fname + "出现错误") - # pass + def dealAllMeasurements(self, ): + log.info(f" 所有测量文件", __name__, "dealAllMeasurements", ) + if len(self.filelist)<1: + pass + # 前面已经考虑各种文件错误 + for df in self.filelist: + # 处理信息帧 + self.info_dict = {} + self.info_path_fname:Path = df["info_path"] + self.sensor_path_fname:Path = df["sensor_path"] + hex_info = self.read_bin( self.info_path_fname ) + try: + self.info_dict = self.decode_info( hex_info ) + except: + log.error( f"处理信息文件" + + "/" +self.info_path_fname.stem + + "出现错误", __name__, "dealAllMeasurements" ) + raise MyException( "处理文件"+ self.info_path_fname + "出现错误") + pass - # try: # awrams每次只有一组数据 - # self.dealOneMeasurement(self.sensor_path_fname ) - # # self.measurement_interval = int(self.info_dict['Measure_Interval']) - # # self.measurement_repeat = int(self.info_dict['Measure_Repeat']) - # # self.dealOneHandheldMeasurement(self.sensor_path_fname ) - # except Exception as e: - # log.error( "处理传感器文件" + self.sensor_path_fname.name + " 出现错误",__name__,"dealAllMeasurements") - # raise MyException( "处理传感器文件" + self.sensor_path_fname.name + " 出现错误" ) - # pass - # log.info(f"Finished !! ", __name__, "dealAllMeasurements") - # return True,self.error_result - # pass + try: # awrams每次只有一组数据 + self.dealOneMeasurement(self.sensor_path_fname ) + # self.measurement_interval = int(self.info_dict['Measure_Interval']) + # self.measurement_repeat = int(self.info_dict['Measure_Repeat']) + # self.dealOneHandheldMeasurement(self.sensor_path_fname ) + except Exception as e: + log.error( "处理传感器文件" + self.sensor_path_fname.name + " 出现错误",__name__,"dealAllMeasurements") + raise MyException( "处理传感器文件" + self.sensor_path_fname.name + " 出现错误" ) + pass + log.info(f"Finished !! ", __name__, "dealAllMeasurements") + return True,self.error_result + pass # def dealOneMeasurement_Handheld(self, fpath:Path): # '''handheld一次测量包含多组数据''' @@ -538,6 +543,7 @@ class Profiler(object): hex_info = self.read_bin( info_path ) try: self.info_dict = self.decode_info( hex_info ) + self.depth_m_offset = self.info_dict['Depth'] except: log.error( f"处理信息文件" + "/" +self.info_path_fname.stem @@ -555,7 +561,11 @@ class Profiler(object): self.output_path = OUTPUT_DIR.joinpath( self.ymdhms) log.warning(f"current_measure_time: {self.current_measure_time}", __name__, "dealOneMeasurement_Profiler") - + + # 获得真实波长 + self.real_wavelength = self.getWavelenthDict() + + # 读取数据 buf self.hhb.readFile2Buf(sensor_path) log.debug(f"buf: {self.hhb.get_buf_size()}", __name__, "dealOneMeasurement_Profiler") self.decode_sensor_buf() @@ -567,6 +577,8 @@ class Profiler(object): self.res = {} return # 返回退出 + + # 剖面 - 校正文件要用水的,计算深度值 ?? # group_num = int(len_total/self.measurement_repeat) @@ -699,6 +711,39 @@ class Profiler(object): + str(self.info_dict['second']) return ymdhms + def decode_sensor_buf_profiler(self,) : + # 处理Buf,对多组数据取平均, + self.intensity_before_avg = [] + # res_before_avg = [] + self.clearRes() # 清空数据 + while True: + if not self.hhb.decode_one_group_handheld() : + break # 清空数据 + + res = {} + ip_buf = self.hhb.one_group_data[:26] + buf = self.hhb.one_group_data[26:] + for i in range(1,4,1): + temp_buf = buf[7:71] + buf[79:143] + \ + buf[151:215] + buf[223:287] + \ + buf[295:359] + buf[367:431] + \ + buf[439:503] + buf[511:575] + + # Ramses类 标定处理,设置buf 标定文件 + self.ramses.setBuf(temp_buf) + func = self.getFuncBySeq(i) + cfg = self.getCfgByFunc( func) + self.ramses.setCalCfg(cfg) + self.ramses.resetItSpectrum() + self.ramses.ConvertAndCalibrate() + res.update({ func : self.ramses.spectrum }) + + # 处理 深度倾斜 数据 + self.decode_ip_buf(ip_buf) + + self.intensity_before_avg.append( res ) + pass + def decode_sensor_buf(self,) : # 处理Buf,对多组数据取平均 self.intensity_before_avg = [] @@ -727,6 +772,14 @@ class Profiler(object): self.intensity_before_avg.append( res ) pass + def decode_ip_buf( self,buf) : + '''Ed校正文件去处理数据''' + depth_m = 0.0 + tilt_x = 0.0 + tilt_y = 0.0 + self.depth_tilt_x_y.append( {"depth":depth_m, "tilt_x":tilt_x ,"tilt_y":tilt_y } ) + pass + def getAvg( self, d:list) : log.info(f"getAvg: 平均多组数据", __name__, "getAvg") data = d