diff --git a/.gitignore b/.gitignore index 0f5a8cd..5dd1d99 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,5 @@ /build/ /*/__pycache__ *.log -/data/output/ \ No newline at end of file +/data/output/ +/server/ \ No newline at end of file diff --git a/awrams.py b/awrams.py index 50a2315..4d29546 100644 --- a/awrams.py +++ b/awrams.py @@ -16,7 +16,7 @@ import struct import numpy as np from pubsub import pub from pathlib import PurePath,Path -from myconfig import CURRENT_DIR,DATA_DIR,OUTPUT_DIR,NEWLINE,ROWFACTOR,SAVE_EXT_NAME,TOKEN +from myconfig import CURRENT_DIR,DATA_DIR,OUTPUT_DIR,SERVER_DIR,NEWLINE,ROWFACTOR,SAVE_EXT_NAME,TOKEN from myconfig import DeviceType,RamsesSURFACE,RamsesAWRAMS,RamsesPROFILE from tools.mylogger import log from tools.myexception import MyException @@ -53,7 +53,7 @@ class HandHeldBuf: return ret def write_buf(self, buf: bytes) -> None: - id = self.id + # id = self.id len = buf.__len__() # logging.info(f'Received ID:{id} Size:{len}') self.__buf = self.__buf+buf @@ -294,9 +294,11 @@ class HandHeldPath(object): 获得成对的info sensor 文件 [目录名,文件名,年月日,时间] ''' + log.info(f" === ", self.server_path, "getDataFileList_SERVER") self.filelist = [] - fs = self.server_path.glob( "*/*/*/*/info.bin" ) + fs = self.server_path.glob( "*/*/*/*/*/info.bin" ) for f in fs: + # print(f) error_file = {} if f.stat().st_size==0: error_file.update( {"path": f } ) @@ -307,59 +309,20 @@ class HandHeldPath(object): ## 获得全部bin文件 (info.bin (num).bin),不含 pic.bin current_path = f.parent bin_files = current_path.glob('*.bin') - bin_len = len(bin_files) res_files = [] - res_files.append( f) # 检查(num).bin 是否有遗漏 - for i in range(bin_len-1): - tmp_fpath = current_path.joinpath(str(i)+".bin") - if tmp_fpath.exists(): - res_files.append( tmp_fpath ) - else: - res_files =[] - break - + for bl in bin_files: + if bl.stem.isdigit(): + res_files.append(bl) + pass + if res_files != []: + res_files.append(f) self.filelist.append(res_files) pass - # def getDataFileList_SD(self, mode:int = 0 ): - # ''' - # 获得成对的info sensor 文件 - # [目录名,文件名,年月日,时间] - # ''' - # # ret = [] - # fs = self.data_path.glob( "*/*/info/*" ) - # for f in fs: - # error_file = {} - # if f.stat().st_size==0: - # error_file.update( {"path": f.name } ) - # error_file.update( {"error":"info file size is zero"} ) - # self.error_result.append(error_file) - # continue - # self.info_path_fname = f - # sensor_path = self.getSensorPathFromInfoPath( f ) - # # sensor_path = Path(sensor_purepath) - # # sensor 文件不存在 - # if not sensor_path.exists(): - # error_file.update( { "path" : f } ) - # error_file.update( {"error":"cannot find the sensor file "} ) - # self.error_result.append(error_file) - # continue - - # # sensor文件大小为0 - # if sensor_path.stat().st_size==0: - # error_file.update( { "path" : f } ) - # error_file.update( {"error" : "the file size of the sensor is zero' "} ) - # self.error_result.append(error_file) - # continue - - # self.setFilelist(f,sensor_path,mode=mode) - # # print(self.filelist) - # pass - def setFilelist(self, info_path:Path, sensor_path:Path): temp = {} temp.update( {"info_path" : info_path } ) @@ -476,9 +439,10 @@ class AWRAMS(object): ''' log.info(f" 服务器数据下载,二次处理", __name__, "getDataFiles_server", ) self.hhp.setMode( 1 ) + self.hhp.setServerPath( SERVER_DIR ) self.hhp.filelist = [] self.hhp.getDataFileList_SERVER( ) - self.filelist = self.hhp.getFilelist() + self.filelist = self.hhp.getFilelist() pass def dealAllMeasurements(self, ): @@ -536,18 +500,44 @@ class AWRAMS(object): raise MyException( "处理文件"+ self.info_path_fname + "出现错误") pass + # 0.bin 1.bin ... 多个文件 for i in range(len(df)-1): + fpath:Path = df[i] + stem = fpath.stem + if stem.isdigit( ) : + tmp_buf = fpath.read_bytes() + self.hhb.write_buf( tmp_buf ) + pass 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 + + # 将buf 处理成光强值 self.intensity_before_avg + self.decode_sensor_buf() + # 获得真实波长 self.real_wavelength + self.getRealWavelenthDict() + # 多组数据平均 self.intensity_after_avg + self.getAvg( self.intensity_before_avg ) + # 波长插值 self.res esky lsky lw + self.__do_sensor_dict_interpo() + # 获得输出目录路径 self.ymdhms + self.get_ymdhms() + # get Lw Rs + self.getLwRs() + # 保存 data info + self.saveOnefileForLskyEskyLwaterLwRS() + # 通知ui + self.__set_msg("data", {"tm":self.ymdhms, "res":self.res} ) + pub.sendMessage("update" , msg=self.msg) + + # 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 + self.__set_msg('notice', '处理文件完成') pub.sendMessage('update' , msg=self.msg) log.info(f"Finished !! ", __name__, "dealAllMeasurements") diff --git a/yiwinframe.py b/yiwinframe.py index b1de741..5127b3c 100644 --- a/yiwinframe.py +++ b/yiwinframe.py @@ -248,14 +248,6 @@ class YiwinFrame(wx.Frame): self.mythread.start() except Exception as e: log.error(e) - pass - - - # if self.awrams.dealAllMeasurements( ): - # self.onNotify("正在处理数据" ) - # self.statusBar.SetStatusText(u" 数据处理完成......", 0) - # self.onNotify("处理数据已经结束" ) - pass @@ -268,7 +260,7 @@ class YiwinFrame(wx.Frame): self.statusBar.SetStatusText("Pls get the cal info, and try again",0) pass - self.awrams.getDataFileList() + self.awrams.getDataFiles_server( ) self.awrams.setDeviceID(self.device_id) self.awrams.setRetrieve(self.retrieve) if self.syscfg != {}: @@ -281,7 +273,7 @@ class YiwinFrame(wx.Frame): # 处理数据 self.alterStatus_0(" 正在处理数据...." ) try: - self.mythread.set_task( self.awrams.dealAllMeasurements ) + self.mythread.set_task( self.awrams.dealAllMeasurements_Server ) self.mythread.start() except Exception as e: log.error(e)