From: dxy15521469561 <1731678236@qq.com> Date: Fri, 11 Aug 2023 09:13:45 +0000 (+0800) Subject: 童信协议对接 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=adce67db4ccd7b82dbcff7fb4fadcbe699dd9bd7;p=mirrors%2FASR1603_G5.git 童信协议对接 --- diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appWechat.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appWechat.py index 4f55d3bd..2d720bf2 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appWechat.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appWechat.py @@ -71,7 +71,7 @@ wechat_press_btn.set_style_radius(30,0) wechat_press_label = lv.label(wechat_screen) wechat_press_label.set_text("请按住说话") -wechat_press_label.set_size(240, 56) +wechat_press_label.set_size(240, 38) wechat_press_label.set_pos(0,282) wechat_press_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0) wechat_press_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT) @@ -662,47 +662,65 @@ class TK_ProtoCol(ProtoCol): def send(self, event, msg): - # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据] - #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据] - arm_data = msg[1] - arm_sec = msg[0] - Wechat_log("TK_ProtoCol:msgtype:{} arm_sec:{}".format(type(msg),arm_sec)) - - arm = bytearray() - for i in range(len(arm_data)): - if arm_data[i] == 0x7d: - arm.extend(b'\x7d\x01') - elif arm_data[i] == 0x5b : - arm.extend(b'\x7d\x02') - elif arm_data[i] == 0x5d : - arm.extend(b'\x7d\x03') - elif arm_data[i] == 0x2c : - arm.extend(b'\x7d\x04') - elif arm_data[i] == 0x2a : - arm.extend(b'\x7d\x05') - else : - arm.append(arm_data[i]) - - datalen = len(arm) + 4+len(str(arm_sec))+1 - #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) - send_data = bytearray("SZKW*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec)) - send_data.extend(arm) - MD5_SIGN = self.pack_MD5_head(send_data) - data = bytearray('[') - data.extend(MD5_SIGN) - data.extend(send_data) - data.extend(']') - EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + # print("TK send:{}".format(msg)) + if len(str(msg)) == 1: + + len_size = len(str(msg))+len("TKS,") + # 实例:[XT*334588000000156*0009*TK,1] + send_data = self.PID+"*%s*%04X*TKS"%(self.imei,len_size) + MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"TKS") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg) + print("TK:data:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) + + else: + # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据] + #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据] + arm_data = msg[1] + arm_sec = msg[0] + # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec)) + + arm = bytearray() + for i in range(len(arm_data)): + if arm_data[i] == 0x7d: + arm.extend(b'\x7d\x01') + elif arm_data[i] == 0x5b : + arm.extend(b'\x7d\x02') + elif arm_data[i] == 0x5d : + arm.extend(b'\x7d\x03') + elif arm_data[i] == 0x2c : + arm.extend(b'\x7d\x04') + elif arm_data[i] == 0x2a : + arm.extend(b'\x7d\x05') + else : + arm.append(arm_data[i]) + + datalen = len(arm) + 4+len(str(arm_sec))+1 + #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1)) + send_data = bytearray("SZKW*%s*%04X*TKS,%d,"%(self.imei,datalen,arm_sec)) + send_data.extend(arm) + MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,datalen,"TKS") + MD5_SIGN = self.pack_MD5_head(MD5_head_data) + data = bytearray('[') + data.extend(MD5_SIGN) + data.extend(send_data) + data.extend(']') + # print("TK:send data:%s MD5_head_data:%s"%(data,MD5_head_data)) + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + def recv(self, event, msg): """ - + ("TK_ProtoCol:datalen:{} {} {}".format(wechat_num,MXA_MSG,wechat_recode_list)) @param event: 微聊 @param msg: 接收到的下行数据 [SZKW*860132060004322*20BD*TK,#!AMR...] """ #Wechat_log("K_ProtoCol:recv:data:{}".format(msg)) + # print("TK recv:{}".format(msg)) msg_tmp = msg.decode('ascii') str = msg_tmp.split('TK,') # Wechat_log("TK_ProtoCol:recv:len:{} {} {}".format(len(msg),len(str),msg_tmp.find("#!AMR"))) @@ -762,6 +780,8 @@ class TK_ProtoCol(ProtoCol): if j >= len(arm_data): break fd.write(arm) + EventMesh.publish(constants.PROTOCOL.TK_SEND,1) + diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py index 2759bc8e..4673aa38 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py @@ -702,6 +702,7 @@ class DeviceInfoManager(Abstract): self.hsensor.activate() self.hsensor.init() self.hsensor.close() + self.old_temp_time = 0 # #print("hsensor.open_heart:%d\r\n"%(self.hsensor.open_heart())) print("DeviceInfoManager:3") self.i2c0 = I2C(I2C.I2C0, I2C.FAST_MODE) @@ -945,7 +946,7 @@ class DeviceInfoManager(Abstract): get_temp_state = EventMesh.publish("get_temp_state") hr_time = {} hr_time = EventMesh.publish("get_time_hr_spo2")#获取时间是否大于0 - if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1 and battery[0] != "1": + if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1 and battery[0] != "0": # print("get_temp_time:{} self.temp_one_state:{}".format(get_temp_time,self.temp_one_state)) if get_temp_time != None:#定时测量体温 if get_temp_time > 0: @@ -956,11 +957,11 @@ class DeviceInfoManager(Abstract): self.temp_state = 0 self.temp_time = time_tmp - if self.old_time != get_temp_time:#重复修改测量间隔时间 + if self.old_temp_time != get_temp_time:#重复修改测量间隔时间 self.temp_one_state = 0 self.temp_time = time_tmp#防止改变时间的时候正在开启测量突然10s就停止测量 self.temp_state = 0 - self.old_time = get_temp_time + self.old_temp_time = get_temp_time if (time_tmp-self.temp_time) == 0 and self.temp_state == 0:#一开始就测量 测量一分钟停止测量体温 self.temp_state = 1 @@ -1018,16 +1019,19 @@ class DeviceInfoManager(Abstract): else: self.temp_one_state = 0 self.temp_state = 0 + self.old_temp_time = 0 else: + self.old_temp_time = 0 + get_temp_end_state = EventMesh.publish("get_temp_state") if self.temp_state != 0: if self.temp_state == 2: self.temp_state = 0 EventMesh.publish(constants.EVENT.STOP_TEMP) - if get_temp_state == 0 or get_temp_state == 1: + if get_temp_end_state == 1: self.temp_one_state = 0 - if get_temp_state == 3:#单次测量 + if get_temp_end_state == 3:#单次测量 self.temp_one_state+=1 if self.temp_one_state == 1: print("AUTO one temp:2") @@ -1237,12 +1241,23 @@ class DeviceInfoManager(Abstract): EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据 self.HR_Onestate = 0 else: + if self.get_spo2_state == 2 or self.get_hr_state == 2:#单次测量 + if self.get_hr_state == 2: + EventMesh.publish("set_hr_state",0)#2代表后台进入血氧测试 + EventMesh.publish(constants.EVENT.STOP_HEART) + elif self.get_spo2_state == 2: + EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试 + EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) + self.HR_state = 0 self.HR_Onestate = 0 self.HR_OneTime = 0 + self.set_hsenor_crt = 0 else: #print("hr......01....{} {} self.HR_Onestate {} {}".format(self.get_hr_state,self.get_spo2_state,self.HR_OneTime,self.HR_Onestate)) self.SENSOR_time = time_tmp#进入最后一次的时间戳 + self.old_time = 0 + self.set_hsenor_crt = 0 if self.get_hr_state != 1 and self.get_spo2_state != 1:#没有设置间隔时间单次测量 if self.get_spo2_state == 3 or self.get_hr_state == 3:#单次测量 self.HR_state = 0 @@ -1326,9 +1341,20 @@ class DeviceInfoManager(Abstract): EventMesh.publish(constants.PROTOCOL.HEART_SEND,heart_value)#上传心率数据 self.HR_Onestate = 0 else: + if self.get_spo2_state == 2 or self.get_hr_state == 2:#单次测量 + if self.get_hr_state == 2: + EventMesh.publish("set_hr_state",0)#2代表后台进入血氧测试 + EventMesh.publish(constants.EVENT.STOP_HEART) + elif self.get_spo2_state == 2: + EventMesh.publish("set_spo2_state",0)#2代表后台进入血氧测试 + EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) self.HR_Onestate = 0 self.HR_OneTime = 0 + self.old_time = 0 + else: + self.old_temp_time = 0 + self.old_time = 0 if battery[0] == "1": get_hr_state = EventMesh.publish("get_hr_state") get_spo2_state = EventMesh.publish("get_spo2_state") @@ -2683,7 +2709,7 @@ class getSosFlagManager(Abstract):#设置sos def set_callnumer_cb(self, event, msg): self.callnumer = msg - self.call_timer.start(5000, 0, self.call_timer_cb)#延迟1S 继续拨打 + self.call_timer.start(10000, 0, self.call_timer_cb)#延迟10S 继续拨打 def call_timer_cb(self, *args, **kwargs): # print("call_timer_cb:{}".format(self.callnumer)) @@ -2890,7 +2916,7 @@ class testSmsSetIPManager(Abstract):# self.newip = "api.xcloudtech.com"#默认防走丢协议 self.newcom = 9000 # self.newmd5 = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP" - + print("config.json:{}".format(self.read_data)) # server_addr = "tcptest.tx.kidxin.com" # #SETIP:api.xcloudtech.com:9000 # server_port = 11500 diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/protocol.py index 6b1170bb..1f4443c1 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/protocol.py @@ -188,7 +188,7 @@ class SockManager(Abstract): def socket_send_queue_thread(self): while True: data = self.socket_send_queue.get() - print("TCP:send data1 len:{}".format(data)) + print("TCP:send data1 len:{}".format(len(data))) #print("ui_queue_thread:data = {}".format(data)) socketsta = self.sock.getsocketsta() @@ -868,7 +868,7 @@ class HEART_ProtoCol(ProtoCol): def send(self, event, msg): # [SZKW*334588000000156*len*heart,x] # print("HEART:send:{}".format(msg)) - len_size = len(str(msg))+6 + len_size = len(str(msg))+len("heart,") send_data = self.PID+"*%s*%04X*heart"%(self.imei,len_size) MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"heart") MD5_SIGN = self.pack_MD5_head(MD5_head_data) @@ -890,7 +890,7 @@ class OXYGEN_ProtoCol(ProtoCol): def send(self, event, msg): # [SZKW*334588000000156*len*heart,x] # print("oxstart:send:{}".format(msg)) - len_size = len(str(msg))+6 + len_size = len(str(msg))+len("oxygen,") send_data = self.PID+"*%s*%04X*oxygen"%(self.imei,len_size) MD5_head_data = self.PID+"*%s*%04X*%s"%(self.imei,len_size,"oxygen") MD5_SIGN = self.pack_MD5_head(MD5_head_data) @@ -951,7 +951,8 @@ class TEMP_ProtoCol(ProtoCol): def send(self, event, msg): # [SZKW*334588000000156*len*heart,x] # print("temp:send:{}".format(msg)) - len_size = len(str(msg))+5 + len_size = len(str(msg[0]))+len("temp,")+1+len(str(msg[1])) + print("temp:send:{} len:{}".format(msg,len_size)) # 实例:[XT*334588000000156*0009*temp,36.2] # 代表终端的温度为:36.2 # 平台回复: