profiler dataclass

server
esea_info 2 years ago
parent 1a036210ac
commit 5c933a78fa
  1. 206
      app.py
  2. 7
      data/2/37/2023_7_10_14_15_31.csv
  3. BIN
      data/2/37/info.bin
  4. BIN
      data/2/37/sensor.bin
  5. BIN
      data/2023/03/20/37/info.bin
  6. BIN
      data/2023/03/20/37/sensor.bin
  7. 795
      myRamses.py
  8. 1279
      profiler copy.py
  9. 1750
      profiler.py
  10. 95
      receive.py
  11. 1
      retrieve.yml
  12. 163
      tcp_profiler.py

206
app.py

@ -8,73 +8,183 @@ from myconfig import DEVICE_ID ,FILE_MARK,YAML_FILE_NAME,CURRENT_DIR,DATA_DIR,CA
from myconfig import BEGIN_WAVELENGTH,END_WAVELENGTH,INTERVAL,ROWFACTOR from myconfig import BEGIN_WAVELENGTH,END_WAVELENGTH,INTERVAL,ROWFACTOR
from Ramses import Ramses from Ramses import Ramses
from profiler import Profiler,ProfilerHandle
IP = "" IP = ""
PORT = 7887 PORT = 7887
ADDRESS = (IP, PORT) # 绑定地址 ADDRESS = (IP, PORT) # 绑定地址
if __name__ == "__main__": class MyApp(object):
log.info(f"******** HandHeld server initiate.... *********", __name__, "", "") def __init__(self,):
log.info(f"******** Awarms server initiate.... *********", __name__, "", "")
self.device_type = DeviceType.PROFILE.name
self.mycfg = MyConfig() # 传入 cfg retrieve 的yml文件
####################################### # 配置反演需要的参数 波长 间隔 , rowFactor
device_id = DEVICE_ID # 多个设备 self.retrieve = self.mycfg.get_retrieve() # 读retrieve.yml
device_type = DeviceType.PROFILE.name log.info(f"Retrieve: {self.retrieve}", __name__, "", "")
mycfg = MyConfig()
# 配置反演需要的参数 波长 间隔 # log.info(f"syscfg: {device}", __name__, "", "")
retrieve = mycfg.get_retrieve() self.mycfg.setDeviceType( DeviceType.PROFILE )
log.info(f"Retrieve: {retrieve}", __name__, "", "") self.sensor_cfg = self.mycfg.read_yaml() # 读config.yml, 多个device_id 配置
log.info(f"Current Device: {self.device_type} ", __name__, "", "")
log.info(f"Sensor cfg: {self.sensor_cfg}", __name__, "", "")
# log.info(f"syscfg: {device}", __name__, "", "")
mycfg.setDeviceType(device_type)
init_para = mycfg.read_yaml()
log.info(f"Current Device: {device_type} ", __name__, "", "")
log.info(f"Sensor: {init_para}", __name__, "", "")
cal_cfg = {} self.cal_cfg = {}
cfgr = Configuration( ) cfgr = Configuration( )
cfgr.setDeviceType(device_type) cfgr.setDeviceType(self.device_type)
cfgr.setSystemCfgDict(init_para) cfgr.setSystemCfgDict(self.sensor_cfg)
for k,v in init_para.items(): for k,v in self.sensor_cfg.items():
cfgr.setSystemCfgDict(v) cfgr.setSystemCfgDict(v)
try: try:
cfgr.getCalConfiguration() cfgr.getCalConfiguration()
except Exception as e: except Exception as e:
log.error(f"读取配置文件失败. \n {e}",__name__, "", "" ) log.error(f"读取配置文件失败. \n {e}",__name__, "", "" )
raise raise
log.info(f"v: {cfgr.configuration}", __name__, "", "") log.info(f"v: {cfgr.configuration}", __name__, "", "")
cal_cfg.update({k:cfgr.cal_configuration}) self.cal_cfg.update({k:cfgr.cal_configuration})
# log.warning(f"cal_cfg: {cal_cfg[2]}", __name__, "", "") log.debug(f"cal_cfg: {self.cal_cfg}", __name__, "", "")
log.warning( f"cal_cfg 2: {cal_cfg[2].keys()}", __name__, "", "") log.warning(f"cal_cfg 2: {self.cal_cfg[2].keys()}", __name__, "", "")
# log.warning( f"cal_cfg 2: {cal_cfg[2]}", __name__, "", "") # log.warning(f"cal_cfg 3: {self.cal_cfg[3].keys()}", __name__, "", "")
# log.warning( f"cal_cfg 3: {cal_cfg[3].keys()}", __name__, "", "") log.info(f"传感器配置文件读取成功", __name__, "", "")
log.info( f"传感器配置文件读取成功", __name__, "", "" )
# ???????????? pass
# 不同设备类型接收不同,修改receive.py
# 不同数据裂隙数据处理不同,修改AWRAMS.py
# 分支:服务器:处理不同的文件夹 awramse surface profile c
# 桌面: 服务器的, 读取标准trios文件处理的 -- 暂不考虑
# 启动接受服务器 def init_data_process(self, mode = 0):
log.info(f"启动接受服务器, IP: {IP} , Port:{PORT} ", __name__, "", "") ''' 多个handle '''
self.profiler_handle = { }
for k,v in self.cal_cfg.items():
ph = ProfilerHandle( deviceid=k, cfg=self.sensor_cfg[k], calcfg=v, rtv=self.retrieve)
self.profiler_handle.update( {k:ph} )
server_ = MyThreadingTCPServer(ADDRESS, MyServer, cfg=cal_cfg, retrieve = retrieve ) def run_server(self,):
# 启动接受服务器
log.info(f"启动接受服务器, IP: {IP} , Port:{PORT} ", __name__, "", "")
try: server_ = MyThreadingTCPServer(ADDRESS, MyServer, calcfg=self.cal_cfg, retrieve = self.retrieve ,profiler_handle=self.profiler_handle )
server_.serve_forever()
except KeyboardInterrupt:
log.warning(" Ctrl+C 退出主程序 ",__name__, "", "")
server_.server_close()
except Exception as e:
log.info(" 系统异常, 如下: \n ",__name__, "", "")
log.info(e)
try:
server_.serve_forever()
except KeyboardInterrupt:
log.warning(" Ctrl+C 退出主程序 ",__name__, "", "")
server_.server_close()
except Exception as e:
log.info(" 系统异常, 如下: \n ",__name__, "", "")
log.info(e)
pass
if __name__ == "__main__":
log.info(f"******** Yiwin Profiler server initiate.... *********", __name__, "", "")
app = MyApp()
app.init_data_process( )
app.run_server()
# IP = ""
# PORT = 7887
# ADDRESS = (IP, PORT) # 绑定地址
# device_id = DEVICE_ID # 多个设备
# device_type = DeviceType.PROFILE.name
# retrieve = {}
# cal_cfg ={}
# def get_sys_cfg():
# log.info(f"开始获得配置", __name__, "", "")
# device_id = DEVICE_ID # 多个设备
# device_type = DeviceType.PROFILE.name
# mycfg = MyConfig()
# # 配置反演需要的参数 波长 间隔
# retrieve = mycfg.get_retrieve()
# log.info(f"Retrieve: {retrieve}", __name__, "", "")
# # log.info(f"syscfg: {device}", __name__, "", "")
# mycfg.setDeviceType(device_type)
# init_para = mycfg.read_yaml()
# log.info(f"Current Device: {device_type} ", __name__, "", "")
# log.info(f"Sensor: {init_para}", __name__, "", "")
# cal_cfg = {}
# cfgr = Configuration( )
# cfgr.setDeviceType(device_type)
# cfgr.setSystemCfgDict(init_para)
# for k,v in init_para.items():
# cfgr.setSystemCfgDict(v)
# try:
# cfgr.getCalConfiguration()
# except Exception as e:
# log.error(f"读取配置文件失败. \n {e}",__name__, "", "" )
# raise
# log.info(f"v: {cfgr.configuration}", __name__, "", "")
# cal_cfg.update({k:cfgr.cal_configuration})
# # log.warning(f"cal_cfg: {cal_cfg[2]}", __name__, "", "")
# log.warning( f"cal_cfg 2: {cal_cfg[2].keys()}", __name__, "", "")
# # log.warning( f"cal_cfg 2: {cal_cfg[2]}", __name__, "", "")
# # log.warning( f"cal_cfg 3: {cal_cfg[3].keys()}", __name__, "", "")
# log.info( f"传感器配置文件读取成功", __name__, "", "" )
# def run_server():
# # 启动接受服务器
# log.info(f"启动接受服务器, IP: {IP} , Port:{PORT} ", __name__, "", "")
# server_ = MyThreadingTCPServer(ADDRESS, MyServer, cfg=cal_cfg, retrieve = retrieve )
# try:
# server_.serve_forever()
# except KeyboardInterrupt:
# log.warning(" Ctrl+C 退出主程序 ",__name__, "", "")
# server_.server_close()
# except Exception as e:
# log.info(" 系统异常, 如下: \n ",__name__, "", "")
# log.info(e)
# def deal_info_sensor_bin(infobin, sensor_bin):
# profiler = Profiler()
# profiler.setSyscfg( cal_cfg )
# profiler.setRetrieve(retrieve)
# profiler.setDeviceID(2)
# profiler.setMeasureID(37)
# path_tuple = ( "data", 2, 37 )
# profiler.setOldFolder( path_tuple )
# # profiler.getInfoDict( )
# # profiler.transferFromOldFolder()
# # profiler.deleteOldFolder()
# # profiler.dealOneMeasurement_Profiler(profiler.new_folder)
# profiler.dealOneMeasurement_Profiler(profiler.old_folder)
# log.info(f" Complete Dealing one group.")
# if __name__ == "__main__":
# log.info(f"******** HandHeld server initiate.... *********", __name__, "", "")
# get_sys_cfg()
# run_server()
# profiler = Profiler()
# profiler.setSyscfg( cal_cfg )
# profiler.setRetrieve(retrieve)
# profiler.setDeviceID(2)
# profiler.setMeasureID(37)
# path_tuple = ( "data", 2, 37 )
# profiler.setOldFolder( path_tuple )
# # profiler.getInfoDict( )
# # profiler.transferFromOldFolder()
# # profiler.deleteOldFolder()
# # profiler.dealOneMeasurement_Profiler(profiler.new_folder)
# profiler.dealOneMeasurement_Profiler(profiler.old_folder)
# log.info(f" Complete Dealing one group.")
# r= Ramses() # r= Ramses()

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

