童信协议对接
authordxy15521469561 <1731678236@qq.com>
Fri, 11 Aug 2023 09:13:45 +0000 (17:13 +0800)
committerdxy15521469561 <1731678236@qq.com>
Fri, 11 Aug 2023 09:13:45 +0000 (17:13 +0800)
2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/appWechat.py
2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/protocol.py

index 4f55d3b..2d720bf 100644 (file)
@@ -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)
+
             
             
             
index 2759bc8..4673aa3 100644 (file)
@@ -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
index 6b1170b..1f4443c 100644 (file)
@@ -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
         # 平台回复: