From 1eca9ea774bd21fd6f0a2279ebe976b0d48782d9 Mon Sep 17 00:00:00 2001 From: esea_info Date: Thu, 13 Apr 2023 09:36:04 +0800 Subject: [PATCH] tcp_handheld.py --- handheld.py | 18 ++++--- tcp_handheld.py | 133 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+), 8 deletions(-) create mode 100644 tcp_handheld.py diff --git a/handheld.py b/handheld.py index 88b154d..b3789cd 100644 --- a/handheld.py +++ b/handheld.py @@ -317,6 +317,8 @@ class Handheld(object): """ @description : 手持数据初始化 入口: dealOneMeasurement_Handheld() + 参考: 分组写成函数,一次测量多组数据分离出来。 + 保存: 按时间文件夹保存 """ self.device_type = DeviceType.AWRAMS.name self.device_enum = None @@ -345,13 +347,13 @@ class Handheld(object): self.measurement_interval = 0 self.measurement_repeat = 1 # self.sl2f = SaveList2File() - self.mydir = MyDir() - self.my_time = MyTime() - self.hhb = HandHeldBuf() - self.hhp = HandHeldPath() - self.ramses = Ramses() - self.info_dict = {} - self.res = {} # 最终结果{lsky: esky: lwater: Lw: Rs:} + self.mydir = MyDir() + self.my_time = MyTime() + self.hhb = HandHeldBuf() + self.hhp = HandHeldPath() + self.ramses = Ramses() + self.info_dict = {} + self.res = {} # 最终结果{lsky: esky: lwater: Lw: Rs:} # 方法 self.setDeviceEnum() @@ -480,7 +482,7 @@ class Handheld(object): except: log.error( f"处理信息文件" + "/" +self.info_path_fname.stem - + "出现错误", __name__, "dealAllMeasurements" ) + + "出现错误", __name__, "dealOneMeasurement_Handheld" ) raise MyException( "处理文件"+ self.info_path_fname + "出现错误") pass diff --git a/tcp_handheld.py b/tcp_handheld.py new file mode 100644 index 0000000..9f9d71b --- /dev/null +++ b/tcp_handheld.py @@ -0,0 +1,133 @@ +# tcp 客户端 模拟 发送 信息帧 数据帧 图片帧 + +import socket +import time + +# IP = "39.96.0.224" +IP = "127.0.0.1" +PORT = 7887 +ADDRESS = ( IP, PORT ) # 绑定地址 + +# 改数据 +class DataContent: + # 11 13 55 AA 02 00 00 11 00 00 00 4F 00 01 07 + info_frame = "11 13 55 AA 02 00 00 11 00 00 00 4F 00 01 07 1703140E313518565D1E51D55605CCE812068CDDC347D0239515000000000000000000000064000000000000000000000000000000000000000000F450F450F4500600000300000000000000000000" + + 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\ + 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 11 00 00 00 00 00 00 00" #0xFF + +class TcpHandheld(object): + def __init__(self ): + super(TcpHandheld, 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 (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'' + 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_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) + +if __name__ == '__main__': + # print( bytes.fromhex (DataContent.info_frame) ) + th = TcpHandheld() + th.connect() + + try : + while True: + th.send_info() + + th.send_data() + + time.sleep( 2) + except KeyboardInterrupt as e: + print(e) + + th.disconnect( ) + +