@ -18,8 +18,8 @@ from tools.mypath import MyDir
from tools.mylogger import log from tools.mylogger import log
from pathlib import Path,PurePath from pathlib import Path,PurePath
from myconfig import DATA_DIR,DeviceType from myconfig import DATA_DIR,DeviceType
from profiler import Profiler from profiler import Profiler,ProfilerHandle
# from myRamses import RamsesFactoryHandle,AirWater
IP = "" IP = ""
PORT = 7887 PORT = 7887
@ -42,8 +42,9 @@ conn_pool = []
# save_path = Path # save_path = Path
class MyTCPServer(TCPServer): class MyTCPServer(TCPServer):
def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True, cfg=None, retrieve=None): def __init__(self, server_address, RequestHandlerClass, bind_and_activate=True, cfg=None, calcfg=None, retrieve=None):
self.cfg = cfg self.cfg = cfg
self.calcfg = calcfg
self.retrieve = retrieve self.retrieve = retrieve
TCPServer.__init__(self, server_address, RequestHandlerClass, bind_and_activate=True ) TCPServer.__init__(self, server_address, RequestHandlerClass, bind_and_activate=True )
@ -185,33 +186,62 @@ class DealData:
def __init__(self) -> None: def __init__(self) -> None:
self.device_id = None self.device_id = None
self.devie_type = DeviceType.SURFACE.name self.devie_type = DeviceType.PROFILE.name
self.measure_id = None self.measure_id = None
self.cfg = {} self.cfg = {}
self.profiler = None self.calcfg = {}
self.profiler_hdl = None
pass pass
def deal(self, id: int, con: int, cfg:dict , retrieve) -> None: # 取字典中的 payload def deal(self, id: int, con: int, calcfg:dict , retrieve) -> None: # 取字典中的 payload
log.info(f" 接收到数据开始处理数据 device_id {id} ") log.info(f" 接收到数据开始处理数据 device_id {id} ")
self.device_id = id self.device_id = id
self.measure_id = con self.measure_id = con
if self.device_id is None: if self.device_id is None:
self.device_id = id self.device_id = id
if self.cfg == {}: if self.cfg == {}:
self.cfg = cfg self.cfg = calcfg
if self.calcfg == {}:
self.calcfg = calcfg
# self.cfg = cfg.get(self.device_id) # self.cfg = cfg.get(self.device_id)
if self.profiler is None: if self.profiler_hdl is None:
self.profiler = Profiler() ##处理数据 self.profiler_hdl = ProfilerHandle( self.device_id, self.cfg, self.calcfg, retrieve) ##处理数据
self.profiler.setSyscfg(self.cfg)
self.profiler.setRetrieve(retrieve) fpath = Path.cwd()
self.profiler.setDeviceID(self.device_id) infopath = fpath.joinpath( 'data',self.device_id,self.measure_id,'info.bin')
self.profiler.setMeasureID(self.measure_id) sensorpath = fpath.joinpath( 'data',self.device_id,self.measure_id,'sensor.bin')
path_tuple = ( "data", str(id), str(con) )
self.profiler.setOldFolder( path_tuple ) savedir = fpath.joinpath('data',self.device_id,self.measure_id )
self.profiler.getInfoDict( )
self.profiler.transferFromOldFolder() self.profiler_hdl.set_ramses_number(3)
self.profiler.deleteOldFolder() self.profiler_hdl.set_tilt_range(21.0)
self.profiler.dealOneMeasurement_Profiler(self.profiler.new_folder)
self.profiler_hdl.read_info_path(infopath)
self.profiler_hdl.profiler.reset_profiler()
self.profiler_hdl.profiler.data.set_wavelength( ) # 设置波长
self.profiler_hdl.profiler.get_depth_offset()
self.profiler_hdl.read_sensor_path(sensorpath)
self.profiler_hdl.profiler.get_Ed0_kd()
self.profiler_hdl.profiler.get_Lu0_Ku()
self.profiler_hdl.profiler.get_Lw_Rs(self.profiler_hdl.retrieve["n_t_square"])
self.profiler_hdl.profiler.save(savedir)
# self.profiler_hdl.read_info_path(infopath)
# self.profiler_hdl.read_sensor_path(sensorpath)
# self.profiler_hdl.profiler.process_profiler()
# self.profiler.setSyscfg(self.cfg)
# self.profiler.setRetrieve(retrieve)
# self.profiler.setDeviceID(self.device_id)
# self.profiler.setMeasureID(self.measure_id)
# path_tuple = ( "data", str(id), str(con) )
# self.profiler.setOldFolder( path_tuple )
# self.profiler.getInfoDict( )
# self.profiler.transferFromOldFolder()
# self.profiler.deleteOldFolder()
# self.profiler.dealOneMeasurement_Profiler(self.profiler.new_folder)
log.info(f" Complete Dealing one group.") log.info(f" Complete Dealing one group.")
# self.profiler.readOneFolder( ) # self.profiler.readOneFolder( )
@ -223,20 +253,22 @@ class DealData:
log.warning(f"not find file: {fpath} ") log.warning(f"not find file: {fpath} ")
return ret return ret
ret = fpath.read_bytes() ret = fpath.read_bytes()
# with open( fpath, 'rb') as file:
# ret = file.read()
# return ret
return ret return ret
pass pass
@staticmethod @staticmethod
def decode_info(info: bytes) -> dict: def decode_info(info: bytes) -> dict:
'''info 分为两部分 : 传感器部分, 深度 倾斜部分 '''
ret = {} ret = {}
try: try:
temp = struct.unpack( "<BBBBBBHHHHHHIIHHHHHBBBHHIfffIIIII", info ) temp = struct.unpack("<BBBBBBHHHHHHIIHHHHHBBBHHIfff \
HHHBHBHHHHH \
HHHHHHBBBBBBBBBBBBBB",
info)
except Exception as e: except Exception as e:
log.info( "decode info 有误, 收到info frame 字节有误" ) log.info( "decode info 有误, 收到info frame 字节有误" )
return ret return ret
time_ = "20"+f"{temp[0]:02d}" + "-" + f"{temp[1]:02d}" + "-" + f"{temp[2]:02d}" + " " \ time_ = "20"+f"{temp[0]:02d}" + "-" + f"{temp[1]:02d}" + "-" + f"{temp[2]:02d}" + " " \
+ f"{temp[3]:02d}" + ":" + f"{temp[4]:02d}" + ":" + f"{temp[5]:02d}" + f"{temp[3]:02d}" + ":" + f"{temp[4]:02d}" + ":" + f"{temp[5]:02d}"
ret.update({"time": time_}) ret.update({"time": time_})
@ -275,6 +307,20 @@ class DealData:
ret.update({"Measure_Num": temp[31]}) # 33 ret.update({"Measure_Num": temp[31]}) # 33
ret.update({"Measure_Interval": temp[32]}) # 34 ret.update({"Measure_Interval": temp[32]}) # 34
ret.update({"Measure_Repeat": temp[33]}) # 35 ret.update({"Measure_Repeat": temp[33]}) # 35
ret.update({"Byte11": temp[46]}) # 46
ret.update({"Byte12": temp[47]}) # 47
ret.update({"Byte13": temp[48]}) # 48
ret.update({"Byte14": temp[49]}) # 49
ret.update({"Byte15": temp[50]}) # 50
ret.update({"Byte16": temp[51]}) # 51
ret.update({"Byte17": temp[52]}) # 52
ret.update({"Byte18": temp[53]}) # 53
ret.update({"Byte19": temp[54]}) # 54
ret.update({"Byte20": temp[55]}) # 55
ret.update({"Byte21": temp[56]}) # 56
ret.update({"Byte22": temp[57]}) # 57
ret.update({"Byte23": temp[58]}) # 58
return ret return ret
pass pass
@ -368,6 +414,7 @@ class MyServer(socketserver.BaseRequestHandler):
def setup(self) -> None: def setup(self) -> None:
log.debug(f"retrieve {self.server.retrieve}",__name__, "", "" ) log.debug(f"retrieve {self.server.retrieve}",__name__, "", "" )
self.cfg =self.server.cfg self.cfg =self.server.cfg
self.calcfg =self.server.calcfg
self.retrieve =self.server.retrieve self.retrieve =self.server.retrieve
self.sk: socket.socket = self.request self.sk: socket.socket = self.request
self.sensor = illumination_sensor(self.request) self.sensor = illumination_sensor(self.request)
@ -436,7 +483,7 @@ class MyServer(socketserver.BaseRequestHandler):
if data_["packet_con"] == data_["packet_all"]: if data_["packet_con"] == data_["packet_all"]:
log.info(f'最后一帧数据已经收到并保存') log.info(f'最后一帧数据已经收到并保存')
# id 为传感器测量id ,con 测量序号 # id 为传感器测量id ,con 测量序号
self.dealData.deal(data_['id'], data_["con"], self.cfg, self.retrieve) self.dealData.deal(data_['id'], data_["con"], self.cfg,self.calcfg, self.retrieve)
pass pass
if time.time() - self.begin_time > TIMEOUT_SECOND: if time.time() - self.begin_time > TIMEOUT_SECOND:

@ -2,3 +2,4 @@ beginWL: 350
endWL: 950 endWL: 950
interval: 1 interval: 1
rowFactor: 0.026 rowFactor: 0.026
n_t_square: 0.543

@ -18,7 +18,7 @@ class DataContent:
# 11 13 55 AA 0200 00 11 00 00 00 4F00 01 07 # 11 13 55 AA 0200 00 11 00 00 00 4F00 01 07
# id type-num 序号 17 字节数 包号 总 # id type-num 序号 17 字节数 包号 总
info_frame = "1703140E313518565D1E51D55605CCE812068CDDC347D0239515000000000000000000000064000000000000000000000000000000000000000000F450F450F4500600000300000000000000000000" info_frame = "1703140E313518565D1E51D55605CCE812068CDDC347D0239515000000000000000000000064000000000000000000000000000000000000000000F450F450F4500600000300000000000000000000"
# "1707070c161800000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0c000808e41778cf83df450f450f4500000000000000000000000000000131123600020000000524844557691e700cb054c054a05a10001"
sensor_frame =[ sensor_frame =[
# 11 13 55 AA 02 00 10 11 00 00 00 DA 06 02 07 # 11 13 55 AA 02 00 10 11 00 00 00 DA 06 02 07
'131123600020000000524844557691E700CB054C054A05A10001\ '131123600020000000524844557691E700CB054C054A05A10001\
@ -138,6 +138,104 @@ class MyBuf:
return ret return ret
pass pass
class ProfilerBuf:
'''一次测量三个传感器数据打一个包'''
def __init__(self,) -> None:
self.__buf = b''
self.__head = {}
self.__begin_sign = b'\x23'
self.__end_sign = b'\x0D'
self.send_head = b'\x11\x13\x55\xAA'
self.send_id = 2 # 2byte 地位在前
self.send_type = 0 # info 0 data 1 pic 2
self.send_num = 0 # 一次测量最多十六次平均
self.send_con = 0 # 总的测量序号 4byte ,16次平均算几次?每次算一个
self.send_size = 0 #字节数 2byte
self.send_packet_con = 0
self.send_packet_all = 0
self.repeat = 0 # 依据这个拆包
self.groups = 0
self.state = 0
def readFile2Buf(self, fpath) -> None:
with open(fpath,"rb") as f:
self.__buf = f.read()
pass
pass
def read_buf(self, size: int) -> bytes:
if size > self.__buf.__len__():
return b''
ret = self.__buf[0:size]
self.__buf = self.__buf[size:]
return ret
def write_buf(self, buf: bytes) -> None:
len = buf.__len__()
# logging.info(f'Received ID:{id} Size:{len}')
self.__buf = self.__buf+buf
def get_buf_size(self) -> int:
return self.__buf.__len__()
def back_bytes(self, buf: bytes) -> None:
self.__buf = buf+self.__buf
def reset_head(self) -> None:
self.__head = {}
def reset_buf(self) -> None:
self.__buf = b''
def get_info_cnt(self, mode= 0, len=0) -> None:
ret = b''
if mode == 0:
ret = self.read_buf(len)
else:
ret = self.read_buf(len)
return ret
def pack_info_send(self,):
length = 26
ret = self.self.read_buf(26)
id = self.send_id.to_bytes(2, byteorder='little')
self.send_type = 0
type_num = (self.send_type *16 + self.send_num).to_bytes(1,byteorder='little' ) # ??
con = self.send_con.to_bytes(4, byteorder='little')
size = length.to_bytes(2, byteorder='little')
packet_con = self.send_packet_con.to_bytes(1,byteorder='little' )
packet_all = self.send_packet_all.to_bytes(1,byteorder='little' )
ret = self.send_head + id + type_num + con + size + packet_con + packet_all +ret
self.send_packet_con += 1
# 取重复次数和测量间隔
return ret
def pack_handheld_send(self,):
length = 26+576+576+576
ret = self.read_buf(length)
id = self.send_id.to_bytes(2, byteorder='little')
self.send_type = 1
type_num = self.send_type << 4 + self.send_num # ??
con = self.send_con.to_bytes(4, byteorder='little')
size = length.to_bytes(2, byteorder='little')
packet_con = self.send_packet_con.to_bytes(1,byteorder='little' )
packet_all = self.send_packet_all.to_bytes(1,byteorder='little' )
ret = self.send_head + id + type_num + con + size + packet_con + packet_all +ret
self.send_con+=1 # 总测量序号+1
self.send_num += 1 # 是平均中的第几次
self.send_packet_con += 1
return ret
pass
def pack_end_send(self,):
ret = b'\x11\x13\x55\xAA\x02\x00\xFF\x11\x00\x00\x00\x00\x00\x00\x00'
return ret
pass
class TcpProfiler(object): class TcpProfiler(object):
def __init__(self ): def __init__(self ):
super(TcpProfiler, self).__init__() super(TcpProfiler, self).__init__()
@ -181,7 +279,6 @@ class TcpProfiler(object):
except KeyboardInterrupt as e: except KeyboardInterrupt as e:
print(f" == ctrl +c , exit") print(f" == ctrl +c , exit")
def send_info(self,): def send_info(self,):
buf = bytes.fromhex (INFO_HEADER+ DataContent.info_frame) buf = bytes.fromhex (INFO_HEADER+ DataContent.info_frame)
self.flag = False self.flag = False
@ -189,7 +286,6 @@ class TcpProfiler(object):
print(f"head ....{self.head.hex()}") print(f"head ....{self.head.hex()}")
self.send_rcv(buf) self.send_rcv(buf)
def send_data(self,): def send_data(self,):
buf = b'' buf = b''
buf = bytes.fromhex (DATA_HEADER+ DataContent.sensor_frame[0]) buf = bytes.fromhex (DATA_HEADER+ DataContent.sensor_frame[0])
@ -205,6 +301,23 @@ class TcpProfiler(object):
# print(f"head ....{self.head.hex()} ") # print(f"head ....{self.head.hex()} ")
# self.send_rcv(buf) # self.send_rcv(buf)
def send_profiler_frame(self,num):
'''一次三个传感器数据作为一帧'''
buf = b''
buf = bytes.fromhex (DATA_HEADER+ DataContent.sensor_frame[0])
self.flag = False
self.head = buf[:15]
print(f"head ....{self.head.hex()}")
self.send_rcv(buf)
for i in range( num ):
i = i%256
print( "sensorframe..." )
buf = bytes.fromhex ( DataContent.sensor_frame[i] )
self.flag = False
self.head = buf[:15]
print(f"head ....{self.head.hex()} ")
self.send_rcv(buf)
def send_end_frame(self,): def send_end_frame(self,):
buf = bytes.fromhex (DataContent.end_frame) buf = bytes.fromhex (DataContent.end_frame)
self.flag = False self.flag = False
@ -212,23 +325,49 @@ class TcpProfiler(object):
print(f"head ....{self.head.hex()}") print(f"head ....{self.head.hex()}")
self.send_rcv(buf) self.send_rcv(buf)
def send_protocol_head(self,):
pass
if __name__ == '__main__': if __name__ == '__main__':
pass
# print( bytes.fromhex (DataContent.info_frame) ) # print( bytes.fromhex (DataContent.info_frame) )
tp = TcpProfiler() th = TcpProfiler()
tp.connect() th.connect()
try : send_num = 10;
while True:
tp.send_info()
tp.send_data() try :
th.send_info()
print("send info frame...")
time.sleep( 10)
except KeyboardInterrupt as e:
print(e)
tp.send_end_frame() try :
th.send_data()
print("send sensor frame...")
time.sleep( 10)
except KeyboardInterrupt as e:
print(e)
time.sleep( 10) try :
th.send_end_frame()
print("send end frame...")
time.sleep( 10)
except KeyboardInterrupt as e: except KeyboardInterrupt as e:
print(e) print(e)
tp.disconnect( ) th.disconnect( )
# with open("info.bin","rb") as f:
# d = f.read()
# print(d.hex())
'''
131123600020000000524844557691e700cb054c054a05a10001
23a000300700000a07fd062a073707440750074d074c07530759075a07610765076a07720790079107a407c3070709be0aac0abf080f080808270849089e0880094f0bb70f2a190123a000300600005223cd28242b3830e235813be9401b46675a3181c68d5c7916715d74c676617658742e71b26c9c674363da5f1c5e0160f164df66a262f85ad153764e4f4c014d0123a00030050000ea4d8c4d314df44d3c4fc250e453ba5e4486b8c5bcecc4d29a96436bfa56734e4b4a55473446364a845140582a5a9c55a54d91465440303c1b3fde5783718e700123a00030040000dc565046c140f63d21392e32d12b5b28a226f3253525662366219e20dd1fb11e971dc51c2f1c901b921a6419c21882185818e418181b401dec1c1d1a3917f7150123a00030030000ee153316f516ca176e18b218ca18b118701845186a1730155913e51314153015e1146c1420147d13c11208128c1128113011bf121614db12f70f3b0ee50d320e0123a00030020000fd0d3c0d930c470c0d0cb80b710b1e0bcd0a920a560a1f0a000a140a460a3e0ad0097a096c095f092109b60870085f0834082b081c0808080b08dd07b90795070123a000300100007007620755074a0740074c074607460748074a07500758075d0757074f0743075f0756075f0758074f073f07240745076207770756073f072a070907e606d6060123a00030000000f3060f07250722072e07200703070b07ec06ff0619073e07590734071807190719070a07e106dd06f006ec061b072f073e073e07220725070b07f806c806de060123a000300700000a07fd062a073707440750074d074c07530759075a07610765076a07720790079107a407c3070709be0aac0abf080f080808270849089e0880094f0bb70f2a190123a000300600005223cd28242b3830e235813be9401b46675a3181c68d5c7916715d74c676617658742e71b26c9c674363da5f1c5e0160f164df66a262f85ad153764e4f4c014d0123a00030050000ea4d8c4d314df44d3c4fc250e453ba5e4486b8c5bcecc4d29a96436bfa56734e4b4a55473446364a845140582a5a9c55a54d91465440303c1b3fde5783718e700123a00030040000dc565046c140f63d21392e32d12b5b28a226f3253525662366219e20dd1fb11e971dc51c2f1c901b921a6419c21882185818e418181b401dec1c1d1a3917f7150123a00030030000ee153316f516ca176e18b218ca18b118701845186a1730155913e51314153015e1146c1420147d13c11208128c1128113011bf121614db12f70f3b0ee50d320e0123a00030020000fd0d3c0d930c470c0d0cb80b710b1e0bcd0a920a560a1f0a000a140a460a3e0ad0097a096c095f092109b60870085f0834082b081c0808080b08dd07b90795070123a000300100007007620755074a0740074c074607460748074a07500758075d0757074f0743075f0756075f0758074f073f07240745076207770756073f072a070907e606d6060123a00030000000f3060f07250722072e07200703070b07ec06ff0619073e07590734071807190719070a07e106dd06f006ec061b072f073e073e07220725070b07f806c806de060123a000300700000a07fd062a073707440750074d074c07530759075a07610765076a07720790079107a407c3070709be0aac0abf080f080808270849089e0880094f0bb70f2a190123a000300600005223cd28242b3830e235813be9401b46675a3181c68d5c7916715d74c676617658742e71b26c9c674363da5f1c5e0160f164df66a262f85ad153764e4f4c014d0123a00030050000ea4d8c4d314df44d3c4fc250e453ba5e4486b8c5bcecc4d29a96436bfa56734e4b4a55473446364a845140582a5a9c55a54d91465440303c1b3fde5783718e700123a00030040000dc565046c140f63d21392e32d12b5b28a226f3253525662366219e20dd1fb11e971dc51c2f1c901b921a6419c21882185818e418181b401dec1c1d1a3917f7150123a00030030000ee153316f516ca176e18b218ca18b118701845186a1730155913e51314153015e1146c1420147d13c11208128c1128113011bf121614db12f70f3b0ee50d320e0123a00030020000fd0d3c0d930c470c0d0cb80b710b1e0bcd0a920a560a1f0a000a140a460a3e0ad0097a096c095f092109b60870085f0834082b081c0808080b08dd07b90795070123a000300100007007620755074a0740074c074607460748074a07500758075d0757074f0743075f0756075f0758074f073f07240745076207770756073f072a070907e606d6060123a00030000000f3060f07250722072e07200703070b07ec06ff0619073e07590734071807190719070a07e106dd06f006ec061b072f073e073e07220725070b07f806c806de
1707070c161800000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0c000808e41778cf83df450f450f4500000000000000000000000000000131123600020000000524844557691e700cb054c054a05a10001
'''
Loading…
Cancel
Save