|  |  |  | # tcp Handheld 客户端 模拟  ,模拟数据打包
 | 
					
						
							|  |  |  | # 直接平一个小包测试数据 直接写tou
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import socket
 | 
					
						
							|  |  |  | import time
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # IP = "39.96.0.224"
 | 
					
						
							|  |  |  | IP = "127.0.0.1"
 | 
					
						
							|  |  |  | PORT = 7887
 | 
					
						
							|  |  |  | ADDRESS = ( IP, PORT )  # 绑定地址
 | 
					
						
							|  |  |  | INFO_HEADER = "111355AA020000250000004F000107"
 | 
					
						
							|  |  |  | DATA_HEADER = "11 13 55 AA 02 00 10 25 00 00 00  DA 06   02    07"
 | 
					
						
							|  |  |  | END_FRAME   = "11 13 55 AA 02 00 FF 25 00 00 00  00 00   00    00"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #  改数据
 | 
					
						
							|  |  |  | class DataContent:
 | 
					
						
							|  |  |  |     # 11 13 55 AA 0200  00       11 00 00 00  4F00   01    07 
 | 
					
						
							|  |  |  |     #             id   type-num     序号  17     字节数 包号  总
 | 
					
						
							|  |  |  |     info_frame = "1703140E313518565D1E51D55605CCE812068CDDC347D0239515000000000000000000000064000000000000000000000000000000000000000000F450F450F4500600000300000000000000000000"
 | 
					
						
							|  |  |  |     #    "1707070c161800000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0c000808e41778cf83df450f450f4500000000000000000000000000000131123600020000000524844557691e700cb054c054a05a10001"         
 | 
					
						
							|  |  |  |     sensor_frame =[       
 | 
					
						
							|  |  |  |         # 11 13 55 AA 02 00 10 11 00 00 00 DA 06 02 07
 | 
					
						
							|  |  |  |         '131123600020000000524844557691E700CB054C054A05A10001\
 | 
					
						
							|  |  |  |         23A000300700000A07FD062A073707440750074D074C07530759075A07610765076A07720790079107A407C3070709BE0AAC0ABF080F080808270849089E0880094F0BB70F2A1901\
 | 
					
						
							|  |  |  |         23A000300600005223CD28242B3830E235813BE9401B46675A3181C68D5C7916715D74C676617658742E71B26C9C674363DA5F1C5E0160F164DF66A262F85AD153764E4F4C014D01\
 | 
					
						
							|  |  |  |         23A00030050000EA4D8C4D314DF44D3C4FC250E453BA5E4486B8C5BCECC4D29A96436BFA56734E4B4A55473446364A845140582A5A9C55A54D91465440303C1B3FDE5783718E7001\
 | 
					
						
							|  |  |  |         23A00030040000DC565046C140F63D21392E32D12B5B28A226F3253525662366219E20DD1FB11E971DC51C2F1C901B921A6419C21882185818E418181B401DEC1C1D1A3917F71501\
 | 
					
						
							|  |  |  |         23A00030030000EE153316F516CA176E18B218CA18B118701845186A1730155913E51314153015E1146C1420147D13C11208128C1128113011BF121614DB12F70F3B0EE50D320E01\
 | 
					
						
							|  |  |  |         23A00030020000FD0D3C0D930C470C0D0CB80B710B1E0BCD0A920A560A1F0A000A140A460A3E0AD0097A096C095F092109B60870085F0834082B081C0808080B08DD07B907950701\
 | 
					
						
							|  |  |  |         23A000300100007007620755074A0740074C074607460748074A07500758075D0757074F0743075F0756075F0758074F073F07240745076207770756073F072A070907E606D60601\
 | 
					
						
							|  |  |  |         23A00030000000F3060F07250722072E07200703070B07EC06FF0619073E07590734071807190719070A07E106DD06F006EC061B072F073E073E07220725070B07F806C806DE0601\
 | 
					
						
							|  |  |  |         23A000300700000A07FD062A073707440750074D074C07530759075A07610765076A07720790079107A407C3070709BE0AAC0ABF080F080808270849089E0880094F0BB70F2A1901\
 | 
					
						
							|  |  |  |         23A000300600005223CD28242B3830E235813BE9401B46675A3181C68D5C7916715D74C676617658742E71B26C9C674363DA5F1C5E0160F164DF66A262F85AD153764E4F4C014D01\
 | 
					
						
							|  |  |  |         23A00030050000EA4D8C4D314DF44D3C4FC250E453BA5E4486B8C5BCECC4D29A96436BFA56734E4B4A55473446364A845140582A5A9C55A54D91465440303C1B3FDE5783718E7001\
 | 
					
						
							|  |  |  |         23A00030040000DC565046C140F63D21392E32D12B5B28A226F3253525662366219E20DD1FB11E971DC51C2F1C901B921A6419C21882185818E418181B401DEC1C1D1A3917F71501\
 | 
					
						
							|  |  |  |         23A00030030000EE153316F516CA176E18B218CA18B118701845186A1730155913E51314153015E1146C1420147D13C11208128C1128113011BF121614DB12F70F3B0EE50D320E01\
 | 
					
						
							|  |  |  |         23A00030020000FD0D3C0D930C470C0D0CB80B710B1E0BCD0A920A560A1F0A000A140A460A3E0AD0097A096C095F092109B60870085F0834082B081C0808080B08DD07B907950701\
 | 
					
						
							|  |  |  |         23A000300100007007620755074A0740074C074607460748074A07500758075D0757074F0743075F0756075F0758074F073F07240745076207770756073F072A070907E606D60601\
 | 
					
						
							|  |  |  |         23A00030000000F3060F07250722072E07200703070B07EC06FF0619073E07590734071807190719070A07E106DD06F006EC061B072F073E073E07220725070B07F806C806DE0601\
 | 
					
						
							|  |  |  |         23A000300700000A07FD062A073707440750074D074C07530759075A07610765076A07720790079107A407C3070709BE0AAC0ABF080F080808270849089E0880094F0BB70F2A1901\
 | 
					
						
							|  |  |  |         23A000300600005223CD28242B3830E235813BE9401B46675A3181C68D5C7916715D74C676617658742E71B26C9C674363DA5F1C5E0160F164DF66A262F85AD153764E4F4C014D01\
 | 
					
						
							|  |  |  |         23A00030050000EA4D8C4D314DF44D3C4FC250E453BA5E4486B8C5BCECC4D29A96436BFA56734E4B4A55473446364A845140582A5A9C55A54D91465440303C1B3FDE5783718E7001\
 | 
					
						
							|  |  |  |         23A00030040000DC565046C140F63D21392E32D12B5B28A226F3253525662366219E20DD1FB11E971DC51C2F1C901B921A6419C21882185818E418181B401DEC1C1D1A3917F71501\
 | 
					
						
							|  |  |  |         23A00030030000EE153316F516CA176E18B218CA18B118701845186A1730155913E51314153015E1146C1420147D13C11208128C1128113011BF121614DB12F70F3B0EE50D320E01\
 | 
					
						
							|  |  |  |         23A00030020000FD0D3C0D930C470C0D0CB80B710B1E0BCD0A920A560A1F0A000A140A460A3E0AD0097A096C095F092109B60870085F0834082B081C0808080B08DD07B907950701\
 | 
					
						
							|  |  |  |         23A000300100007007620755074A0740074C074607460748074A07500758075D0757074F0743075F0756075F0758074F073F07240745076207770756073F072A070907E606D60601\
 | 
					
						
							|  |  |  |         23A00030000000F3060F07250722072E07200703070B07EC06FF0619073E07590734071807190719070A07E106DD06F006EC061B072F073E073E07220725070B07F806C806DE0601',
 | 
					
						
							|  |  |  |         ]
 | 
					
						
							|  |  |  |  
 | 
					
						
							|  |  |  |     end_frame =  "11 13 55 AA 02 00 FF 25 00 00 00 00 00 00 00"        #0xFF       
 | 
					
						
							|  |  |  | class MyBuf:
 | 
					
						
							|  |  |  |     '''一次测量三个传感器数据打一个包'''
 | 
					
						
							|  |  |  |     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 pack_info_send(self,):
 | 
					
						
							|  |  |  |         length = 26
 | 
					
						
							|  |  |  |         ret = self.read_buf(length)
 | 
					
						
							|  |  |  |         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 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):
 | 
					
						
							|  |  |  |     def __init__(self ):
 | 
					
						
							|  |  |  |         super(TcpProfiler, self).__init__()
 | 
					
						
							|  |  |  |         self.flag = True
 | 
					
						
							|  |  |  |         self.delay_time = 15
 | 
					
						
							|  |  |  |         self.recv_times = 10
 | 
					
						
							|  |  |  |         self.head = b''
 | 
					
						
							|  |  |  |         self.socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
 | 
					
						
							|  |  |  |         self.socket.setblocking(True)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def connect(self,):
 | 
					
						
							|  |  |  |         print(f"== connect to server : {ADDRESS}")
 | 
					
						
							|  |  |  |         self.socket.connect( ADDRESS )        
 | 
					
						
							|  |  |  |  
 | 
					
						
							|  |  |  |     def disconnect(self,):
 | 
					
						
							|  |  |  |         self.socket.close(  )  
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def rcv(self,):
 | 
					
						
							|  |  |  |         recv_data = self.socket.recv( 1024 )
 | 
					
						
							|  |  |  |         if recv_data == self.head:
 | 
					
						
							|  |  |  |             self.flag =True
 | 
					
						
							|  |  |  |             time.sleep( 0.01 )       
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def send_rcv(self,buf):
 | 
					
						
							|  |  |  |         self.socket.send( buf )
 | 
					
						
							|  |  |  |         self.flag = False     
 | 
					
						
							|  |  |  |         self.head = buf[:15]
 | 
					
						
							|  |  |  |         # 当前接收到数据就不阻塞了,后加数据不对继续阻塞
 | 
					
						
							|  |  |  |         try:
 | 
					
						
							|  |  |  |             data = self.socket.recv(1024)
 | 
					
						
							|  |  |  |             if data != b'':
 | 
					
						
							|  |  |  |                 print("not empty")
 | 
					
						
							|  |  |  |                 print(data)
 | 
					
						
							|  |  |  |             if data==self.head:
 | 
					
						
							|  |  |  |                 print(f"recv.... {data}" )
 | 
					
						
							|  |  |  |                 self.flag = True
 | 
					
						
							|  |  |  |                 self.head = b''
 | 
					
						
							|  |  |  |                 time.sleep( 0.1 ) 
 | 
					
						
							|  |  |  |         except BlockingIOError as e:
 | 
					
						
							|  |  |  |             print(f" 阻塞 中断 ....")
 | 
					
						
							|  |  |  |         except KeyboardInterrupt as e:
 | 
					
						
							|  |  |  |             print(f" == ctrl +c , exit")
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def send_info(self,):
 | 
					
						
							|  |  |  |         buf = bytes.fromhex (INFO_HEADER+ DataContent.info_frame)
 | 
					
						
							|  |  |  |         self.flag = False     
 | 
					
						
							|  |  |  |         self.head = buf[:15]
 | 
					
						
							|  |  |  |         print(f"head ....{self.head.hex()}")
 | 
					
						
							|  |  |  |         self.send_rcv(buf)     
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def send_data(self,):
 | 
					
						
							|  |  |  |         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( len( DataContent.sensor_frame) ):
 | 
					
						
							|  |  |  |         #     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_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,):
 | 
					
						
							|  |  |  |         buf = bytes.fromhex (DataContent.end_frame)
 | 
					
						
							|  |  |  |         self.flag = False     
 | 
					
						
							|  |  |  |         self.head = buf[:15]
 | 
					
						
							|  |  |  |         print(f"head ....{self.head.hex()}")
 | 
					
						
							|  |  |  |         self.send_rcv(buf) 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     def send_protocol_head(self,):
 | 
					
						
							|  |  |  |         pass
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |  
 | 
					
						
							|  |  |  | if __name__ == '__main__':
 | 
					
						
							|  |  |  |     pass
 | 
					
						
							|  |  |  |     # print( bytes.fromhex (DataContent.info_frame) )
 | 
					
						
							|  |  |  |     th = TcpProfiler()
 | 
					
						
							|  |  |  |     th.connect()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     send_num = 10;
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     try : 
 | 
					
						
							|  |  |  |         th.send_info()
 | 
					
						
							|  |  |  |         print("send info frame...")
 | 
					
						
							|  |  |  |         time.sleep( 10)
 | 
					
						
							|  |  |  |     except KeyboardInterrupt as e:
 | 
					
						
							|  |  |  |         print(e)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     try : 
 | 
					
						
							|  |  |  |         th.send_data()
 | 
					
						
							|  |  |  |         print("send sensor frame...")
 | 
					
						
							|  |  |  |         time.sleep( 10)
 | 
					
						
							|  |  |  |     except KeyboardInterrupt as e:
 | 
					
						
							|  |  |  |         print(e)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     try : 
 | 
					
						
							|  |  |  |         th.send_end_frame()
 | 
					
						
							|  |  |  |         print("send end frame...")
 | 
					
						
							|  |  |  |         time.sleep( 10)
 | 
					
						
							|  |  |  |     except KeyboardInterrupt as e:
 | 
					
						
							|  |  |  |         print(e)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     th.disconnect(  )
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     # with open("info.bin","rb") as f:
 | 
					
						
							|  |  |  |     #     d = f.read()
 | 
					
						
							|  |  |  |     #     print(d.hex())
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | '''
 | 
					
						
							|  |  |  | 131123600020000000524844557691e700cb054c054a05a10001
 | 
					
						
							|  |  |  | 23a000300700000a07fd062a073707440750074d074c07530759075a07610765076a07720790079107a407c3070709be0aac0abf080f080808270849089e0880094f0bb70f2a190123a000300600005223cd28242b3830e235813be9401b46675a3181c68d5c7916715d74c676617658742e71b26c9c674363da5f1c5e0160f164df66a262f85ad153764e4f4c014d0123a00030050000ea4d8c4d314df44d3c4fc250e453ba5e4486b8c5bcecc4d29a96436bfa56734e4b4a55473446364a845140582a5a9c55a54d91465440303c1b3fde5783718e700123a00030040000dc565046c140f63d21392e32d12b5b28a226f3253525662366219e20dd1fb11e971dc51c2f1c901b921a6419c21882185818e418181b401dec1c1d1a3917f7150123a00030030000ee153316f516ca176e18b218ca18b118701845186a1730155913e51314153015e1146c1420147d13c11208128c1128113011bf121614db12f70f3b0ee50d320e0123a00030020000fd0d3c0d930c470c0d0cb80b710b1e0bcd0a920a560a1f0a000a140a460a3e0ad0097a096c095f092109b60870085f0834082b081c0808080b08dd07b90795070123a000300100007007620755074a0740074c074607460748074a07500758075d0757074f0743075f0756075f0758074f073f07240745076207770756073f072a070907e606d6060123a00030000000f3060f07250722072e07200703070b07ec06ff0619073e07590734071807190719070a07e106dd06f006ec061b072f073e073e07220725070b07f806c806de060123a000300700000a07fd062a073707440750074d074c07530759075a07610765076a07720790079107a407c3070709be0aac0abf080f080808270849089e0880094f0bb70f2a190123a000300600005223cd28242b3830e235813be9401b46675a3181c68d5c7916715d74c676617658742e71b26c9c674363da5f1c5e0160f164df66a262f85ad153764e4f4c014d0123a00030050000ea4d8c4d314df44d3c4fc250e453ba5e4486b8c5bcecc4d29a96436bfa56734e4b4a55473446364a845140582a5a9c55a54d91465440303c1b3fde5783718e700123a00030040000dc565046c140f63d21392e32d12b5b28a226f3253525662366219e20dd1fb11e971dc51c2f1c901b921a6419c21882185818e418181b401dec1c1d1a3917f7150123a00030030000ee153316f516ca176e18b218ca18b118701845186a1730155913e51314153015e1146c1420147d13c11208128c1128113011bf121614db12f70f3b0ee50d320e0123a00030020000fd0d3c0d930c470c0d0cb80b710b1e0bcd0a920a560a1f0a000a140a460a3e0ad0097a096c095f092109b60870085f0834082b081c0808080b08dd07b90795070123a000300100007007620755074a0740074c074607460748074a07500758075d0757074f0743075f0756075f0758074f073f07240745076207770756073f072a070907e606d6060123a00030000000f3060f07250722072e07200703070b07ec06ff0619073e07590734071807190719070a07e106dd06f006ec061b072f073e073e07220725070b07f806c806de060123a000300700000a07fd062a073707440750074d074c07530759075a07610765076a07720790079107a407c3070709be0aac0abf080f080808270849089e0880094f0bb70f2a190123a000300600005223cd28242b3830e235813be9401b46675a3181c68d5c7916715d74c676617658742e71b26c9c674363da5f1c5e0160f164df66a262f85ad153764e4f4c014d0123a00030050000ea4d8c4d314df44d3c4fc250e453ba5e4486b8c5bcecc4d29a96436bfa56734e4b4a55473446364a845140582a5a9c55a54d91465440303c1b3fde5783718e700123a00030040000dc565046c140f63d21392e32d12b5b28a226f3253525662366219e20dd1fb11e971dc51c2f1c901b921a6419c21882185818e418181b401dec1c1d1a3917f7150123a00030030000ee153316f516ca176e18b218ca18b118701845186a1730155913e51314153015e1146c1420147d13c11208128c1128113011bf121614db12f70f3b0ee50d320e0123a00030020000fd0d3c0d930c470c0d0cb80b710b1e0bcd0a920a560a1f0a000a140a460a3e0ad0097a096c095f092109b60870085f0834082b081c0808080b08dd07b90795070123a000300100007007620755074a0740074c074607460748074a07500758075d0757074f0743075f0756075f0758074f073f07240745076207770756073f072a070907e606d6060123a00030000000f3060f07250722072e07200703070b07ec06ff0619073e07590734071807190719070a07e106dd06f006ec061b072f073e073e07220725070b07f806c806de
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1707070c161800000000000000000000000000000000000000000000000000000000000000000000000000000000000000e0c000808e41778cf83df450f450f4500000000000000000000000000000131123600020000000524844557691e700cb054c054a05a10001
 | 
					
						
							|  |  |  | '''
 |