K01:
authordxy15521469561 <1731678236@qq.com>
Tue, 26 Dec 2023 09:40:40 +0000 (17:40 +0800)
committerdxy15521469561 <1731678236@qq.com>
Tue, 26 Dec 2023 09:40:40 +0000 (17:40 +0800)
图片压缩
D10:
心率随机值
D15按键

123 files changed:
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/EventMesh.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/Makefile
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/appWechat.py [deleted file]
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m_d15.py [new file with mode: 0644]
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/versions.py [new file with mode: 0644]
2.sdk/project/K01/usr/static/00_WM.png
2.sdk/project/K01/usr/static/01_WM.png
2.sdk/project/K01/usr/static/02_WM.png
2.sdk/project/K01/usr/static/03_WM.png
2.sdk/project/K01/usr/static/04_WM.png
2.sdk/project/K01/usr/static/0_BAT.png
2.sdk/project/K01/usr/static/0_weather.png
2.sdk/project/K01/usr/static/1_weather.png
2.sdk/project/K01/usr/static/2_weather.png
2.sdk/project/K01/usr/static/3_weather.png
2.sdk/project/K01/usr/static/DIAL_PREV01.png [deleted file]
2.sdk/project/K01/usr/static/IMAGE_APP_QR_CODE.png
2.sdk/project/K01/usr/static/IMAGE_BUTTON_DELKEY.png
2.sdk/project/K01/usr/static/IMAGE_BUTTON_DIAL.png
2.sdk/project/K01/usr/static/IMAGE_IDLE_SCREEN_ALARM_POPUP_02.png
2.sdk/project/K01/usr/static/IMAGE_NOTICE_CALL.png
2.sdk/project/K01/usr/static/IMAGE_NOTICE_NONE.png
2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY0_ICON.png
2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY1_ICON.png
2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY2_ICON.png
2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY3_ICON.png
2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY4_ICON.png
2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY5_ICON.png
2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY6_ICON.png
2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY7_ICON.png
2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY8_ICON.png
2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY9_ICON.png
2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_ALBUM.png
2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_CALL.png
2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_CAMERA.png
2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_CONTACTS.png
2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_FRIEND.png
2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_SETTINGS.png
2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_SMS.png
2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_TOOLS.png
2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_VIDEOCALL.png
2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_WECHAT.png
2.sdk/project/K01/usr/static/IMAGE_SECMENU_ALARM.png
2.sdk/project/K01/usr/static/IMAGE_SECMENU_COUNTDOWN.png
2.sdk/project/K01/usr/static/IMAGE_SECMENU_STEP.png
2.sdk/project/K01/usr/static/IMAGE_SECMENU_STOPWATCH.png
2.sdk/project/K01/usr/static/IMAGE_SECMENU_WEATHER.png
2.sdk/project/K01/usr/static/IMAGE_STEP.png
2.sdk/project/K01/usr/static/REDUCE_VOLUM_ICON.png
2.sdk/project/K01/usr/static/RED_RETURN_PNG.png
2.sdk/project/K01/usr/static/R_1.png
2.sdk/project/K01/usr/static/R_2.png
2.sdk/project/K01/usr/static/R_3.png
2.sdk/project/K01/usr/static/S_1.png
2.sdk/project/K01/usr/static/S_2.png
2.sdk/project/K01/usr/static/S_3.png
2.sdk/project/K01/usr/static/VOLUM_ADD_ICON.png
2.sdk/project/K01/usr/static/add_btn.png
2.sdk/project/K01/usr/static/album_delete.png
2.sdk/project/K01/usr/static/answer.png
2.sdk/project/K01/usr/static/bg.png
2.sdk/project/K01/usr/static/camera_album_btn.png
2.sdk/project/K01/usr/static/camera_btn.png
2.sdk/project/K01/usr/static/cancel_icon.png
2.sdk/project/K01/usr/static/charge_ing.png
2.sdk/project/K01/usr/static/degree.png
2.sdk/project/K01/usr/static/find_phone.png
2.sdk/project/K01/usr/static/hang_up.png
2.sdk/project/K01/usr/static/jia_icon.png
2.sdk/project/K01/usr/static/jing_icon.png
2.sdk/project/K01/usr/static/low_power.png
2.sdk/project/K01/usr/static/menu_app_qrcode.png
2.sdk/project/K01/usr/static/menu_bright.png
2.sdk/project/K01/usr/static/menu_calcut.png
2.sdk/project/K01/usr/static/menu_imei_qrcode.png
2.sdk/project/K01/usr/static/menu_poweroff.png
2.sdk/project/K01/usr/static/menu_restart.png
2.sdk/project/K01/usr/static/menu_restore.png
2.sdk/project/K01/usr/static/menu_upgrade.png
2.sdk/project/K01/usr/static/menu_version.png
2.sdk/project/K01/usr/static/menu_volume.png
2.sdk/project/K01/usr/static/menu_watch_switch.png
2.sdk/project/K01/usr/static/mpsignal1.png
2.sdk/project/K01/usr/static/mpsignal2.png
2.sdk/project/K01/usr/static/mpsignal3.png
2.sdk/project/K01/usr/static/mpsignal4.png
2.sdk/project/K01/usr/static/mpsignal5.png
2.sdk/project/K01/usr/static/off_icon.png
2.sdk/project/K01/usr/static/phnone_nine_icon.png
2.sdk/project/K01/usr/static/phone_seven_icon.png
2.sdk/project/K01/usr/static/play.png
2.sdk/project/K01/usr/static/poweroff_icon.png
2.sdk/project/K01/usr/static/pp_friend01.png
2.sdk/project/K01/usr/static/pp_friend02.png
2.sdk/project/K01/usr/static/pp_friend03.png
2.sdk/project/K01/usr/static/pp_friend04.png
2.sdk/project/K01/usr/static/reduce_btn.png
2.sdk/project/K01/usr/static/setting_power_restart.png
2.sdk/project/K01/usr/static/setting_poweroff.png
2.sdk/project/K01/usr/static/setting_poweroff_bg.png
2.sdk/project/K01/usr/static/stopwatch_play.png
2.sdk/project/K01/usr/static/stopwatch_reset.png
2.sdk/project/K01/usr/static/stopwatch_stop.png
2.sdk/project/K01/usr/static/time_down.png
2.sdk/project/K01/usr/static/time_finish.png
2.sdk/project/K01/usr/static/time_up.png
2.sdk/project/K01/usr/static/time_up1.png
2.sdk/project/K01/usr/static/time_up2.png
2.sdk/project/K01/usr/static/ui_setting.png
2.sdk/project/K01/usr/static/up_show_step.png
2.sdk/project/K01/usr/static/update.png
2.sdk/project/K01/usr/static/vbat_0.png
2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/versions.py [new file with mode: 0644]
2.sdk/project/S6/sdk/services/microPython/ports/quectel/core/versions.py [new file with mode: 0644]

index 266a629..7fe2bcf 100644 (file)
@@ -271,7 +271,7 @@ class SockManager(Abstract):
                 data = data + r
                 print("TCP recv: data:len:{}".format(len(data)))
                 
-                print("TCP recv: data:{}".format(data))
+                # print("TCP recv: data:{}".format(data))
                 if data[-1] != 0x5d and len(data)<20*1024: #']':
                     continue
                 self.connect_tmp = 1 #有数据,就认为是连接状态
index 0407f36..db63e80 100644 (file)
@@ -1214,13 +1214,7 @@ class DialingScreen(Screen):
             voiceCall.callEnd()
             EventMesh.publish("set_interrup_incall",0)
             EventMesh.publish("set_UI_high_priority",0)
-            
-            screen_NAME = EventMesh.publish("get_screen_NAME")
-            if screen_NAME != None:
-                if screen_NAME != "dialing_noplay_popup":
-                    EventMesh.publish("return_prev_screen")
-                
-       
+            EventMesh.publish("return_prev_screen")
 
     def Close(self):
         self.timer.stop()
index d8c05d5..e798b59 100644 (file)
@@ -2,8 +2,8 @@ import _thread
 import usys
 import versions
 
-
 model = "D10_"
+
 # model = "G10W_DT_YBX_"
 
 softversion = "{}{}".format(model,versions.Version)
index 771238d..702b211 100644 (file)
@@ -950,25 +950,17 @@ frozen_mpy_list =         $(BUILD)/_boot.mpy \
                                        $(BUILD)/uwebsocket.mpy \
                                        $(BUILD)/uping.mpy \
                                        $(BUILD)/ymodem.mpy \
-                                       $(BUILD)/alarm.mpy \
-                                       $(BUILD)/appFactoryMode.mpy \
                                        $(BUILD)/btn_device_ec800m.mpy \
-                                       $(BUILD)/capacitive_hynitron_cst816d_update.mpy \
                                        $(BUILD)/common.mpy \
                                        $(BUILD)/constants.mpy \
                                        $(BUILD)/EventMesh.mpy \
-                                       $(BUILD)/initTP.mpy \
-                                       $(BUILD)/lcd.mpy \
                                        $(BUILD)/mgr.mpy \
                                        $(BUILD)/protocol.mpy \
                                        $(BUILD)/ui.mpy \
-                                       $(BUILD)/ui_main_menu.mpy \
-                                       $(BUILD)/ui_setting.mpy \
-                                       $(BUILD)/ui_WatchFaceScreen.mpy \
-                                       $(BUILD)/ui_health.mpy \
                                        $(BUILD)/main_init.mpy \
                                        $(BUILD)/versions.mpy \
                                        $(BUILD)/led.mpy \
+                                       $(BUILD)/btn_device_ec800m_d15.mpy \
 
 endif
 
diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/appWechat.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/appWechat.py
deleted file mode 100644 (file)
index 5bab8ba..0000000
+++ /dev/null
@@ -1,666 +0,0 @@
-import osTimer
-import lvgl as lv
-import EventMesh
-import osTimer
-import constants
-import ujson
-import ql_fs
-import audio
-from machine import Pin
-from ui import style_font_youyuan_20,style_screen,Screen,style_font_youyuan_20_black,style_img
-import audio
-from machine import Pin
-import utime
-import _thread
-from protocol import ProtoCol,UnicodeHexStr_To_Utf8Str
-import usys
-import log
-Testlog = log.getLogger("WechatLog")
-log.set_output(usys.stdout)
-is_appwechat_log = 0
-def Wechat_log(str):
-    if(is_appwechat_log == 1) :
-        Testlog.info(str)
-    
-style_wechat_r_btn =  lv.style_t()
-style_wechat_r_btn.init()
-style_wechat_r_btn.set_bg_color(lv.color_make(0x00, 0xff, 0x2a))
-style_wechat_r_btn.set_border_width(0)
-style_wechat_r_btn.set_shadow_opa(0)
-
-
-style_wechat_s_btn =  lv.style_t()
-style_wechat_s_btn.init()
-style_wechat_s_btn.set_bg_color(lv.color_make(0xff, 0xff, 0xff))
-style_wechat_s_btn.set_border_width(0)
-style_wechat_s_btn.set_shadow_opa(0)
-
-style_common_bg_rect_btn_pressed =  lv.style_t()
-style_common_bg_rect_btn_pressed.init()
-style_common_bg_rect_btn_pressed.set_bg_color(lv.color_make(0x1E, 0x26, 0xff))
-style_common_bg_rect_btn_pressed.set_bg_opa(100)
-style_common_bg_rect_btn_pressed.set_border_width(0)
-style_common_bg_rect_btn_pressed.set_shadow_opa(0)
-
-style_wechat_btn =  lv.style_t()
-style_wechat_btn.init()
-style_wechat_btn.set_bg_color(lv.color_make(0x1E, 0x26, 0xff))
-style_wechat_btn.set_border_width(0)
-style_wechat_btn.set_shadow_opa(0)
-
-# -------------------------------------------wechat screen----------------------------------------------------------
-wechat_screen = lv.obj()
-EventMesh.debug_log("wechat_screen")
-wechat_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-wechat_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-wechat_screen_list_screen = lv.obj(wechat_screen)
-wechat_screen_list_screen.set_pos(0, 0)
-wechat_screen_list_screen.set_size(240, 260)
-wechat_screen_list_screen.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-wechat_screen_list_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
-
-wechat_press_btn = lv.btn(wechat_screen)
-wechat_press_btn.set_pos(10, 260)
-wechat_press_btn.set_size(220, 56)
-wechat_press_btn.add_style(style_wechat_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
-wechat_press_btn.add_style(style_common_bg_rect_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED)
-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_pos(0,278)
-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)
-
-wechat_label = lv.label(wechat_screen_list_screen)
-wechat_label.set_pos(0, 140)
-wechat_label.set_size(240, 40)
-wechat_label.set_long_mode(lv.label.LONG.WRAP)
-wechat_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-wechat_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-
-wechat_press_label_countdown = lv.label(wechat_screen_list_screen)
-wechat_press_label_countdown.set_pos(0, 100)
-wechat_press_label_countdown.set_size(240, 40)
-wechat_press_label_countdown.set_text(" ")
-wechat_press_label_countdown.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-wechat_press_label_countdown.set_long_mode(lv.label.LONG.WRAP)
-wechat_press_label_countdown.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-
-
-
-
-
-class WechatScreen(Screen):
-    NAME = "wechat"
-
-    def __init__(self):
-        super().__init__()
-        self.MXA_MSG = 10
-        self.wechat_recode_list = {"num":0}
-        self.wechat_num = 0
-        self.read_data = {}
-        self.volum_size = 8 
-        self.msg_tmp = ""
-        check_txt = ql_fs.path_exists("/usr/static/storage_file/wechat_record.json")
-        if check_txt == True :
-            with open("/usr/static/storage_file/wechat_record.json","r") as fd:#音频文件编号
-                self.wechat_recode_list = ujson.load(fd)
-                if not self.wechat_recode_list:
-                    self.wechat_recode_list = {"num":0}
-                    self.wechat_num = 0 
-                else:
-                    b = str("num") in self.wechat_recode_list.keys()
-                    if b == True:
-                        self.wechat_num = self.wechat_recode_list["num"]
-        else :
-            self.wechat_recode_list = {"num":0}
-            with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
-                ujson.dump(self.wechat_recode_list,fd)                
-        # if self.wechat_num != 0:
-        #     with open("/usr/static/storage_file/wechat_record.json","r",encoding="utf-8") as fd:#音频文件记录
-        #         self.wechat_recode_list = ujson.load(fd)#读取每一个amr音频文件的时长ui_setting.py
-
-        self.record_test = audio.Record()
-        import audio
-        from machine import Pin
-        self.aud = audio.Audio(0)
-        self.aud.set_pa(Pin.GPIO29)
-        check_volum = ql_fs.path_exists("/usr/static/storage_file/config.json")
-        if check_volum == True :
-            with open("/usr/static/storage_file/config.json","r") as fd:#音频文件编号
-                self.read_data = ujson.load(fd)
-                if self.read_data != {}:
-                    b = str("volum") in self.read_data.keys()
-                    if b == True:
-                        self.volum_size = self.read_data["volum"]  
-                    else:
-                        self.volum_size = 8
-                else:
-                    self.volum_size = 8
-        else:
-            self.volum_size = 8
-        self.aud.setVolume(11)
-        #16点42分
-       
-        wechat_press_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.talking_cb(e)),
-                                     lv.EVENT.LONG_PRESSED, None)
-        wechat_press_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.sending_cb(e)),
-                                     lv.EVENT.RELEASED, None)
-        self.timer = osTimer()
-        self.second_timer = osTimer()
-        self.play_timer = osTimer()
-
-        
-
-        self.startY = 0
-        self.startWidth = 0
-        self.check_json = 0
-        self.wechat_list = lv.obj(wechat_screen_list_screen)
-        self.wechat_list.set_pos(0, 0)
-        self.wechat_list.set_size(240, 261)
-        self.wechat_list.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-        self.wechat_list.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-        
-        #建立控件
-        self.wechat_list_dict = []
-        for i in range(self.MXA_MSG):
-            wechat_btn = lv.btn(self.wechat_list)
-            wechat_btn.add_style(style_wechat_s_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
-            _btn_label1 = lv.label(wechat_btn)
-            _btn_label1.add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
-            _btn_label2 = lv.label(wechat_btn)
-            _btn_img = lv.img(wechat_btn)
-            wechat_btn.add_flag(lv.obj.FLAG.HIDDEN)
-            wechat_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-            wechat_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.play_label_cb(e)),
-            lv.EVENT.CLICKED, None)
-            self.wechat_list_dict.append({"num":i,"wechat_btn":wechat_btn,"_btn_label1":_btn_label1,"_btn_label2":_btn_label2,"_btn_img":_btn_img})
-
-        EventMesh.subscribe("wechat_updata_list_show", self.wechat_updata_list_show)
-        # EventMesh.subscribe("get_wechat_data", self.get_wechat_data)
-        # EventMesh.subscribe("set_wechat_data", self.set_wechat_data)
-
-        EventMesh.subscribe("get_aduio_state", self.get_aduio_state)
-        EventMesh.subscribe("get_send_state", self.get_send_state)
-
-        self.countdown = 1
-        self.count_img = 0
-        self.paay_btn_count = 0
-        self.paay_btn_old_count = 99999
-        self.play_text = None
-        self.play_sec = 0
-        self.sec_num = 0
-        self.countdown_old = 0
-        self.press_state = 0
-        self.ble_send = 0
-        self.wechat_show = 0
-        self.wechat_show_list = 0
-        #self.old_num = self.wechat_num
-
-
-    def initialization(self):
-        Wechat_log("initialization1")
-        self.aud.setVolume(11)#设置最大声录音
-        wechat_label.set_text(" ")
-        wechat_label.add_flag(lv.obj.FLAG.HIDDEN)
-        wechat_press_label_countdown.add_flag(lv.obj.FLAG.HIDDEN)
-        self.wechat_list.clear_flag(lv.obj.FLAG.HIDDEN)
-        #读取json文件中的字典放到self.phonebook中
-        #创建btn
-        #self.updata_list_show(1)
-        EventMesh.publish("publish_message_event_ui",{"func":self.updata_list_show,"data":2})
-        utime.sleep_ms(50)
-        EventMesh.publish("publish_message_event_ui",{"func":self.updata_list_show,"data":0})
-        self.count_img = 0
-        self.play_sec = 0
-        self.ble_send = 0
-        # utime.sleep(1)
-        # for j in range( 200):
-        #     self.updata_list_show(1)
-        Wechat_log("initialization2")
-
-    def get_wechat_data(self,event, msg): 
-        return [self.MXA_MSG ,self.wechat_recode_list]
-    
-    def set_wechat_data(self, event, msg): 
-        Wechat_log("set_wechat_data1")
-        self.MXA_MSG = msg[0]
-        self.wechat_recode_list = msg[1]
-        self.wechat_num = self.wechat_recode_list["num"]
-        with open("/usr/static/storage_file/wechat_record.json","w",encoding="utf-8") as fd:
-                ujson.dump(self.wechat_recode_list,fd)
-            #写编号
-        Wechat_log("set_wechat_data2:{} ".format(self.wechat_num))
-
-
-    def reciving(self,e):
-        Wechat_log("reciving1")
-        #self.updata_list_show(0)
-        EventMesh.publish("publish_message_event_ui",{"func":self.updata_list_show,"data":0})   
-        Wechat_log("reciving2")
-    #接收到新的消息,刷新界面
-    def wechat_updata_list_show(self, event, msg): 
-        Wechat_log("wechat_updata_list_show1")
-        if (self.wechat_list.has_flag(lv.obj.FLAG.HIDDEN)) == False:
-            # wechat_label.clear_flag(lv.obj.FLAG.HIDDEN)
-            # wechat_label.set_text("接收中")
-            #self.updata_list_show(2)
-            EventMesh.publish("publish_message_event_ui",{"func":self.updata_list_show,"data":2})
-            self.timer.start(200, 0, self.reciving)
-            self.paay_btn_count -= 1
-            # if self.paay_btn_count <= 0:
-            #     self.paay_btn_count = 0
-            if self.paay_btn_count >= 0:
-                self.paay_btn_old_count = self.paay_btn_count
-        Wechat_log("wechat_updata_list_show2")
-    # def handle_message_event(self,data):
-    #     if data[0] == "updata_list_show":
-    #        self.updata_list_show(data[1])
-    #        return 1        
-
-    #index=0 不改变列表控件显示到lcd上;index=2只更新列表控件,不显示;index=1更新列表并显示控件
-    def updata_list_show(self,index):
-        Wechat_log("updata_list_show1")
-        global wechat_screen_list_screen
-        if self.press_state != 1:
-            if self.wechat_num != 0:
-                if index == 0:
-                    self.wechat_list.clear_flag(lv.obj.FLAG.HIDDEN)
-                    wechat_label.add_flag(lv.obj.FLAG.HIDDEN)
-                elif index == 2 or index == 1:
-                    
-                    #读取json文件中的键作为label文本;                 
-                    Wechat_log("self.wechat_recode_list:{}".format(self.wechat_recode_list))
-
-                    if index == 2:
-                        self.wechat_list.add_flag(lv.obj.FLAG.HIDDEN)
-                    j = 1
-                    if len(self.wechat_recode_list)-1 == self.MXA_MSG:
-                        j = self.wechat_num+1
-                    wechat_btn_end = 0
-                    for i in range(self.MXA_MSG):
-                        if j > self.MXA_MSG:
-                            j = 1
-                        key = "%02d"%(j)
-                        if j > len(self.wechat_recode_list) -1:
-                            self.wechat_list_dict[i]["wechat_btn"].add_flag(lv.obj.FLAG.HIDDEN)
-                            continue
-                        j+=1
-                        
-                        #Wechat_log("wechat_list_dict:num:{}".format(self.wechat_list_dict[i]["num"]))
-                        value = self.wechat_recode_list[key]
-
-                        self.startY = 64*i
-                        
-                        if value.find("S:") != -1 or value.find("R:") != -1:
-                            self.msg_tmp = value[2:] 
-                            self.msg_tmp = int(self.msg_tmp)
-                            self.startWidth = 55+self.msg_tmp*10
-                            
-                        elif value.find("T:") != -1:#文字显示
-                            self.msg_tmp = value[2:] 
-                            self.startWidth = 230
-                        
-                        #wechat_btn = lv.btn(self.wechat_list)
-                        # if value.find("R:") != -1:self.wechat_list_dict[i]
-                        
-                        if value.find("R:") != -1 or value.find("T:") != -1 :#显示文字:
-                            if value.find("T:") != -1:
-                                self.wechat_list_dict[i]["wechat_btn"].set_size(self.startWidth,62)
-                            else:
-                                 self.wechat_list_dict[i]["wechat_btn"].set_size(self.startWidth,62)
-
-                            self.wechat_list_dict[i]["wechat_btn"].set_pos(10,self.startY )
-                            #self.wechat_list_dict[i]["wechat_btn"].add_style(style_wechat_s_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
-                            self.wechat_list_dict[i]["wechat_btn"].set_style_bg_color(lv.color_make(0xff, 0xff, 0xff), lv.PART.MAIN | lv.STATE.DEFAULT)
-                        elif value.find("S:") != -1 :
-                            self.wechat_list_dict[i]["wechat_btn"].set_size(self.startWidth,62)
-                            self.wechat_list_dict[i]["wechat_btn"].set_pos(230-self.startWidth,self.startY )
-                            #for k in range(100):
-                            #self.wechat_list_dict[i]["wechat_btn"].add_style(style_wechat_r_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
-                            self.wechat_list_dict[i]["wechat_btn"].set_style_bg_color(lv.color_make(0x00, 0xff, 0x2a), lv.PART.MAIN | lv.STATE.DEFAULT)
-
-                        #_btn_label1 = lv.label(wechat_btn)
-                        if value.find("R:") != -1:
-                            self.wechat_list_dict[i]["_btn_label1"].set_size(0, 0)
-                            self.wechat_list_dict[i]["_btn_label1"].set_pos(35, 8)
-                            self.wechat_list_dict[i]["_btn_label1"].set_text(str(self.msg_tmp)+'\"')
-                            
-                        elif value.find("S:") != -1:
-                            self.wechat_list_dict[i]["_btn_label1"].set_size(0, 0)
-                            self.wechat_list_dict[i]["_btn_label1"].set_pos(self.startWidth-78, 8)
-                            self.wechat_list_dict[i]["_btn_label1"].set_text(str(self.msg_tmp)+'\"')
-                        elif value.find("T:") != -1:
-                            self.wechat_list_dict[i]["_btn_label1"].set_size(216, 66)
-                            self.wechat_list_dict[i]["_btn_label1"].set_pos(0, 0)
-                            self.wechat_list_dict[i]["_btn_label1"].set_text(str(self.msg_tmp))
-                            self.wechat_list_dict[i]["_btn_label1"].set_long_mode(lv.label.LONG.DOT)
-                        #self.wechat_list_dict[i]["_btn_label1"].add_style(style_font_youyuan_20_black, lv.PART.MAIN | lv.STATE.DEFAULT)
-                        #_btn_label2 = lv.label(wechat_btn)
-                        self.wechat_list_dict[i]["_btn_label2"].set_size(0, 0)
-                        if value.find("R:") != -1:
-                            self.wechat_list_dict[i]["_btn_label2"].set_text('R:'+key)
-                        elif value.find("S:") != -1:
-                            self.wechat_list_dict[i]["_btn_label2"].set_text('S:'+key)
-                        elif value.find("T:") != -1:
-                            self.wechat_list_dict[i]["_btn_label2"].set_text('T:'+key)
-                        if value.find("R:") != -1 or value.find("S:") != -1:
-                            #_btn_img = lv.img(wechat_btn)
-                            self.wechat_list_dict[i]["_btn_img"].set_size(30, 30)
-                            if value.find("R:") != -1:
-                                self.wechat_list_dict[i]["_btn_img"].set_pos(5, 0)
-                                self.wechat_list_dict[i]["_btn_img"].set_src("U:/static/APP/wechat/R_3.png")
-                            elif value.find("S:") != -1:
-                                self.wechat_list_dict[i]["_btn_img"].set_pos(self.startWidth-50, 0)
-                                self.wechat_list_dict[i]["_btn_img"].set_src("U:/static/APP/wechat/S_3.png")
-                            #self.wechat_list_dict[i]["_btn_img"].add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-                            self.wechat_list_dict[i]["_btn_img"].clear_flag(lv.obj.FLAG.HIDDEN)
-                        else :
-                            self.wechat_list_dict[i]["_btn_img"].add_flag(lv.obj.FLAG.HIDDEN)
-                        self.wechat_list_dict[i]["wechat_btn"].clear_flag(lv.obj.FLAG.HIDDEN)
-                        
-                        wechat_btn_end = i
-                    self.wechat_list_dict[wechat_btn_end]["wechat_btn"].scroll_to_view(lv.ANIM.OFF)
-                        
-                    # bottom_btn1 = self.wechat_list.get_child(-1)
-                    # bottom_btn1.scroll_to_view(lv.ANIM.ON)
-        Wechat_log("updata_list_show2")            
-        
-    def talking_cb(self,e):
-        Wechat_log("talking_cb1")
-        EventMesh.publish("publish_message_event_ui",{"func":self.talking,"data":e})
-        Wechat_log("talking_cb2")
-    #按下录音
-    def talking(self,e):
-        Wechat_log("talking1")
-        self.play_timer.stop()
-        self.aud.stop()
-        self.wechat_list.add_flag(lv.obj.FLAG.HIDDEN)#隐藏列表选项方框
-        self.countdown = 1
-        wechat_label.clear_flag(lv.obj.FLAG.HIDDEN)
-        wechat_label.set_text("松开发送")
-        wechat_press_label_countdown.clear_flag(lv.obj.FLAG.HIDDEN)
-        wechat_press_label_countdown.set_text("{}S".format(str(self.countdown)))
-        
-
-        #self.updata_list_show(2)#不需要显示语音列表
-        #按下说话
-        if self.wechat_num >= self.MXA_MSG:
-            self.wechat_num = 0 
-        self.wechat_num += 1 
-        self.wechat_show = self.wechat_num
-        self.wechat_recode_list["num"] = self.wechat_num
-        Wechat_log("talking1.0")
-        self.record_test.start("/usr/static/storage_file/{}.amr".format(self.wechat_num),16) 
-        self.second_timer.start(1000, 1, self.reduce_second)
-        self.press_state = 1
-        self.ble_send = 1
-        #松开发送   
-        Wechat_log("talking2")
-   
-
-    def sending_cb(self,e):
-        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#有卡时触发sos报警 无卡时自动关机
-            Wechat_log("sending_cb1")
-            EventMesh.publish("publish_message_event_ui",{"func":self.sending,"data":e})
-            #self.sending(e)
-            Wechat_log("sending_cb2")
-        else:
-            EventMesh.publish("load_screen", {"screen": "no_sim_popup_screen"})
-       
-    #松手0.2秒后显示
-    def hide_label(self,*args):
-        Wechat_log("hide_label1")
-        if self.ble_send != 1:
-            wechat_label.add_flag(lv.obj.FLAG.HIDDEN)
-            wechat_label.set_text(" ")
-            #self.updata_list_show(0)
-            EventMesh.publish("publish_message_event_ui",{"func":self.updata_list_show,"data":0}) 
-        Wechat_log("hide_label2")   
-     #松开发送   
-    def sending(self,e):
-        Wechat_log("sending1") 
-        if self.press_state == 1:
-            # wechat_label.clear_flag(lv.obj.FLAG.HIDDEN)
-            # wechat_label.set_text("发送中")
-            wechat_press_label_countdown.add_flag(lv.obj.FLAG.HIDDEN)
-            wechat_press_label_countdown.set_text(" ")
-
-            if self.countdown >= 15:
-                self.countdown = 15 
-            #松开发送数据
-            #num.txt为记录的最后编号
-            #record.json文件里的json元素为记录编号,json键值:"S:"开头为发送的语音,"R:"为接收的语音,后面跟随语音长度;"T:"为接收的文字信息。
-            
-            #写序号
-            self.record_test.stop() #停止錄音
-            self.second_timer.stop() #停止计时器
-            self.countdown_old = self.countdown
-            # Wechat_log("self.countdown :{} self.wechat_num:{} self.wechat_recode_list:{} self.wechat_show:{}".format(self.countdown,self.wechat_num,self.wechat_recode_list,self.wechat_show))
-            self.wechat_recode_list["%02d"%(self.wechat_show)] = "S:{}".format(str(self.countdown))
-            self.wechat_recode_list["num"] = self.wechat_show
-
-            #读音频amr二进制数据
-            
-            #修改或添加词典键值
-            self.press_state = 0
-            self.ble_send = 0
-            ##隐藏显示文本 显示列表显示框
-            EventMesh.publish("publish_message_event_ui",{"func":self.updata_list_show,"data":2})
-            self.timer.start(200, 0, self.hide_label)
-            with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
-                ujson.dump(self.wechat_recode_list,fd)
-            Wechat_log("send wechat data!!!!!!!!!!!!!!!!!!!!!")
-            path = "/usr/static/storage_file/{}.amr".format(self.wechat_show)
-            with open(path,"rb") as fd:
-                buf = bytearray(ql_fs.path_getsize(path))
-                fd.readinto(buf)
-                senddata = [self.countdown_old,buf]
-                EventMesh.publish(constants.PROTOCOL.TK_SEND,senddata)
-            
-            
-        Wechat_log("sending2") 
-
-    def play_img_cb(self,*args):
-        Wechat_log("play_img_cb1")
-        EventMesh.publish("publish_message_event_ui",{"func":self.play_img,"data":args})
-        Wechat_log("play_img_cb2")
-    def play_img(self,*args):    
-        Wechat_log("play_img1")
-        if self.paay_btn_count < 0 or self.paay_btn_count>= self.MXA_MSG:
-            self.play_timer.stop()
-            return
-        EventMesh.publish("system_sleep_rest")#防止黑屏
-        # Wechat_log("self.count_img :{} self.play_text:{}".format(self.count_img,self.play_text))
-        self.count_img+=1
-        if self.count_img > 3:
-            self.count_img = 1
-
-        text = self.wechat_list_dict[self.paay_btn_count]["_btn_label2"].get_text()
-        self.play_text = text[0:2] #区分左右喇叭动画显示 "R":左边 "S:"右边 "T:":左边
-        if self.play_text == "R:":
-            self.wechat_list_dict[self.paay_btn_count]["_btn_img"].set_src("U:/static/APP/wechat/R_{}.png".format(self.count_img))
-        elif self.play_text == "S:":
-            self.wechat_list_dict[self.paay_btn_count]["_btn_img"].set_src("U:/static/APP/wechat/S_{}.png".format(self.count_img))
-
-        self.sec_num+=1
-        if self.sec_num % 2 == 0:
-            # Wechat_log("self.play_sec:{}".format(self.play_sec))
-            if self.play_sec > 0:
-                self.play_sec -= 1
-                if self.play_sec == 0:
-                    self.play_timer.stop()
-                    if self.play_text == "R:":
-                        self.wechat_list_dict[self.paay_btn_count]["_btn_img"].set_src("U:/static/APP/wechat/R_3.png")
-                    elif self.play_text == "S:":
-                        self.wechat_list_dict[self.paay_btn_count]["_btn_img"].set_src("U:/static/APP/wechat/S_3.png") 
-        get_play = EventMesh.publish("get_audio_state")
-        if get_play != None:
-            if get_play == 0:
-                self.play_timer.stop()
-                if self.play_text == "R:":
-                    self.wechat_list_dict[self.paay_btn_count]["_btn_img"].set_src("U:/static/APP/wechat/R_3.png")
-                elif self.play_text == "S:":
-                    self.wechat_list_dict[self.paay_btn_count]["_btn_img"].set_src("U:/static/APP/wechat/S_3.png") 
-        Wechat_log("play_img2")
-    def play_label_cb(self,e): #lvgl按钮回调
-        Wechat_log("play_label_cb1")
-        #Wechat_log("play_label_cb.0:e:{}".format(e.get_code()))
-        paay_btn = e.get_target()
-        for i in range(self.MXA_MSG):
-            if(self.wechat_list_dict[i]["wechat_btn"] == paay_btn):
-                Wechat_log("play_label_cb:wechat_btn = e.get_target():i:{}".format(i))
-                self.paay_btn_count = i
-                break
-        EventMesh.publish("publish_message_event_ui",{"func":self.play_label,"data":paay_btn})#发到另外一个线程执行更改ui
-        Wechat_log("play_label_cb2")
-        #utime.sleep_ms(1000)
-    #点击播放
-    def play_label(self,play_btn):#另外一个线程实际执行的地方
-        Wechat_log("play_label1")
-        self.sec_num = 0
-        # Wechat_log("play_label self.play_text:{}".format(self.play_text)) 
-        if self.paay_btn_old_count <= self.MXA_MSG: #停止东画还原到3图标
-            text = self.wechat_list_dict[self.paay_btn_old_count]["_btn_label2"].get_text()
-            self.play_text = text[0:2]
-            if self.play_text == "R:":
-                self.wechat_list_dict[self.paay_btn_old_count]["_btn_img"].set_src("U:/static/APP/wechat/R_3.png")
-            elif self.play_text == "S:":
-                self.wechat_list_dict[self.paay_btn_old_count]["_btn_img"].set_src("U:/static/APP/wechat/S_3.png")
-
-        self.count_img = 0 #喇叭动画显示的数量
-  
-
-        text = self.wechat_list_dict[self.paay_btn_count]["_btn_label2"].get_text()
-        self.play_text = text[0:2] #区分左右喇叭动画显示 "R":左边 "S:"右边 "T:":左边
-        Wechat_log("self.play_text2:{}".format(self.play_text))
-        play_img_s = self.wechat_list_dict[self.paay_btn_count]["_btn_label1"].get_text()
-        play_img_s = play_img_s.split('"')
-        play_img_s = play_img_s[0]#获取实际显示秒数 '"'前面实际的秒数
-
-        if self.play_text == "R:" or self.play_text == "S:":
-            if self.play_text == "R:":
-                self.play_sec = 15
-            else:
-                self.play_sec = int(play_img_s)
-
-            self.play_timer.start(500, 1, self.play_img_cb)
-        # Wechat_log("play_label self.count_img :{} self.play_text:{} play_img_s:{} self.play_sec:{}".format(self.count_img,self.play_text,play_img_s,self.play_sec))
-        
-        num_amr = self.wechat_list_dict[self.paay_btn_count]["_btn_label2"].get_text()
-        num_amr = num_amr.split(':')
-        num_amr = num_amr[1]#获取实际秒数
-        i = int(num_amr)
-        # Wechat_log("num:{}".format(i))
-        if self.play_text == "R:" or self.play_text == "S:":#过滤掉文字显示 不需要播放音频文件
-            self.aud = audio.Audio(0)
-            self.aud.stop()#
-            self.aud.play(1, 1, '/usr/static/storage_file/{}.amr'.format(i))  #文件名前面要加上路径
-        self.paay_btn_old_count = self.paay_btn_count
-        Wechat_log("play_label2")
-
-     #获取是否在录音
-    def get_aduio_state(self, event, msg): 
-        return self.press_state
-
-    def get_send_state(self, event, msg): 
-        return self.ble_send
-
-
-    def Close(self):
-        Wechat_log("Close1")
-        self.play_timer.stop()
-        self.record_test.stop() #停止錄音
-        self.second_timer.stop() #停止计时器
-        self.aud.stop()
-        num = EventMesh.publish("get_volum_size")
-        if num == None:
-            num = 8
-        self.aud.setVolume(num)#恢复原始音量
-        Wechat_log("Close2")
-
-    def reduce_second(self,*args):
-        if self.countdown < 15:
-            self.countdown += 1
-        else:
-            self.countdown = 15
-            self.sending(0)
-
-        if self.countdown >= 15:
-            self.countdown = 15
-        wechat_press_label_countdown.set_text("{}S".format(str(self.countdown)))
-
-    def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-        
-    def btn8_press(self):
-        EventMesh.publish("watch_top_show")
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-#微聊弹窗
-
-wechat_popup_screen = lv.obj()
-EventMesh.debug_log("wechat_popup_screen")
-wechat_popup_screen.center()
-wechat_popup_screen.set_size(240, 320)
-wechat_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-wechat_popup_title = lv.label(wechat_popup_screen)
-wechat_popup_title.set_pos(0, 150)
-wechat_popup_title.set_size(240, 40)
-wechat_popup_title.set_text("你有新的微聊消息")
-wechat_popup_title.set_long_mode(lv.label.LONG.WRAP)
-wechat_popup_title.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-wechat_popup_title.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-class NewWechatPopupScreen(Screen):
-    NAME = "wechat_popup"
-    def __init__(self):
-        super().__init__()
-        self.meta = wechat_popup_screen
-        self.meta_type = "popup"
-    def done_left_to_right(self):
-        # EventMesh.publish("wechat_updata_list_show")
-        EventMesh.publish("return_prev_screen")
-
-    def done_right_to_left(self):
-        # EventMesh.publish("wechat_updata_list_show")
-        EventMesh.publish("return_prev_screen")
-
-    def done_bottom_to_top(self):
-        # EventMesh.publish("wechat_updata_list_show")
-        EventMesh.publish("return_prev_screen")
-
-    def done_top_to_bottom(self):
-        # EventMesh.publish("wechat_updata_list_show")
-        EventMesh.publish("return_prev_screen")
-
-    def done_return(self):
-        EventMesh.publish("return_prev_screen")
-    def done_click(self):
-        # EventMesh.publish("wechat_updata_list_show")
-        EventMesh.publish("load_screen", {"screen": "wechat"})
-
-    def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-    def btn8_press(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
-
-
-
-
-
-
-            
-
-
-
-    
index ef2e5d1..289d858 100644 (file)
@@ -19,1232 +19,1161 @@ import _thread
 import usys
 import sms
 from Gsensor import SC7A20
-# motor_pin = Pin(Pin.GPIO20, Pin.OUT, Pin.PULL_PD, 0)
-motor_pin = 1
-def open_motor():
-    motor_pin.write(1)
+if EventMesh.model == "D10_" :
+    # motor_pin = Pin(Pin.GPIO20, Pin.OUT, Pin.PULL_PD, 0)
+    motor_pin = 1
+    def open_motor():
+        motor_pin.write(1)
 
-def close_motor():
-    motor_pin.write(0)
+    def close_motor():
+        motor_pin.write(0)
 
-audio_buf = ['audio_find_haixiu', 'R_ALARM_NEW', 'R_BLOOD_SUGAR', 'R_CALL_mp3', 'R_CHARGE_FULL', 'R_CHARGE_IN', 'R_CHARGE_OUT', 'R_DRINK_ALARM', 'R_FALL_ALARM', 'R_HOME_ALARM', 'R_HSENSOR_RESULT_FAILE', 'R_HSENSOR_RESULT_HR_TITLE', 'R_HSENSOR_RESULT_OK', 'R_HSENSOR_SPO2_TITLE', 'R_HSENSOR_TEMP_TITLE', 'R_MEDICINE_ALARM', 'R_NO_SET_SOS_DIAL', 'R_NO_SIM', 'R_POWER_OFF_1', 'R_READ_STEP_0', 'R_READ_STEP_1', 'R_READ_STEP_2', 'R_READ_STEP_3', 'R_READ_STEP_4', 'R_READ_TIME_0', 'R_READ_TIME_1', 'R_READ_TIME_2', 'R_READ_TIME_3', 'R_READ_TIME_4', 'R_READ_TIME_5', 'R_READ_TIME_6', 'R_READ_TIME_7', 'R_READ_TIME_8', 'R_READ_TIME_9', 'R_READ_TIME_MIN', 'R_READ_TIME_ZHENG', 'R_RESET_ALARM', 'R_RESET_END_ALARM', 'R_SIM_CONNECT', 'R_SIM_FAILE', 'R_SLEEP_ALARM', 'R_SOS_ALERT', 'R_TSENSOR_RESULT_VALUE_DOT', 'R_UNREAD_WECHAT', 'R_WAKEUP_ALARM', 'R_WECHAT_RECV']
+    audio_buf = ['audio_find_haixiu', 'R_ALARM_NEW', 'R_BLOOD_SUGAR', 'R_CALL_mp3', 'R_CHARGE_FULL', 'R_CHARGE_IN', 'R_CHARGE_OUT', 'R_DRINK_ALARM', 'R_FALL_ALARM', 'R_HOME_ALARM', 'R_HSENSOR_RESULT_FAILE', 'R_HSENSOR_RESULT_HR_TITLE', 'R_HSENSOR_RESULT_OK', 'R_HSENSOR_SPO2_TITLE', 'R_HSENSOR_TEMP_TITLE', 'R_MEDICINE_ALARM', 'R_NO_SET_SOS_DIAL', 'R_NO_SIM', 'R_POWER_OFF_1', 'R_READ_STEP_0', 'R_READ_STEP_1', 'R_READ_STEP_2', 'R_READ_STEP_3', 'R_READ_STEP_4', 'R_READ_TIME_0', 'R_READ_TIME_1', 'R_READ_TIME_2', 'R_READ_TIME_3', 'R_READ_TIME_4', 'R_READ_TIME_5', 'R_READ_TIME_6', 'R_READ_TIME_7', 'R_READ_TIME_8', 'R_READ_TIME_9', 'R_READ_TIME_MIN', 'R_READ_TIME_ZHENG', 'R_RESET_ALARM', 'R_RESET_END_ALARM', 'R_SIM_CONNECT', 'R_SIM_FAILE', 'R_SLEEP_ALARM', 'R_SOS_ALERT', 'R_TSENSOR_RESULT_VALUE_DOT', 'R_UNREAD_WECHAT', 'R_WAKEUP_ALARM', 'R_WECHAT_RECV']
 
-class call:
-    CALL_OUT = 1
-    CALL_IN = 2
-    ON_CALL = 3
 
 
-class intervManager(Abstract):
-    def __init__(self):
-        self.timer = osTimer()
+    class intervManager(Abstract):
+        def __init__(self):
+            self.timer = osTimer()
 
-        self.pwk_timer1 = osTimer()
-        self.pwk_timer2 = osTimer()
-        self.timer1 = osTimer()
-        self.sos_timer2 = osTimer()
-        self.sos_timer1 = osTimer()
+            self.pwk_timer1 = osTimer()
+            self.pwk_timer2 = osTimer()
+            self.timer1 = osTimer()
+            self.sos_timer2 = osTimer()
+            self.sos_timer1 = osTimer()
 
-        self.sos_sendtime = osTimer()
+            self.sos_sendtime = osTimer()
 
-        self.fall_timer1 = osTimer()
-        self.fall_timer2 = osTimer()
+            self.fall_timer1 = osTimer()
+            self.fall_timer2 = osTimer()
 
-        self.alarm_timer1 = osTimer()
+            self.alarm_timer1 = osTimer()
 
-        self.find_timer1 = osTimer()
-        self.fall_flag = 0
+            self.find_timer1 = osTimer()
+            self.fall_flag = 0
 
-        self.factory_timer = osTimer()
-        
-        self.restart_timer = osTimer()
-
-        self.aud = audio.Audio(0)
-        self.aud.set_pa(Pin.GPIO29)
-        self.aud.setVolume(11)
-        self.play_count = 0
-        self.count = 0
-
-        self.get_hr_state  = 0
-        self.get_spo2_state = 0
-        self.timeSec = 0
-        self.timeTempSec = 0
-
-        self.hr_value = 0
-        self.spo2_value = 0
-        self.temp_value = 0
-
-        self.usbState = 0
-
-        self.setp_old = 0
-        self.step_tmp = ""
-        self.step_num = 0
-        self.power_off = 0
-        self.call_state = 0
-
-        self.find_state = 0
-        self.FIND_timer_count = 0
-
-        self.old_hour = 0
-        self.alarm_state = 0
-        self.alarm_timer_count = 0
-        self.old_min = 0
-        self.interInfo_queue = Queue()
-        _thread.stack_size(10*1024+64)
-        _thread.start_new_thread(self.interInfo_queue_thread, ())
-        _thread.stack_size(8*1024)
-        EventMesh.subscribe("publish_message_event_interInfo",self.publish_message_event_interInfo)
-        
+            self.factory_timer = osTimer()
+            
+            self.restart_timer = osTimer()
 
-        self.audio_event_queue = Queue()
-        _thread.stack_size(10*1024+128)
-        _thread.start_new_thread(self.audio_event_queue_thread, ())
-        _thread.stack_size(8*1024)
-        EventMesh.subscribe("publish_message_event_audio",self.publish_message_event_audio)
-
-        self.record_test = audio.Record()
-        self.record_test.gain(4,12)
-
-        self.timeSecond = 0
-        self.wechat_show = 0
-        self.sort_new = {}
-        self.time_min = 0
-        self.press_btn = 0
-        self.countdown_old = 0
-        self.set_unread_wechat = 0
-        self.updateTime = 0
-        
-        self.power_on_flag = 0
-
-        self.MXA_MSG = 1
-        self.wechat_recode_list = {"num":0}
-        self.wechat_num = 0
-        self.read_data = {}
-        self.volum_size = 8 
-        self.phone_num = ''
-        self.sos_phone_num = ''
-        self.msg_tmp = ""
-        self.time_count = 0
-        self.alarm_count = 0
-        self.audio_int = 0
-
-        self.hr_auto = 0
-
-        self.temp_auto = 0
-        
-        check_txt = ql_fs.path_exists("/usr/static/storage_file/wechat_record.json")
-        if check_txt == True :
-            with open("/usr/static/storage_file/wechat_record.json","r") as fd:#音频文件编号
-                self.wechat_recode_list = ujson.load(fd)
-                if not self.wechat_recode_list:
-                    self.wechat_recode_list = {"num":0}
-                    self.wechat_num = 0
-        else:
+            self.aud = audio.Audio(0)
+            self.aud.set_pa(Pin.GPIO29)
+            self.aud.setVolume(11)
+            self.play_count = 0
+            self.count = 0
+
+            self.get_hr_state  = 0
+            self.get_spo2_state = 0
+            self.timeSec = 0
+            self.timeTempSec = 0
+
+            self.hr_value = 0
+            self.spo2_value = 0
+            self.temp_value = 0
+
+            self.usbState = 0
+
+            self.setp_old = 0
+            self.step_tmp = ""
+            self.step_num = 0
+            self.power_off = 0
+            self.call_state = 0
+
+            self.find_state = 0
+            self.FIND_timer_count = 0
+
+            self.old_hour = 0
+            self.alarm_state = 0
+            self.alarm_timer_count = 0
+            self.old_min = 0
+            self.interInfo_queue = Queue()
+            _thread.stack_size(10*1024+64)
+            _thread.start_new_thread(self.interInfo_queue_thread, ())
+            _thread.stack_size(8*1024)
+            EventMesh.subscribe("publish_message_event_interInfo",self.publish_message_event_interInfo)
+            
+
+            self.audio_event_queue = Queue()
+            _thread.stack_size(10*1024+128)
+            _thread.start_new_thread(self.audio_event_queue_thread, ())
+            _thread.stack_size(8*1024)
+            EventMesh.subscribe("publish_message_event_audio",self.publish_message_event_audio)
+
+            self.record_test = audio.Record()
+            self.record_test.gain(4,12)
+
+            self.timeSecond = 0
+            self.wechat_show = 0
+            self.sort_new = {}
+            self.time_min = 0
+            self.press_btn = 0
+            self.countdown_old = 0
+            self.set_unread_wechat = 0
+            self.updateTime = 0
+            
+            self.power_on_flag = 0
+
+            self.MXA_MSG = 1
             self.wechat_recode_list = {"num":0}
-            with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
-                ujson.dump(self.wechat_recode_list,fd)         
+            self.wechat_num = 0
+            self.read_data = {}
+            self.volum_size = 8 
+            self.phone_num = ''
+            self.sos_phone_num = ''
+            self.msg_tmp = ""
+            self.time_count = 0
+            self.alarm_count = 0
+            self.audio_int = 0
 
+            self.hr_auto = 0
 
-    def post_processor_after_instantiation(self):
-        EventMesh.subscribe("open_power_on", self.open_power_on)#开机关机
+            self.temp_auto = 0
+            
+            check_txt = ql_fs.path_exists("/usr/static/storage_file/wechat_record.json")
+            if check_txt == True :
+                with open("/usr/static/storage_file/wechat_record.json","r") as fd:#音频文件编号
+                    self.wechat_recode_list = ujson.load(fd)
+                    if not self.wechat_recode_list:
+                        self.wechat_recode_list = {"num":0}
+                        self.wechat_num = 0
+            else:
+                self.wechat_recode_list = {"num":0}
+                with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
+                    ujson.dump(self.wechat_recode_list,fd)         
 
-        EventMesh.subscribe("play_imei_event", self.play_imei_event)#播報imei号
-        EventMesh.subscribe("play_center_phone", self.play_center_phone)#拨打快捷号码
-        EventMesh.subscribe("play_cur_time_event", self.play_cur_time_event)#播放当前时间
 
-        EventMesh.subscribe("OPEN_FIND_WATCH", self.send_find_watch)#查找设备
-        EventMesh.subscribe("STOP_FIND_WATCH", self.stop_find_watch)#是否需要关闭查找设备
-        EventMesh.subscribe("close_timer_all", self.close_timer_all)#关闭相关定时器
+        def post_processor_after_instantiation(self):
+            EventMesh.subscribe("open_power_on", self.open_power_on)#开机关机
 
-        EventMesh.subscribe("dial_sos_phone", self.dial_sos_phone)#长按3s拨打sos求助号码
+            EventMesh.subscribe("play_imei_event", self.play_imei_event)#播報imei号
+            EventMesh.subscribe("play_center_phone", self.play_center_phone)#拨打快捷号码
+            EventMesh.subscribe("play_cur_time_event", self.play_cur_time_event)#播放当前时间
 
-        EventMesh.subscribe("set_sim_mode", self.set_sim_mode)#sim检测
+            EventMesh.subscribe("OPEN_FIND_WATCH", self.send_find_watch)#查找设备
+            EventMesh.subscribe("STOP_FIND_WATCH", self.stop_find_watch)#是否需要关闭查找设备
+            EventMesh.subscribe("close_timer_all", self.close_timer_all)#关闭相关定时器
 
-        EventMesh.subscribe("close_hr_sop2", self.close_hr_sop2)#关闭健康测试
-        EventMesh.subscribe("set_manual_measure_mode", self.set_manual_measure_mode)#设置测试模式
-        EventMesh.subscribe("set_start_measure_time", self.set_start_measure_time)#设置开始测量的时间戳时间
-        EventMesh.subscribe("get_start_measure_time", self.get_start_measure_time)#获取开始测量的时间戳时间
-        EventMesh.subscribe("set_start_temp_measure_time", self.set_start_temp_measure_time)#设置体温开始测量的时间戳时间
-        EventMesh.subscribe("get_start_temp_measure_time", self.get_start_temp_measure_time)#获取体温开始测量的时间戳时间
-        EventMesh.subscribe("play_hr_value", self.play_hr_value)#播放心率数值
-        EventMesh.subscribe("play_spo2_value", self.play_spo2_value)#播放心率数值
-        EventMesh.subscribe("play_temp_value", self.play_temp_value)#播放体温数值
+            EventMesh.subscribe("dial_sos_phone", self.dial_sos_phone)#长按3s拨打sos求助号码
 
-        EventMesh.subscribe("play_sugar_value", self.play_sugar_value)#播放血糖数值
+            EventMesh.subscribe("set_sim_mode", self.set_sim_mode)#sim检测
 
+            EventMesh.subscribe("close_hr_sop2", self.close_hr_sop2)#关闭健康测试
+            EventMesh.subscribe("set_manual_measure_mode", self.set_manual_measure_mode)#设置测试模式
+            EventMesh.subscribe("set_start_measure_time", self.set_start_measure_time)#设置开始测量的时间戳时间
+            EventMesh.subscribe("get_start_measure_time", self.get_start_measure_time)#获取开始测量的时间戳时间
+            EventMesh.subscribe("set_start_temp_measure_time", self.set_start_temp_measure_time)#设置体温开始测量的时间戳时间
+            EventMesh.subscribe("get_start_temp_measure_time", self.get_start_temp_measure_time)#获取体温开始测量的时间戳时间
+            EventMesh.subscribe("play_hr_value", self.play_hr_value)#播放心率数值
+            EventMesh.subscribe("play_spo2_value", self.play_spo2_value)#播放心率数值
+            EventMesh.subscribe("play_temp_value", self.play_temp_value)#播放体温数值
 
-        EventMesh.subscribe("set_usb", self.set_usb)#
-        EventMesh.subscribe("get_usb", self.get_usb)#
+            EventMesh.subscribe("play_sugar_value", self.play_sugar_value)#播放血糖数值
 
-        EventMesh.subscribe("play_cur_step_event", self.play_cur_step_event)#
 
-        EventMesh.subscribe("set_call_state", self.set_call_state)#1是 拨出去呼叫中 2是播进来 3 是正在通话中 0是无效
-        EventMesh.subscribe("get_call_state", self.get_call_state)#
-        EventMesh.subscribe("interup_call_event", self.interup_call_event)#
-        EventMesh.subscribe("answer_call_event", self.answer_call_event)#接听电话
-        EventMesh.subscribe("dialin_call_event", self.dialin_call_event)#电话拨进响铃
-        EventMesh.subscribe("dialing_out_event", self.dialing_out_event)#电话呼叫中
-        EventMesh.subscribe("call_test_event", self.call_test_event)#电话拨进响铃测试
+            EventMesh.subscribe("set_usb", self.set_usb)#
+            EventMesh.subscribe("get_usb", self.get_usb)#
 
-        EventMesh.subscribe("dial_out_call_center_cb", self.dial_out_call_center_cb)#电话拨出去
-        EventMesh.subscribe("sos_out_call_center_cb", self.sos_out_call_center_cb)#sos拨打
+            EventMesh.subscribe("play_cur_step_event", self.play_cur_step_event)#
 
-        EventMesh.subscribe("close_audio_play", self.close_audio_play)#关闭音频
+            EventMesh.subscribe("set_call_state", self.set_call_state)#1是 拨出去呼叫中 2是播进来 3 是正在通话中 0是无效
+            EventMesh.subscribe("get_call_state", self.get_call_state)#
+            EventMesh.subscribe("interup_call_event", self.interup_call_event)#
+            EventMesh.subscribe("answer_call_event", self.answer_call_event)#接听电话
+            EventMesh.subscribe("dialin_call_event", self.dialin_call_event)#电话拨进响铃
+            EventMesh.subscribe("dialing_out_event", self.dialing_out_event)#电话呼叫中
+            EventMesh.subscribe("call_test_event", self.call_test_event)#电话拨进响铃测试
 
+            EventMesh.subscribe("dial_out_call_center_cb", self.dial_out_call_center_cb)#电话拨出去
+            EventMesh.subscribe("sos_out_call_center_cb", self.sos_out_call_center_cb)#sos拨打
 
-        EventMesh.subscribe("start_wechat_record", self.start_wechat_record)#手表开始录音
-        EventMesh.subscribe("send_wechat_record", self.send_wechat_record)#发送微聊语音文件to app
-        EventMesh.subscribe("play_wechat_last_amr", self.play_wechat_last_amr)#播放微聊语音最后一条语音文件
-        EventMesh.subscribe("get_wechat_data", self.get_wechat_data)
-        EventMesh.subscribe("set_wechat_data", self.set_wechat_data)
-        EventMesh.subscribe("play_unread_wechat_infor", self.play_unread_wechat_infor)#按键播放最近一条微聊语音
-        EventMesh.subscribe("set_unread_wechat_state", self.set_unread_wechat_state)#设置未读标识
-        EventMesh.subscribe("get_unread_wechat_state", self.get_unread_wechat_state)#获取未读标志
-        EventMesh.subscribe("get_wechat_time", self.get_wechat_time)#获取微聊时间戳
-        EventMesh.subscribe("get_wechat_state", self.get_wechat_state)#获取微聊时间戳
+            EventMesh.subscribe("close_audio_play", self.close_audio_play)#关闭音频
 
 
-        EventMesh.subscribe("get_power_on_state", self.get_power_on_state)#获取开机标识
-        EventMesh.subscribe("get_power_off_state", self.get_power_off_state)#获取关机标识
+            EventMesh.subscribe("start_wechat_record", self.start_wechat_record)#手表开始录音
+            EventMesh.subscribe("send_wechat_record", self.send_wechat_record)#发送微聊语音文件to app
+            EventMesh.subscribe("play_wechat_last_amr", self.play_wechat_last_amr)#播放微聊语音最后一条语音文件
+            EventMesh.subscribe("get_wechat_data", self.get_wechat_data)
+            EventMesh.subscribe("set_wechat_data", self.set_wechat_data)
+            EventMesh.subscribe("play_unread_wechat_infor", self.play_unread_wechat_infor)#按键播放最近一条微聊语音
+            EventMesh.subscribe("set_unread_wechat_state", self.set_unread_wechat_state)#设置未读标识
+            EventMesh.subscribe("get_unread_wechat_state", self.get_unread_wechat_state)#获取未读标志
+            EventMesh.subscribe("get_wechat_time", self.get_wechat_time)#获取微聊时间戳
+            EventMesh.subscribe("get_wechat_state", self.get_wechat_state)#获取微聊时间戳
 
-        EventMesh.subscribe("play_audio_file", self.play_audio_file)#获取播放音频文件
 
-        EventMesh.subscribe("OPEN_ALARM_RING", self.send_alarm_ring)#闹钟到点响铃
-        EventMesh.subscribe("STOP_ALARM_RING", self.stop_alarm_ring)#是否需要关闭闹钟
+            EventMesh.subscribe("get_power_on_state", self.get_power_on_state)#获取开机标识
+            EventMesh.subscribe("get_power_off_state", self.get_power_off_state)#获取关机标识
 
-        EventMesh.subscribe("recv_wechat_audio", self.recv_wechat_audio)#
+            EventMesh.subscribe("play_audio_file", self.play_audio_file)#获取播放音频文件
 
+            EventMesh.subscribe("OPEN_ALARM_RING", self.send_alarm_ring)#闹钟到点响铃
+            EventMesh.subscribe("STOP_ALARM_RING", self.stop_alarm_ring)#是否需要关闭闹钟
 
-        EventMesh.subscribe("sos_short_press", self.sos_short_press)#sos短按事件
+            EventMesh.subscribe("recv_wechat_audio", self.recv_wechat_audio)#
 
-        EventMesh.subscribe("falldown_alarm_event", self.falldown_alarm_event)#跌倒报警
 
-        EventMesh.subscribe("close_falldown_alarm_event", self.close_falldown_alarm_event)#关闭跌倒报警
+            EventMesh.subscribe("sos_short_press", self.sos_short_press)#sos短按事件
 
-        EventMesh.subscribe("drink_alarm_event", self.drink_alarm_event)#该喝水了
+            EventMesh.subscribe("falldown_alarm_event", self.falldown_alarm_event)#跌倒报警
 
-        EventMesh.subscribe("medicine_alarm_event", self.medicine_alarm_event)#该吃药了
+            EventMesh.subscribe("close_falldown_alarm_event", self.close_falldown_alarm_event)#关闭跌倒报警
 
-        EventMesh.subscribe("wakeup_alarm_event", self.wakeup_alarm_event)#该起床了
+            EventMesh.subscribe("drink_alarm_event", self.drink_alarm_event)#该喝水了
 
-        EventMesh.subscribe("home_alarm_event", self.home_alarm_event)#该回家了
+            EventMesh.subscribe("medicine_alarm_event", self.medicine_alarm_event)#该吃药了
 
-        EventMesh.subscribe("sleep_alarm_event", self.sleep_alarm_event)#该睡觉了
+            EventMesh.subscribe("wakeup_alarm_event", self.wakeup_alarm_event)#该起床了
 
-        EventMesh.subscribe("reset_alarm_event", self.reset_alarm_event)#该休息了
+            EventMesh.subscribe("home_alarm_event", self.home_alarm_event)#该回家了
 
-        EventMesh.subscribe("reset_end_alarm_event", self.reset_end_alarm_event)#休息结束了
+            EventMesh.subscribe("sleep_alarm_event", self.sleep_alarm_event)#该睡觉了
 
-        EventMesh.subscribe("get_fall_down_state", self.get_fall_down_state)#è·\8cå\80\92æ\8a¥è­¦æ \87è¯\86
+            EventMesh.subscribe("reset_alarm_event", self.reset_alarm_event)#该ä¼\91æ\81¯äº\86
 
-        EventMesh.subscribe("app_factory", self.app_factory)#app恢复出厂
+            EventMesh.subscribe("reset_end_alarm_event", self.reset_end_alarm_event)#休息结束了
 
-        EventMesh.subscribe("app_restart", self.app_restart)#远程重启
+            EventMesh.subscribe("get_fall_down_state", self.get_fall_down_state)#跌倒报警标识
 
-    
+            EventMesh.subscribe("app_factory", self.app_factory)#app恢复出厂
 
-    def interInfo_queue_thread(self):
-        while True:
-            data = self.interInfo_queue.get()
-            #EventMesh.debug_log("interInfo_queue_thread:data = {}".format(data))
-            if data != None:
-                try:
-                    data["func"](data["data"])
-                except Exception as e:
-                    EventMesh.debug_log("interInfo_queue_thread:ERROR:{}".format(e))
-                    usys.print_exception(e)
-
-    def publish_message_event_interInfo(self,event,msg):
-        self.interInfo_queue.put(msg)
-
-    def publish_call_event_cb(self, *args, **kwargs):#拨打电话
-        EventMesh.publish("publish_message_event_interInfo",{"func":self.call_timer_cb,"data":0})  
-
-    def publish_resatrt_down_event_cb(self, *args, **kwargs):#重启设备
-        EventMesh.publish("publish_message_event_interInfo",{"func":self.powe_resatrt_down_fun,"data":0})  
-    
-    def publish_power_down_event_cb(self, *args, **kwargs):#关机
-        EventMesh.publish("publish_message_event_interInfo",{"func":self.power_down_fun,"data":0})  
+            EventMesh.subscribe("app_restart", self.app_restart)#远程重启
 
-    def publish_find_watch_event_cb(self, *args, **kwargs):#查找设备
-        EventMesh.publish("publish_message_event_interInfo",{"func":self.FIND_timer_cb,"data":0})  
+        
 
-    def publish_alarm_ring_event_cb(self, *args, **kwargs):#闹钟响铃
-        EventMesh.publish("publish_message_event_interInfo",{"func":self.Alarm_timer_cb,"data":0})  
+        def interInfo_queue_thread(self):
+            while True:
+                data = self.interInfo_queue.get()
+                #EventMesh.debug_log("interInfo_queue_thread:data = {}".format(data))
+                if data != None:
+                    try:
+                        data["func"](data["data"])
+                    except Exception as e:
+                        EventMesh.debug_log("interInfo_queue_thread:ERROR:{}".format(e))
+                        usys.print_exception(e)
+
+        def publish_message_event_interInfo(self,event,msg):
+            self.interInfo_queue.put(msg)
+
+        def publish_call_event_cb(self, *args, **kwargs):#拨打电话
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.call_timer_cb,"data":0})  
+
+        def publish_resatrt_down_event_cb(self, *args, **kwargs):#重启设备
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.powe_resatrt_down_fun,"data":0})  
+        
+        def publish_power_down_event_cb(self, *args, **kwargs):#关机
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.power_down_fun,"data":0})  
 
-    def publish_reset_alarm_ring_event_cb(self, *args, **kwargs):#休息响铃
-        EventMesh.publish("publish_message_event_interInfo",{"func":self.reset_alarm_event_cb,"data":0})  
-    
-    def publish_reset_end_alarm_ring_event_cb(self, *args, **kwargs):#休息结束响铃
-        EventMesh.publish("publish_message_event_interInfo",{"func":self.reset_end_alarm_event_cb,"data":0})  
-    
-    def publish_sleep_alarm_ring_event_cb(self, *args, **kwargs):#睡觉响铃
-        EventMesh.publish("publish_message_event_interInfo",{"func":self.sleep_alarm_event_cb,"data":0})  
-    
-    def publish_home_ring_event_cb(self, *args, **kwargs):#回家响铃
-        EventMesh.publish("publish_message_event_interInfo",{"func":self.home_alarm_event_cb,"data":0})  
+        def publish_find_watch_event_cb(self, *args, **kwargs):#查找设备
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.FIND_timer_cb,"data":0})  
+
+        def publish_alarm_ring_event_cb(self, *args, **kwargs):#闹钟响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.Alarm_timer_cb,"data":0})  
+
+        def publish_reset_alarm_ring_event_cb(self, *args, **kwargs):#休息响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.reset_alarm_event_cb,"data":0})  
+        
+        def publish_reset_end_alarm_ring_event_cb(self, *args, **kwargs):#休息结束响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.reset_end_alarm_event_cb,"data":0})  
+        
+        def publish_sleep_alarm_ring_event_cb(self, *args, **kwargs):#睡觉响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.sleep_alarm_event_cb,"data":0})  
+        
+        def publish_home_ring_event_cb(self, *args, **kwargs):#回家响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.home_alarm_event_cb,"data":0})  
 
-    def publish_wakeup_ring_event_cb(self, *args, **kwargs):#起床响铃
-        EventMesh.publish("publish_message_event_interInfo",{"func":self.wakeup_alarm_event_cb,"data":0})  
+        def publish_wakeup_ring_event_cb(self, *args, **kwargs):#起床响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.wakeup_alarm_event_cb,"data":0})  
 
-    def publish_medicine_ring_event_cb(self, *args, **kwargs):#吃药响铃
-        EventMesh.publish("publish_message_event_interInfo",{"func":self.medicine_alarm_event_cb,"data":0})  
+        def publish_medicine_ring_event_cb(self, *args, **kwargs):#吃药响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.medicine_alarm_event_cb,"data":0})  
 
-    def publish_drink_ring_event_cb(self, *args, **kwargs):#喝水响铃
-        EventMesh.publish("publish_message_event_interInfo",{"func":self.drink_alarm_event_cb,"data":0})  
+        def publish_drink_ring_event_cb(self, *args, **kwargs):#喝水响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.drink_alarm_event_cb,"data":0})  
 
-    def publish_fall_done_ring_event_cb(self, *args, **kwargs):#跌倒提醒
-        EventMesh.publish("publish_message_event_interInfo",{"func":self.falldown_alarm_cb,"data":0})  
+        def publish_fall_done_ring_event_cb(self, *args, **kwargs):#跌倒提醒
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.falldown_alarm_cb,"data":0})  
 
 
-    def reset_alarm_event(self,args,msg):#该休息了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count = 0
-            self.alarm_timer1.start(2000, 1, self.publish_reset_alarm_ring_event_cb)
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_RESET_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-    def reset_alarm_event_cb(self,args):#该休息了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count += 1
-            if self.alarm_count >= 3:
+        def reset_alarm_event(self,args,msg):#该休息了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.publish_reset_alarm_ring_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_RESET_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        def reset_alarm_event_cb(self,args):#该休息了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_RESET_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
                 self.alarm_count = 0
                 self.alarm_timer1.stop()
-                return
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_RESET_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-        else:
-            self.alarm_count = 0
-            self.alarm_timer1.stop()
 
-    def reset_end_alarm_event(self,args,msg):#休息结束了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count = 0
-            self.alarm_timer1.start(2000, 1, self.reset_end_alarm_event_cb)
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_RESET_END_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-    
-    def reset_end_alarm_event_cb(self,args):#休息结束了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count += 1
-            if self.alarm_count >= 3:
+        def reset_end_alarm_event(self,args,msg):#休息结束了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.reset_end_alarm_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_RESET_END_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        
+        def reset_end_alarm_event_cb(self,args):#休息结束了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_RESET_END_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
                 self.alarm_count = 0
                 self.alarm_timer1.stop()
-                return
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_RESET_END_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-        else:
-            self.alarm_count = 0
-            self.alarm_timer1.stop()
-    
-    def sleep_alarm_event(self,args,msg):#该睡觉了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count = 0
-            self.alarm_timer1.start(2000, 1, self.publish_sleep_alarm_ring_event_cb)
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SLEEP_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-    def sleep_alarm_event_cb(self,args):#该睡觉了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count += 1
-            if self.alarm_count >= 3:
+        
+        def sleep_alarm_event(self,args,msg):#该睡觉了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.publish_sleep_alarm_ring_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SLEEP_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        def sleep_alarm_event_cb(self,args):#该睡觉了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SLEEP_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
                 self.alarm_count = 0
                 self.alarm_timer1.stop()
-                return
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SLEEP_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-        else:
-            self.alarm_count = 0
-            self.alarm_timer1.stop()
 
 
-    def home_alarm_event(self,args,msg):#该回家了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count = 0
-            self.alarm_timer1.start(2000, 1, self.publish_home_ring_event_cb)
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HOME_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-    
-    def home_alarm_event_cb(self,args):#该回家了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count += 1
-            if self.alarm_count >= 3:
+        def home_alarm_event(self,args,msg):#该回家了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.publish_home_ring_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HOME_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        
+        def home_alarm_event_cb(self,args):#该回家了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HOME_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
                 self.alarm_count = 0
                 self.alarm_timer1.stop()
-                return
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HOME_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-        else:
-            self.alarm_count = 0
-            self.alarm_timer1.stop()
-    
-    def wakeup_alarm_event(self,args,msg):#该起床了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count = 0
-            self.alarm_timer1.start(2000, 1, self.publish_wakeup_ring_event_cb)
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_WAKEUP_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-    
-    def wakeup_alarm_event_cb(self,args):#该起床了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count += 1
-            if self.alarm_count >= 3:
+        
+        def wakeup_alarm_event(self,args,msg):#该起床了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.publish_wakeup_ring_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_WAKEUP_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        
+        def wakeup_alarm_event_cb(self,args):#该起床了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_WAKEUP_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
                 self.alarm_count = 0
                 self.alarm_timer1.stop()
-                return
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_WAKEUP_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-        else:
-            self.alarm_count = 0
-            self.alarm_timer1.stop()
 
 
-    def medicine_alarm_event(self,args,msg):#该吃药了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count = 0
-            self.alarm_timer1.start(2000, 1, self.publish_medicine_ring_event_cb)
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_MEDICINE_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        def medicine_alarm_event(self,args,msg):#该吃药了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.publish_medicine_ring_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_MEDICINE_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
 
-    def medicine_alarm_event_cb(self,args):#该吃药了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count += 1
-            if self.alarm_count >= 3:
+        def medicine_alarm_event_cb(self,args):#该吃药了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_MEDICINE_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
                 self.alarm_count = 0
                 self.alarm_timer1.stop()
-                return
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_MEDICINE_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-        else:
-            self.alarm_count = 0
-            self.alarm_timer1.stop()
 
-    def drink_alarm_event(self,args,msg):#该喝水了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count = 0
-            self.alarm_timer1.start(2000, 1, self.publish_drink_ring_event_cb)
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_DRINK_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-        
+        def drink_alarm_event(self,args,msg):#该喝水了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.publish_drink_ring_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_DRINK_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            
 
 
-    def drink_alarm_event_cb(self,args):#该喝水了
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
-            self.alarm_count += 1# 1 2 
-            if self.alarm_count >= 3:
+        def drink_alarm_event_cb(self,args):#该喝水了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1# 1 2 
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_DRINK_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
                 self.alarm_count = 0
                 self.alarm_timer1.stop()
-                return
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_DRINK_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-        else:
-            self.alarm_count = 0
-            self.alarm_timer1.stop()
-        
-    def falldown_alarm_event(self,args,msg):#跌倒报警启动中提示
-        flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if flag == 0 and wechat_state == 0:
-            EventMesh.publish("close_timer_all")#
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_FALL_ALARM"))
-            self.time_count = 0
-            self.fall_flag = 0
-            self.fall_timer1.stop()
-            self.fall_flag = 1
-            self.fall_timer1.start(4000, 1, self.publish_fall_done_ring_event_cb)
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-
-    def falldown_alarm_cb(self,*args):
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if self.call_state == 0 and wechat_state == 0:
-            self.time_count+=1
-            if self.time_count >= 5:
+            
+        def falldown_alarm_event(self,args,msg):#跌倒报警启动中提示
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if flag == 0 and wechat_state == 0:
+                EventMesh.publish("close_timer_all")#
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_FALL_ALARM"))
                 self.time_count = 0
+                self.fall_flag = 0
                 self.fall_timer1.stop()
-                EventMesh.publish_async("dial_sos_phone")#拨打sos号码
-                return
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_FALL_ALARM"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-        else:
-            self.time_count = 0
-            self.fall_timer1.stop()
-    
-    def close_falldown_alarm_event(self,event,msg):#跌倒挂断挂断
-        if self.fall_flag == 1:#跌倒标志
-            self.fall_flag = 0
-            self.fall_timer1.stop()
-            self.sos_timer1.stop()
-            self.sos_timer2.stop()
-            if self.call_state != 0:
-                self.call_state = 0
-                voiceCall.callEnd()
-            sos_flag = EventMesh.publish("get_sos_flag")
-            if sos_flag == 1:
-                self.call_state = 0
-                EventMesh.publish("set_sos_flag",0)
-                EventMesh.publish("set_sos_num",0)
-                EventMesh.publish("set_hangup_mode",0)
+                self.fall_flag = 1
+                self.fall_timer1.start(4000, 1, self.publish_fall_done_ring_event_cb)
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
 
-    
+        def falldown_alarm_cb(self,*args):
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0:
+                self.time_count+=1
+                if self.time_count >= 5:
+                    self.time_count = 0
+                    self.fall_timer1.stop()
+                    EventMesh.publish_async("dial_sos_phone")#拨打sos号码
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_FALL_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
+                self.time_count = 0
+                self.fall_timer1.stop()
+        
+        def close_falldown_alarm_event(self,event,msg):#跌倒挂断挂断
+            if self.fall_flag == 1:#跌倒标志
+                self.fall_flag = 0
+                self.fall_timer1.stop()
+                self.sos_timer1.stop()
+                self.sos_timer2.stop()
+                if self.call_state != 0:
+                    self.call_state = 0
+                    voiceCall.callEnd()
+                sos_flag = EventMesh.publish("get_sos_flag")
+                if sos_flag == 1:
+                    self.call_state = 0
+                    EventMesh.publish("set_sos_flag",0)
+                    EventMesh.publish("set_sos_num",0)
+                    EventMesh.publish("set_hangup_mode",0)
 
-    def send_find_watch(self, event, msg): #发送查找设备指令
-        open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-        if open_power != None:
-            if open_power == 0:
-                return
-        power_off = EventMesh.publish("get_power_off_state")#获取开机标识
-        if power_off != None:
-            if power_off == 1:
-                return
-        flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if flag == 0 and wechat_state == 0 and self.fall_flag == 0: 
-            EventMesh.publish("close_timer_all")#
-            self.find_state = 1
-            self.FIND_timer_count = 0
-            self.alarm_timer1.start(3000,1,self.publish_find_watch_event_cb)
-            EventMesh.publish("set_led_time_arg",[1,1,330,led_mode.LONG_LIGHT_GREEN,2,1,led_mode.OTHER_MEASURE_MODE])#測量成功
-            # EventMesh.publish("set_led_time_arg",[1000,33000,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("audio_find_haixiu"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-    
-    def stop_find_watch(self, event, msg): 
-        if self.find_state == 1:
-            self.find_state = 0
-            self.FIND_timer_count = 0
-            # EventMesh.publish("stop_led_timer")#设置参数
-            self.aud.stopPlayStream()  #播放声音 
-            self.alarm_timer1.stop()
+        
 
-    def FIND_timer_cb(self, data):
-        flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if flag == 0 and wechat_state == 0 and self.fall_flag == 0:
-            if self.find_state == 1:
-                # EventMesh.debug_log("self.FIND_timer_count:{}".format(self.FIND_timer_count))
+        def send_find_watch(self, event, msg): #发送查找设备指令
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if flag == 0 and wechat_state == 0 and self.fall_flag == 0: 
+                EventMesh.publish("close_timer_all")#
+                self.find_state = 1
+                self.FIND_timer_count = 0
+                self.alarm_timer1.start(3000,1,self.publish_find_watch_event_cb)
+                EventMesh.publish("set_led_time_arg",[1,1,330,led_mode.LONG_LIGHT_GREEN,2,1,led_mode.OTHER_MEASURE_MODE])#測量成功
+                # EventMesh.publish("set_led_time_arg",[1000,33000,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
                 str_data = 'mp3files={}.mp3'.format(audio_buf.index("audio_find_haixiu"))
                 EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                self.FIND_timer_count += 1
-                if self.FIND_timer_count > 10: #120秒30s
-                    EventMesh.publish("STOP_FIND_WATCH")
-        else:
-            self.FIND_timer_count = 0
-            self.alarm_timer1.stop()
-            
-    
-    def stop_FIND(self) :
-        self.alarm_timer1.stop()
+        
+        def stop_find_watch(self, event, msg): 
+            if self.find_state == 1:
+                self.find_state = 0
+                self.FIND_timer_count = 0
+                # EventMesh.publish("stop_led_timer")#设置参数
+                self.aud.stopPlayStream()  #播放声音 
+                self.alarm_timer1.stop()
 
-    def send_alarm_ring(self, event, msg): #发送查找设备指令
-        open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-        if open_power != None:
-            if open_power == 0:
-                return
-        power_off = EventMesh.publish("get_power_off_state")#获取开机标识
-        if power_off != None:
-            if power_off == 1:
-                return
-        flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if flag == 0 and wechat_state == 0 and self.fall_flag == 0:
-            EventMesh.publish("close_timer_all")#
-            self.alarm_state = 1
-            self.alarm_timer_count = 0
-            self.alarm_timer1.start(3000,1,self.publish_alarm_ring_event_cb)
-            # EventMesh.publish("set_led_time_arg",[1,1,330,led_mode.LONG_LIGHT_GREEN,2,1,led_mode.OTHER_MEASURE_MODE])#測量成功
-            # EventMesh.publish("set_led_time_arg",[1000,33000,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_ALARM_NEW"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-    
-    def stop_alarm_ring(self, event, msg): #停止闹钟响铃
-        if self.alarm_state == 1:
-            self.alarm_state = 0
-            self.alarm_timer_count = 0
-            # EventMesh.publish("stop_led_timer")#设置参数
-            self.aud.stopPlayStream()  #停止播放
+        def FIND_timer_cb(self, data):
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if flag == 0 and wechat_state == 0 and self.fall_flag == 0:
+                if self.find_state == 1:
+                    # EventMesh.debug_log("self.FIND_timer_count:{}".format(self.FIND_timer_count))
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("audio_find_haixiu"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    self.FIND_timer_count += 1
+                    if self.FIND_timer_count > 10: #120秒30s
+                        EventMesh.publish("STOP_FIND_WATCH")
+            else:
+                self.FIND_timer_count = 0
+                self.alarm_timer1.stop()
+                
+        
+        def stop_FIND(self) :
             self.alarm_timer1.stop()
 
-    def Alarm_timer_cb(self, data):
-        flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
-        wechat_state = EventMesh.publish("get_wechat_state")
-        if flag == 0 and wechat_state == 0 and self.fall_flag == 0:
-            if self.alarm_state == 1:
-                # EventMesh.debug_log("self.alarm_timer_count:{}".format(self.alarm_timer_count))
+        def send_alarm_ring(self, event, msg): #发送查找设备指令
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if flag == 0 and wechat_state == 0 and self.fall_flag == 0:
+                EventMesh.publish("close_timer_all")#
+                self.alarm_state = 1
+                self.alarm_timer_count = 0
+                self.alarm_timer1.start(3000,1,self.publish_alarm_ring_event_cb)
+                # EventMesh.publish("set_led_time_arg",[1,1,330,led_mode.LONG_LIGHT_GREEN,2,1,led_mode.OTHER_MEASURE_MODE])#測量成功
+                # EventMesh.publish("set_led_time_arg",[1000,33000,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
                 str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_ALARM_NEW"))
                 EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                self.alarm_timer_count += 1
-                if self.alarm_timer_count > 15: #120秒30s
-                    EventMesh.publish("STOP_ALARM_RING")
-        else:
-            self.alarm_timer_count = 0
-            self.alarm_timer1.stop()
+        
+        def stop_alarm_ring(self, event, msg): #停止闹钟响铃
+            if self.alarm_state == 1:
+                self.alarm_state = 0
+                self.alarm_timer_count = 0
+                # EventMesh.publish("stop_led_timer")#设置参数
+                self.aud.stopPlayStream()  #停止播放
+                self.alarm_timer1.stop()
 
-    def get_fall_down_state(self,event,msg):
-        return self.fall_flag
+        def Alarm_timer_cb(self, data):
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if flag == 0 and wechat_state == 0 and self.fall_flag == 0:
+                if self.alarm_state == 1:
+                    # EventMesh.debug_log("self.alarm_timer_count:{}".format(self.alarm_timer_count))
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_ALARM_NEW"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    self.alarm_timer_count += 1
+                    if self.alarm_timer_count > 15: #120秒30s
+                        EventMesh.publish("STOP_ALARM_RING")
+            else:
+                self.alarm_timer_count = 0
+                self.alarm_timer1.stop()
 
-    def sos_short_press(self,args,msg):
-        EventMesh.publish("interup_call_event")#如果在电话中强制挂断电话
-        EventMesh.publish("close_audio_play")#强制关闭音频文件播放
-        EventMesh.publish("STOP_FIND_WATCH")#停止查找设备
-        EventMesh.publish("STOP_ALARM_RING")#停止闹钟响铃
-        EventMesh.publish("play_cur_time_event")#播报当前时间
-        #播报当前时间
+        def get_fall_down_state(self,event,msg):
+            return self.fall_flag
 
-    def recv_wechat_audio(self,event,str_data):#接收微聊语音播放
-        if self.call_state == 0 and self.fall_flag == 0:
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_WECHAT_RECV"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        def sos_short_press(self,args,msg):
+            EventMesh.publish("interup_call_event")#如果在电话中强制挂断电话
+            EventMesh.publish("close_audio_play")#强制关闭音频文件播放
+            EventMesh.publish("STOP_FIND_WATCH")#停止查找设备
+            EventMesh.publish("STOP_ALARM_RING")#停止闹钟响铃
+            EventMesh.publish("play_cur_time_event")#播报当前时间
+            #播报当前时间
 
+        def recv_wechat_audio(self,event,str_data):#接收微聊语音播放
+            if self.call_state == 0 and self.fall_flag == 0:
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_WECHAT_RECV"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
 
 
-    def audio_event_queue_thread(self):
-        while True:
-            data = self.audio_event_queue.get()
-            #EventMesh.debug_log("audio_event_queue:data = {}".format(data))
-            if data != None:
-                try:
-                    data["func"](data["data"])
-                except Exception as e:
-                    EventMesh.debug_log("audio_event_queue:ERROR:{}".format(e))
-                    usys.print_exception(e)
-    def publish_message_event_audio(self,event,msg):
-        self.audio_event_queue.put(msg)
-
-    def play_audio_file(self, *args, **kwargs):#播放音频文件
-        # EventMesh.debug_log("args",args)
-        EventMesh.publish("publish_message_event_audio",{"func":self.play_audio_file_do,"data":args[1]})  
-
-    def play_audio_file_do(self,data):#msg 拼接的路径文件
-        open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-        power_off = EventMesh.publish("get_power_off_state")#获取开机标识
-        # EventMesh.debug_log("play_audio_file",data[0],data[1],open_power,power_off)#路径 str_data[1] 是否需要被打断
-        if open_power != None:
-            if open_power == 0:
-                return
-        if power_off != None:
-            if power_off == 1:
-                return
-        self.aud.montage_play('U:/static/audio.bin',1,data[1],data[0])
-        # EventMesh.debug_log("play_audio_file end",data[0],data[1])#路径 str_data[1] 是否需要被打断
-        
 
+        def audio_event_queue_thread(self):
+            while True:
+                data = self.audio_event_queue.get()
+                #EventMesh.debug_log("audio_event_queue:data = {}".format(data))
+                if data != None:
+                    try:
+                        data["func"](data["data"])
+                    except Exception as e:
+                        EventMesh.debug_log("audio_event_queue:ERROR:{}".format(e))
+                        usys.print_exception(e)
+        def publish_message_event_audio(self,event,msg):
+            self.audio_event_queue.put(msg)
+
+        def play_audio_file(self, *args, **kwargs):#播放音频文件
+            # EventMesh.debug_log("args",args)
+            EventMesh.publish("publish_message_event_audio",{"func":self.play_audio_file_do,"data":args[1]})  
+
+        def play_audio_file_do(self,data):#msg 拼接的路径文件
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            # EventMesh.debug_log("play_audio_file",data[0],data[1],open_power,power_off)#路径 str_data[1] 是否需要被打断
+            if open_power != None:
+                if open_power == 0:
+                    return
+            if power_off != None:
+                if power_off == 1:
+                    return
+            self.aud.montage_play('U:/static/audio.bin',1,data[1],data[0])
+            # EventMesh.debug_log("play_audio_file end",data[0],data[1])#路径 str_data[1] 是否需要被打断
+            
 
 
 
-    def powe_resatrt_down_fun(self, *args):#重启设备
-        EventMesh.publish("close_led_pin")
-        self.aud.stopPlayStream()
-        Power.powerRestart()
 
-    def power_down_fun(self, *args):
-        EventMesh.publish("close_led_pin")
-        self.aud.stopPlayStream()
-        Power.powerDown()
+        def powe_resatrt_down_fun(self, *args):#重启设备
+            EventMesh.publish("close_led_pin")
+            self.aud.stopPlayStream()
+            Power.powerRestart()
 
+        def power_down_fun(self, *args):
+            EventMesh.publish("close_led_pin")
+            self.aud.stopPlayStream()
+            Power.powerDown()
 
 
-    def close_audio_play(self, event, msg): #msg
-        open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-        power_off = EventMesh.publish("get_power_off_state")#获取开机标识
-        if open_power != None:
-            if open_power == 0:
-                return
-        if power_off != None:
-            if power_off == 1:
-                return
-        self.aud.stopPlayStream()
 
+        def close_audio_play(self, event, msg): #msg
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            if power_off != None:
+                if power_off == 1:
+                    return
+            self.aud.stopPlayStream()
 
 
-    def close_timer_all(self, event, msg): 
-        # EventMesh.debug_log("close_timer_all!!!!!!!!!!!!!!!!!!!")
-        open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-        power_off = EventMesh.publish("get_power_off_state")#获取开机标识
-        if open_power != None:
-            if open_power == 0:
-                return
-        if power_off != None:
-            if power_off == 1:
-                return
-        self.aud.stopPlayStream()
-        
+
+        def close_timer_all(self, event, msg): 
+            # EventMesh.debug_log("close_timer_all!!!!!!!!!!!!!!!!!!!")
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            if power_off != None:
+                if power_off == 1:
+                    return
+            self.aud.stopPlayStream()
+            
+            
+            self.timer.stop()
+            self.sos_timer2.stop()
+            self.sos_timer1.stop()
+            self.fall_flag = 0
+            self.fall_timer1.stop()
+            self.alarm_timer1.stop()
         
-        self.timer.stop()
-        self.sos_timer2.stop()
-        self.sos_timer1.stop()
-        self.fall_flag = 0
-        self.fall_timer1.stop()
-        self.alarm_timer1.stop()
-       
-
-    def answer_call_event(self, event, msg): #
-        if self.call_state == 2:
-            sos_flag = EventMesh.publish("get_sos_flag")
-            if sos_flag == 1:
-                self.call_state = 0
-                EventMesh.publish("set_sos_flag",0)
-                EventMesh.publish("set_sos_num",0)
-                EventMesh.publish("set_hangup_mode",0)
-            EventMesh.publish("close_timer_all")#
-            voiceCall.callAnswer()
 
-    def set_call_state(self, event, msg): #
-        self.call_state = msg
+        def answer_call_event(self, event, msg): #
+            if self.call_state == 2:
+                sos_flag = EventMesh.publish("get_sos_flag")
+                if sos_flag == 1:
+                    self.call_state = 0
+                    EventMesh.publish("set_sos_flag",0)
+                    EventMesh.publish("set_sos_num",0)
+                    EventMesh.publish("set_hangup_mode",0)
+                EventMesh.publish("close_timer_all")#
+                voiceCall.callAnswer()
 
-    def dialin_call_event(self, event, msg):
-        open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-        if open_power != None:
-            if open_power == 0:
-                return
-        power_off = EventMesh.publish("get_power_off_state")#获取开机标识
-        if power_off != None:
-            if power_off == 1:
-                return
-        EventMesh.publish("close_timer_all")#
-        EventMesh.publish("close_wechat_btn_timer")#
-        self.timer.start(6000, 1, self.publish_call_event_cb)
-        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CALL_mp3"))
-        EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件
-        # EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-    
-    def call_timer_cb(self,data):
-        open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-        if open_power != None:
-            if open_power == 0:
-                return
-        power_off = EventMesh.publish("get_power_off_state")#获取开机标识
-        if power_off != None:
-            if power_off == 1:
-                return
-        if self.call_state != 2:
+        def set_call_state(self, event, msg): #
+            self.call_state = msg
+
+        def dialin_call_event(self, event, msg):
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
             EventMesh.publish("close_timer_all")#
-            return
-        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CALL_mp3"))
-        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-       
-    def dial_out_call_center_cb(self, event, msg):#电话拨出去
-        open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-        if open_power != None:
-            if open_power == 0:
-                return
-        power_off = EventMesh.publish("get_power_off_state")#获取开机标识
-        if power_off != None:
-            if power_off == 1:
+            EventMesh.publish("close_wechat_btn_timer")#
+            EventMesh.publish("set_led_time_arg",[1,2,10*10,led_mode.FLASH_LIGHT_RED,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
+            self.timer.start(6000, 1, self.publish_call_event_cb)
+            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CALL_mp3"))
+            EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件
+            # EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+        
+        def call_timer_cb(self,data):
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            if self.call_state != 2:
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("close_timer_all")#
                 return
-        # EventMesh.debug_log("dial_out_call_center_cb",msg)
-        if self.call_state == 0:
-            self.phone_num = ''
-            EventMesh.publish("close_timer_all")#
-            if msg == None:
-                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL"))
-                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-                # EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            else:
-                self.phone_num = str(msg)
-                self.timer1.start(2000, 0, self.time_out_phone)
-                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SOS_ALERT"))
-                EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件
-    
-    def time_out_phone(self, msg):#电话拨出去
-        voiceCall.callStart(self.phone_num)
+            EventMesh.publish("set_led_time_arg",[1,2,10*10,led_mode.FLASH_LIGHT_RED,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
+            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CALL_mp3"))
+            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        
+        def dial_out_call_center_cb(self, event, msg):#电话拨出去
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            # EventMesh.debug_log("dial_out_call_center_cb",msg)
+            if self.call_state == 0:
+                self.phone_num = ''
+                EventMesh.publish("close_timer_all")#
+                if msg == None:
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+                    # EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                else:
+                    self.phone_num = str(msg)
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SOS_ALERT"))
+                    EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件
+                    self.timer1.start(2000, 0, self.time_out_phone)
+                    
+        
+        def time_out_phone(self, msg):#电话拨出去
+            voiceCall.callStart(self.phone_num)
 
-    def sos_out_call_center_cb(self, event, msg):#sos电话呼叫中
-        open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-        if open_power != None:
-            if open_power == 0:
-                return
-        power_off = EventMesh.publish("get_power_off_state")#获取开机标识
-        if power_off != None:
-            if power_off == 1:
-                return
-        self.sos_phone_num = ''
-        # EventMesh.debug_log("sos_out_call_center_cb",msg)
-        if self.call_state == 0:
-           
-            EventMesh.publish("close_timer_all")#
-            if msg == None:
-                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL"))
-                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
-                # EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            else:
-                sos_state =  EventMesh.publish("get_dev_state")
+        def sos_out_call_center_cb(self, event, msg):#sos电话呼叫中
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            self.sos_phone_num = ''
+            # EventMesh.debug_log("sos_out_call_center_cb",msg)
+            if self.call_state == 0:
+            
+                EventMesh.publish("close_timer_all")#
+                if msg == None:
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+                    # EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                else:
+                    sos_state =  EventMesh.publish("get_dev_state")
 
-                tmp = 1 << 16
-                sos_state = sos_state|tmp #第21位=1
-                EventMesh.publish("set_dev_state",sos_state)
+                    tmp = 1 << 16
+                    sos_state = sos_state|tmp #第21位=1
+                    EventMesh.publish("set_dev_state",sos_state)
 
-                EventMesh.publish(constants.EVENT.START_LOCATION,[constants.PROTOCOL.AL_SEND,sos_state]) #开始AL定位
-                EventMesh.publish("close_timer_all")#
-                self.sos_phone_num = msg
-                self.sos_timer1.start(2000, 0, self.sos_call_out_phone)
-                self.sos_timer2.start(30000, 0, self.sos_time_out_phone)
-                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SOS_ALERT"))
-                EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件
-                
-    def sos_time_out_phone(self, msg):#30s超时未打通或者信号不好则重新拨打
-        sos_flag = EventMesh.publish("get_sos_flag")
-        if sos_flag == 1:
-            if self.call_state == 0:
-                EventMesh.publish("set_sos_info_call") 
-                
-    def sos_call_out_phone(self, msg):#电话拨出去
-        voiceCall.callStart(self.sos_phone_num)
-    
+                    EventMesh.publish(constants.EVENT.START_LOCATION,[constants.PROTOCOL.AL_SEND,sos_state]) #开始AL定位
+                    EventMesh.publish("close_timer_all")#
+                    self.sos_phone_num = msg
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SOS_ALERT"))
+                    EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件
+                    self.sos_timer1.start(2000, 0, self.sos_call_out_phone)
+                    self.sos_timer2.start(30000, 0, self.sos_time_out_phone)
+                    
+                    
+        def sos_time_out_phone(self, msg):#30s超时未打通或者信号不好则重新拨打
+            sos_flag = EventMesh.publish("get_sos_flag")
+            if sos_flag == 1:
+                if self.call_state == 0:
+                    EventMesh.publish("set_sos_info_call") 
+                    
+        def sos_call_out_phone(self, msg):#电话拨出去
+            voiceCall.callStart(self.sos_phone_num)
+        
 
-    def call_test_event(self, event, msg):
-        voiceCall.callStart(str("10086"))
+        def call_test_event(self, event, msg):
+            voiceCall.callStart(str("10086"))
 
-    def get_call_state(self, event, msg):
-        return self.call_state
-    
-    def interup_call_event(self, event, msg):#侧边金属按钮挂断来电
-        flag = EventMesh.publish("get_call_state") 
-        if flag == 2 or flag == 3:#电话通话中 或者呼叫中挂断中断
-            self.call_state = 0
-            voiceCall.callEnd()
-    
-    def dialing_out_event(self, event, msg):#侧边金属按键挂断电话呼叫中
-        flag = EventMesh.publish("get_call_state") 
-        if flag == 1:#电话呼叫中
-            self.call_state = 0
-            voiceCall.callEnd()
-            
+        def get_call_state(self, event, msg):
+            return self.call_state
+        
+        def interup_call_event(self, event, msg):#侧边金属按钮挂断来电
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 2 or flag == 3:#电话通话中 或者呼叫中挂断中断
+                self.call_state = 0
+                voiceCall.callEnd()
+        
+        def dialing_out_event(self, event, msg):#侧边金属按键挂断电话呼叫中
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 1:#电话呼叫中
+                self.call_state = 0
+                voiceCall.callEnd()
+                
 
 
-    def play_cur_step_event(self, event, msg): #msg 1 播放当前步数
-        flag = EventMesh.publish("get_call_state") 
-        if flag == 0:#电话通话中 或者呼叫中挂断中断
-            if self.fall_flag == 0:
-                EventMesh.publish("close_timer_all")#
-            step = EventMesh.publish("get_old_step_value")
-            EventMesh.debug_log("step",step)
-            self.setp_old = step
-            if step <= 10:#
-                if step == 10:#十步
-                    str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                else:# 9步
-                    str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(step)),audio_buf.index("R_READ_STEP_4"))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            elif step <= 100:#十 90
-                if step == 100:
-                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_1"),audio_buf.index("R_READ_STEP_2"),\
-                        audio_buf.index("R_READ_STEP_4"))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                else:
-                    step_tmp = str(step)
-                    shi_value = int(step_tmp[0])#十
-                    ge_value = int(step_tmp[1])#个
-                    if shi_value > 1:#大于19步
-                        if ge_value == 0:#9十步 70十步
-                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
+        def play_cur_step_event(self, event, msg): #msg 1 播放当前步数
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 0:#电话通话中 或者呼叫中挂断中断
+                if self.fall_flag == 0:
+                    EventMesh.publish("close_timer_all")#
+                step = EventMesh.publish("get_old_step_value")
+                EventMesh.debug_log("step",step)
+                self.setp_old = step
+                if step <= 10:#
+                    if step == 10:#十步
+                        str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    else:# 9步
+                        str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(step)),audio_buf.index("R_READ_STEP_4"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                elif step <= 100:#十 90
+                    if step == 100:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_1"),audio_buf.index("R_READ_STEP_2"),\
                             audio_buf.index("R_READ_STEP_4"))
-                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                        else:#9十2步
-                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
-                            audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
-                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                    else:#十9步
-                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
-                        audio_buf.index("R_READ_STEP_4"))
                         EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            elif step <= 1000:
-                if step == 1000:#1千步
-                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_1"),\
-                    audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_STEP_4"))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                else:
-                    step_tmp = str(step)#500
-                    bai_value = int(step_tmp[0])#百
-                    shi_value = int(step_tmp[1])#十
-                    ge_value = int(step_tmp[2])#个
-                    #101 110 1
-                    if shi_value > 0:#110
-                        if ge_value == 0:
-                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
-                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
-                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                        else:
-                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
-                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
-                            audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
-                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                     else:
-                        if shi_value == 0 and ge_value == 0:#500 600
-                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
-                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_STEP_4"))
-                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                            pass
-                        else:
-
-                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
-                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
-                            audio_buf.index("R_READ_STEP_4"))
-                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                        pass
-            elif step <= 10000:#千
-                if step == 10000:
-                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_1"),\
-                    audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_STEP_4"))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                    pass
-                else:
-                    one_thousand = step//1000 #千
-                    one_hundred = step%1000 #百
-                    baishu = step%100 #十
-                    shishu = step%10 #个
-                    step_tmp = str(step)
-                    qian = int(step_tmp[0])#千
-                    bai_value = int(step_tmp[1])#百
-                    shi_value = int(step_tmp[2])#十
-                    ge_value = int(step_tmp[3])#个
-                    if bai_value <= 0:
-                        if shi_value <= 0:
-                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                        step_tmp = str(step)
+                        shi_value = int(step_tmp[0])#十
+                        ge_value = int(step_tmp[1])#个
+                        if shi_value > 1:#大于19步
+                            if ge_value == 0:#9十步 70十步
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
+                                audio_buf.index("R_READ_STEP_4"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            else:#9十2步
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
+                                audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        else:#十9步
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
                             audio_buf.index("R_READ_STEP_4"))
                             EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                        else:
-                            if ge_value == 0:#1020 1040
-                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
-                                audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
+                elif step <= 1000:
+                    if step == 1000:#1千步
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_1"),\
+                        audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_STEP_4"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    else:
+                        step_tmp = str(step)#500
+                        bai_value = int(step_tmp[0])#百
+                        shi_value = int(step_tmp[1])#十
+                        ge_value = int(step_tmp[2])#个
+                        #101 110 1
+                        if shi_value > 0:#110
+                            if ge_value == 0:
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
                                 EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                            else:#1021 
-                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
-                                audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                            else:
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
+                                audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
                                 EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                    else:
-                        if shi_value <= 0:#1109
-                            if ge_value == 0:#1110
-                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),
+                        else:
+                            if shi_value == 0 and ge_value == 0:#500 600
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
                                 audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_STEP_4"))
                                 EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                pass
                             else:
-                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),
+
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
                                 audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
                                 audio_buf.index("R_READ_STEP_4"))
                                 EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                        else:
-                            if ge_value == 0:#1110
-                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),
-                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
-                                audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
-                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                            else:#1117
-                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),
-                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
-                                audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                            pass
+                elif step <= 10000:#千
+                    if step == 10000:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_1"),\
+                        audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_STEP_4"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        pass
+                    else:
+                        one_thousand = step//1000 #千
+                        one_hundred = step%1000 #百
+                        baishu = step%100 #十
+                        shishu = step%10 #个
+                        step_tmp = str(step)
+                        qian = int(step_tmp[0])#千
+                        bai_value = int(step_tmp[1])#百
+                        shi_value = int(step_tmp[2])#十
+                        ge_value = int(step_tmp[3])#个
+                        if bai_value <= 0:
+                            if shi_value <= 0:
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                                audio_buf.index("R_READ_STEP_4"))
                                 EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-
-                    pass
-            elif step <= 100000:#万
-                        if step == 100000:#10万步
-                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3"),\
-                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_STEP_4"))
-                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            else:
+                                if ge_value == 0:#1020 1040
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                    audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                    audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                else:#1021 
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                    audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                    audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                         else:
-                            step_tmp = str(step)
-                            wang = int(step_tmp[0])#万
-                            qian = int(step_tmp[1])#千
-                            bai_value = int(step_tmp[2])#百
-                            shi_value = int(step_tmp[3])#十
-                            ge_value = int(step_tmp[4])#个
-                            if wang > 0 and qian > 0 and bai_value > 0:#11109 11111
-                                if shi_value <= 0:#11109
-                                    if ge_value == 0:#11100
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                        audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                        audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
-                                        audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_STEP_4"))
-                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                    else:#11108
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                        audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                        audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
-                                        audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
-                                        audio_buf.index("R_READ_STEP_4"))
-                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                        pass
+                            if shi_value <= 0:#1109
+                                if ge_value == 0:#1110
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                    audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),
+                                    audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_STEP_4"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                                 else:
-                                    if ge_value == 0:#11110
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                        audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                        audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
-                                        audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
-                                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
-                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                    else:#11116
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                        audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                        audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
-                                        audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
-                                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
-                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                        pass
-                            elif wang > 0 and qian > 0:#11000 11010 11012 11008
-                                if shi_value > 0:
-                                    if ge_value == 0:#11010
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                        audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                        audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
-                                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
-                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                    else:#11016
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                        audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                        audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
-                                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
-                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                else:   
-                                    if ge_value == 0:#11000
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                        audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                        audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_STEP_4"))
-                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                    else:#11004
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                        audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
-                                        audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
-                                        audio_buf.index("R_READ_STEP_4"))
-                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                            
-                            elif wang > 0:#1
-                                if bai_value > 0:#百
-                                    if shi_value > 0:#10110
-                                        if ge_value == 0:#10150
-                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
-                                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
-                                            audio_buf.index("R_READ_STEP_4"))
-                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                        else:
-                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
-                                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
-                                            audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
-                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                    else:#10108
-                                        if ge_value == 0:#10100
-                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                    audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),
+                                    audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                                    audio_buf.index("R_READ_STEP_4"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            else:
+                                if ge_value == 0:#1110
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                    audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),
+                                    audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                    audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                else:#1117
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                    audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),
+                                    audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                    audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                        pass
+                elif step <= 100000:#万
+                            if step == 100000:#10万步
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3"),\
+                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_STEP_4"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            else:
+                                step_tmp = str(step)
+                                wang = int(step_tmp[0])#万
+                                qian = int(step_tmp[1])#千
+                                bai_value = int(step_tmp[2])#百
+                                shi_value = int(step_tmp[3])#十
+                                ge_value = int(step_tmp[4])#个
+                                if wang > 0 and qian > 0 and bai_value > 0:#11109 11111
+                                    if shi_value <= 0:#11109
+                                        if ge_value == 0:#11100
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
                                             audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_STEP_4"))
                                             EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                        else:#10108
-                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                        else:#11108
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
                                             audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
                                             audio_buf.index("R_READ_STEP_4"))
                                             EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                else:
+                                            pass
+                                    else:
+                                        if ge_value == 0:#11110
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                            audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:#11116
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                            audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                            pass
+                                elif wang > 0 and qian > 0:#11000 11010 11012 11008
                                     if shi_value > 0:
-                                        if ge_value == 0:#10090
-                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                        if ge_value == 0:#11010
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
                                             audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
-                                            EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                        else:#10098
-                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:#11016
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
                                             audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
                                             EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                    else:   
+                                        if ge_value == 0:#11000
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:#11004
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                                            audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                
+                                elif wang > 0:#1
+                                    if bai_value > 0:#百
+                                        if shi_value > 0:#10110
+                                            if ge_value == 0:#10150
+                                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
+                                                audio_buf.index("R_READ_STEP_4"))
+                                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                            else:
+                                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
+                                                audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:#10108
+                                            if ge_value == 0:#10100
+                                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_STEP_4"))
+                                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                            else:#10108
+                                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                                                audio_buf.index("R_READ_STEP_4"))
+                                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                                     else:
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
-                                        audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
-                                        audio_buf.index("R_READ_STEP_4"))
-                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-
-    def set_usb(self, event, msg): #msg 1 正在充电 2充电已移出 3 充电已满 0
-        open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-        if open_power != None:
-            if open_power == 0:
-                return
-        power_off = EventMesh.publish("get_power_off_state")#获取开机标识
-        if power_off != None:
-            if power_off == 1:
-                return
-        flag = EventMesh.publish("get_call_state") 
-        get_hr_state = EventMesh.publish("get_hr_state")
-        get_spo2_state = EventMesh.publish("get_spo2_state")
-        get_bp_state  = EventMesh.publish("get_bp_state")
-        get_bg_state  = EventMesh.publish("get_bg_state")
-        get_temp_state  = EventMesh.publish("get_temp_state")
-        if msg == 1:
-            if get_hr_state != None and get_spo2_state != None and get_bp_state != None and get_bg_state != None and get_temp_state != None:
-                if get_hr_state != 0:
-                    
-                    EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
-                    if get_hr_state == 1:
-                        EventMesh.publish("stop_led_timer")#设置参数
-                        EventMesh.publish("set_start_measure_time",0)#设置开始测量的时间戳时间
+                                        if shi_value > 0:
+                                            if ge_value == 0:#10090
+                                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                                audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
+                                                EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                            else:#10098
+                                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                                audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                                            audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
 
-                    EventMesh.debug_log("stop debug8")
-                    EventMesh.publish(constants.EVENT.STOP_HEART) 
-                elif get_spo2_state != 0:
-                    EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
-                    if get_spo2_state == 1:
-                        EventMesh.publish("stop_led_timer")#设置参数
-                    EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-                    EventMesh.debug_log("stop debug13")
-                elif get_bp_state != 0:
-                    EventMesh.publish("set_bp_state",0)#2代表后台进入测试
-                    if get_bp_state == 1:
-                        EventMesh.publish("stop_led_timer")#设置参数
-                    EventMesh.publish(constants.EVENT.STOP_HEART)
-                    EventMesh.debug_log("stop bp debug1")
-                elif get_bg_state != 0:
-                    EventMesh.publish("set_bg_state",0)#2代表后台进入测试
-                    if get_bg_state == 1:#手动开灯关闭灯
-                        EventMesh.publish("stop_led_timer")#设置参数
-                    EventMesh.publish(constants.EVENT.STOP_HEART)
-                    EventMesh.debug_log("stop BG  debug14")
-                if get_temp_state != 0:
-                    
-                    EventMesh.publish("set_temp_state",0)#2代表后台进入测试
-                    if get_temp_state == 1:
-                        EventMesh.publish("stop_led_timer")#设置参数
-                        EventMesh.publish("get_start_temp_measure_time",0)#
-                    EventMesh.publish(constants.EVENT.STOP_TEMP)
-                    EventMesh.debug_log("stop temp  debug14")
-        if msg == 1:
-            self.usbState = msg
-            str_buf = [1,1,10,led_mode.LONG_LIGHT_RED,4,2,led_mode.CHARGE_IN_MODE]
-            EventMesh.publish("set_led_time_arg",str_buf)#
-            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
-                EventMesh.publish("close_timer_all")#
-                self.aud.stop()
-                self.aud.play(1,1,'U:/static/R_CHARGE_IN.mp3')
-                # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CHARGE_IN"))
-                # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            EventMesh.debug_log("charge R_CHARGE_IN")
-            
-            
-        elif msg == 2:
-            self.usbState = msg
-            EventMesh.publish("stop_led_timer")#设置参数
-            # EventMesh.publish("set_led_time_arg",[0,1000,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.CHARGE_OUT_MODE])#測量成功
-            EventMesh.publish("set_led_time_arg",[1,1,0,led_mode.FLASH_LIGHT_GREEN,4,4,led_mode.CHARGE_OUT_MODE])#測量成功
-            EventMesh.debug_log("charge R_CHARGE_OUT")
-            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
-                EventMesh.publish("close_timer_all")#
-                self.aud.stop()
-                self.aud.play(1,1,'U:/static/R_CHARGE_OUT.mp3')
-                # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CHARGE_OUT"))
-                # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            
+        def set_usb(self, event, msg): #msg 1 正在充电 2充电已移出 3 充电已满 0
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            flag = EventMesh.publish("get_call_state") 
+            get_hr_state = EventMesh.publish("get_hr_state")
+            get_spo2_state = EventMesh.publish("get_spo2_state")
+            get_bp_state  = EventMesh.publish("get_bp_state")
+            get_bg_state  = EventMesh.publish("get_bg_state")
+            get_temp_state  = EventMesh.publish("get_temp_state")
+            if msg == 1:
+                if get_hr_state != None and get_spo2_state != None and get_bp_state != None and get_bg_state != None and get_temp_state != None:
+                    if get_hr_state != 0:
+                        
+                        EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
+                        if get_hr_state == 1:
+                            EventMesh.publish("stop_led_timer")#设置参数
+                            EventMesh.publish("set_start_measure_time",0)#设置开始测量的时间戳时间
+
+                        EventMesh.debug_log("stop debug8")
+                        EventMesh.publish(constants.EVENT.STOP_HEART) 
+                    elif get_spo2_state != 0:
+                        EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
+                        if get_spo2_state == 1:
+                            EventMesh.publish("stop_led_timer")#设置参数
+                        EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+                        EventMesh.debug_log("stop debug13")
+                    elif get_bp_state != 0:
+                        EventMesh.publish("set_bp_state",0)#2代表后台进入测试
+                        if get_bp_state == 1:
+                            EventMesh.publish("stop_led_timer")#设置参数
+                        EventMesh.publish(constants.EVENT.STOP_HEART)
+                        EventMesh.debug_log("stop bp debug1")
+                    elif get_bg_state != 0:
+                        EventMesh.publish("set_bg_state",0)#2代表后台进入测试
+                        if get_bg_state == 1:#手动开灯关闭灯
+                            EventMesh.publish("stop_led_timer")#设置参数
+                        EventMesh.publish(constants.EVENT.STOP_HEART)
+                        EventMesh.debug_log("stop BG  debug14")
+                    if get_temp_state != 0:
+                        
+                        EventMesh.publish("set_temp_state",0)#2代表后台进入测试
+                        if get_temp_state == 1:
+                            EventMesh.publish("stop_led_timer")#设置参数
+                            EventMesh.publish("get_start_temp_measure_time",0)#
+                        EventMesh.publish(constants.EVENT.STOP_TEMP)
+                        EventMesh.debug_log("stop temp  debug14")
+            if msg == 1:
+                self.usbState = msg
+                str_buf = [1,1,10,led_mode.LONG_LIGHT_RED,4,2,led_mode.CHARGE_IN_MODE]
+                EventMesh.publish("set_led_time_arg",str_buf)#
+                if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                    EventMesh.publish("close_timer_all")#
+                    self.aud.stop()
+                    self.aud.play(1,1,'U:/static/R_CHARGE_IN.mp3')
+                    # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CHARGE_IN"))
+                    # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                EventMesh.debug_log("charge R_CHARGE_IN")
+                
+                
+            elif msg == 2:
+                self.usbState = msg
+                EventMesh.publish("stop_led_timer")#设置参数
+                # EventMesh.publish("set_led_time_arg",[0,1000,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.CHARGE_OUT_MODE])#測量成功
+                EventMesh.publish("set_led_time_arg",[1,1,0,led_mode.FLASH_LIGHT_GREEN,4,4,led_mode.CHARGE_OUT_MODE])#測量成功
+                EventMesh.debug_log("charge R_CHARGE_OUT")
+                if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                    EventMesh.publish("close_timer_all")#
+                    self.aud.stop()
+                    self.aud.play(1,1,'U:/static/R_CHARGE_OUT.mp3')
+                    # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CHARGE_OUT"))
+                    # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                
 
 
-        elif msg == 3:
-            self.usbState = msg
-            EventMesh.debug_log("charge full")
-            str_buf = [1,1,10,led_mode.LONG_LIGHT_GREEN,4,2,led_mode.CHARGE_FULL_MODE]
-            EventMesh.publish("set_led_time_arg",str_buf)#
-            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
-                EventMesh.publish("close_timer_all")#
-                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CHARGE_FULL"))
-                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            
+            elif msg == 3:
+                self.usbState = msg
+                EventMesh.debug_log("charge full")
+                str_buf = [1,1,10,led_mode.LONG_LIGHT_GREEN,4,2,led_mode.CHARGE_FULL_MODE]
+                EventMesh.publish("set_led_time_arg",str_buf)#
+                # if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                #     EventMesh.publish("close_timer_all")#
+                #     str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CHARGE_FULL"))
+                #     EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                
 
 
-    def get_usb(self, event, msg):
-        return self.usbState
-    
+        def get_usb(self, event, msg):
+            return self.usbState
+        
 
 
-    def app_factory(self,event,msg):
-        if msg != None:
-            number = str(msg)
-            sms.sendPduMsg(number, 'factory# send ok', 'UCS2')
-        ret = 0
-        ret = ql_fs.path_exists("/usr/static/storage_file")#
-        if ret == True:
-            ql_fs.rmdirs("/usr/static/storage_file")
-            ql_fs.mkdirs("/usr/static/storage_file")
-        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:
-            EventMesh.publish(constants.PROTOCOL.DLT_SEND)
-       
-        self.factory_timer.start(6*1000,0,self.factory_cb)
-        pass
-    def factory_cb(self,*argc):
-        self.aud.stopPlayStream()
-        Power.powerRestart()
-
-    def app_restart(self,event,msg):#远程发短信重启
-        if msg != None:
-            number = str(msg)
-            sms.sendPduMsg(number, 'reset# send ok', 'UCS2')
-        self.restart_timer.start(3*1000,0,self.app_restart_cb)
-        pass
-    def app_restart_cb(self,*argc):
-        Power.powerRestart()
-
-    def open_power_on(self, event, msg): #msg 1 开机 2 关机 3 重启  4恢复出厂设置 5静音关机
-        EventMesh.publish("close_timer_all")#
-        if msg == 1:
-           
-            # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
-            # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            self.pwk_timer1.start(3000,0,self.power_on_audio_cb)
-            
-        elif msg == 2:
-            flag = EventMesh.publish("get_call_state") 
-            if flag != 0:#电话呼叫中
-                self.call_state = 0
-                voiceCall.callEnd()
-            step = EventMesh.publish("get_old_step_value")
-            # step1 = SC7A20().get_step()
-            # step1 = EventMesh.publish(constants.EVENT.GET_STEP)
-            # step2 = EventMesh.publish("get_storage_config","old_step")
-            self.read_data = EventMesh.publish("get_storage_data")
-            # EventMesh.publish("set_test_data5",[1,step,step1,step2])
-            if step != 0:
-                EventMesh.publish("set_storage_config",["old_step",step])
-            date_tmp = utime.localtime()
-            time_tmp = utime.mktime(date_tmp)
-            # step3 = EventMesh.publish("get_old_step_value")
-            # step4 = SC7A20().get_step()
-            # step4 = EventMesh.publish(constants.EVENT.GET_STEP)
-            # step5 = EventMesh.publish("get_storage_config","old_step")
-            # EventMesh.publish("set_test_data6",[1,step3,step4,step5])
-            EventMesh.publish("set_storage_config",["old_time",time_tmp])#关机保存一个是时间
-            EventMesh.publish("set_storage_config",["power_state",0])
-            self.pwk_timer1.start(3000,0,self.power_off_audio_cb)
-        elif msg == 3:
-            flag = EventMesh.publish("get_call_state") 
-            if flag != 0:#电话呼叫中
-                self.call_state = 0
-                voiceCall.callEnd()
-            self.aud.play(1,0,'U:/static/R_POWER_OFF_1.mp3')
-            # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
-            # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            EventMesh.publish("stop_led_timer")#设置参数
-            self.power_off = 1
-            self.timer.start(8000,0,self.publish_resatrt_down_event_cb)
-            #EventMesh.publish("set_led_time_arg",[3000,4000,1,led_mode.LONG_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE])#
-        elif msg == 4:
-            flag = EventMesh.publish("get_call_state") 
-            if flag != 0:#电话呼叫中
-                self.call_state = 0
-                voiceCall.callEnd()
-            EventMesh.publish("stop_led_timer")#设置参数
-            self.power_off = 1
+        def app_factory(self,event,msg):
+            if msg != None:
+                number = str(msg)
+                sms.sendPduMsg(number, 'factory# send ok', 'UCS2')
             ret = 0
             ret = ql_fs.path_exists("/usr/static/storage_file")#
             if ret == True:
@@ -1252,1509 +1181,1621 @@ class intervManager(Abstract):
                 ql_fs.mkdirs("/usr/static/storage_file")
             if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:
                 EventMesh.publish(constants.PROTOCOL.DLT_SEND)
+        
+            self.factory_timer.start(6*1000,0,self.factory_cb)
+            pass
+        def factory_cb(self,*argc):
             self.aud.stopPlayStream()
-            self.timer.start(6*1000,0,self.fun)
-        elif msg == 5:
-            flag = EventMesh.publish("get_call_state") 
-            if flag != 0:#电话呼叫中
-                self.call_state = 0
-                voiceCall.callEnd()
-            step = EventMesh.publish("get_old_step_value")
-            # step1 = SC7A20().get_step()
-            # step1 = EventMesh.publish(constants.EVENT.GET_STEP)
-            # step2 = EventMesh.publish("get_storage_config","old_step")
-            self.read_data = EventMesh.publish("get_storage_data")
-            # EventMesh.publish("set_test_data7",[1,step,step1,step2])
-            if step != 0:
-                EventMesh.publish("set_storage_config",["old_step",step])
-
-            # step3 = EventMesh.publish("get_old_step_value")
-            # step4 = SC7A20().get_step()
-            # step4 = EventMesh.publish(constants.EVENT.GET_STEP)
-            # step5 = EventMesh.publish("get_storage_config","old_step")
-            # EventMesh.publish("set_test_data8",[1,step3,step4,step5])
-            date_tmp = utime.localtime()
-            time_tmp = utime.mktime(date_tmp)
-            EventMesh.publish("set_storage_config",["old_time",time_tmp])#关机保存一个是时间
-            EventMesh.publish("set_storage_config",["power_state",1])
-            self.pwk_timer1.start(3000,0,self.power_off_no_audio_cb)#不需要关机铃声
-
-    def fun(self,*argc):
-        self.aud.stopPlayStream()
-        Power.powerRestart()
-           
-
-    def power_on_cb(self, msg): #msg 开机标识
-        self.power_on_flag = 1
-    def clear_power_on_cb(self, msg): #msg 开机标识
-        self.power_on_flag = 0
-    
-    def power_on_audio_cb(self, msg):
-        self.power_on_flag = 1
-        # EventMesh.debug_log("power_on_audio_cb")
-        power_state = EventMesh.publish("get_storage_config","power_state")
-        if power_state == None:
-            power_state = 0
-        # print("power_state",power_state)
-        if power_state <= 0:
-            self.aud.play(1,1,'U:/static/R_POWER_OFF_1.mp3')
-        # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
-        # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-        EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_GREEN,6,3,led_mode.OTHER_MEASURE_MODE])#測量成功
-        # EventMesh.publish("set_led_time_arg",[1000,200,10,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
-        self.power_on_flag = 0
-        self.pwk_timer2.start(5000,0,self.power_on_cb)
-
-    def get_power_on_state(self, event, msg):
-        return self.power_on_flag
-    
-    def power_off_audio_cb(self, msg):
-        # EventMesh.debug_log("power_off_audio_cb")
-        self.aud.play(1,0,'U:/static/R_POWER_OFF_1.mp3')
-        # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
-        # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-        EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_RED,6,3,led_mode.POWER_OFF_MODE])#
-        self.power_off = 1
-        self.pwk_timer2.start(6000,0,self.publish_power_down_event_cb)
-    
-    def power_off_no_audio_cb(self, msg):
-        EventMesh.debug_log("power_off_no_audio_cb")
-        EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_RED,6,3,led_mode.POWER_OFF_MODE])#
-        self.power_off = 1
-        self.pwk_timer2.start(6000,0,self.publish_power_down_event_cb)
-
-    def set_power_off_cb(self, msg):
-        self.power_off = 1
-
-    def get_power_off_state(self, event, msg):
-        return self.power_off
-
-    def close_hr_sop2(self, event, msg): #msg 关闭心率血氧体温测试
-        get_hr_state = EventMesh.publish("get_hr_state")
-        get_spo2_state = EventMesh.publish("get_spo2_state")
-        get_temp_state = EventMesh.publish("get_temp_state")
-        get_bg_state = EventMesh.publish("get_bg_state")
-        get_bp_state = EventMesh.publish("get_bp_state")
-        if get_hr_state != None and get_spo2_state != None and get_temp_state != None and get_bg_state != None and get_bp_state != None:
-            if get_hr_state != 0:
-                EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
-                EventMesh.debug_log("sstop hr")
-                EventMesh.publish(constants.EVENT.STOP_HEART) 
-            if get_spo2_state != 0 :
-                EventMesh.debug_log("stop spo2")
-                EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
-                EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
-            if get_temp_state != 0:
-                EventMesh.debug_log("stop temp")
-                EventMesh.publish("set_temp_state",0)
-                EventMesh.publish(constants.EVENT.STOP_TEMP)#手动体温测试
-            if  get_bg_state != 0:
-                EventMesh.publish("set_bg_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
-                EventMesh.debug_log("sstop bg")
-                EventMesh.publish(constants.EVENT.STOP_HEART) 
-
-            if  get_bp_state != 0:
-                EventMesh.publish("set_bp_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
-                EventMesh.debug_log("sstop bp")
-                EventMesh.publish(constants.EVENT.STOP_HEART) 
-
-    def set_manual_measure_mode(self, event, msg): #手动测试 1心率 2 血氧 3 体温
-        get_hr_state = EventMesh.publish("get_hr_state")
-        get_spo2_state = EventMesh.publish("get_spo2_state")
-        get_temp_state = EventMesh.publish("get_temp_state")
-        if msg == 1:
-            if get_hr_state != 1:#不是手动测试直接打断
-                EventMesh.debug_log("set_manual_measure_mode",msg)
-                EventMesh.publish("set_hr_state",1)
-                EventMesh.publish("set_start_measure_time",1)#设置开始测量的时间戳时间
-                EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) #停止测试血氧
-                EventMesh.publish("set_hr_blood_led",1)
-                EventMesh.publish(constants.EVENT.START_HEART) #手动心率测试
-        elif msg == 2:
-            if get_hr_state == 0:
-                if get_spo2_state != 1:
+            Power.powerRestart()
+
+        def app_restart(self,event,msg):#远程发短信重启
+            if msg != None:
+                number = str(msg)
+                sms.sendPduMsg(number, 'reset# send ok', 'UCS2')
+            self.restart_timer.start(3*1000,0,self.app_restart_cb)
+            pass
+        def app_restart_cb(self,*argc):
+            Power.powerRestart()
+
+        def open_power_on(self, event, msg): #msg 1 开机 2 关机 3 重启  4恢复出厂设置 5静音关机
+            EventMesh.publish("close_timer_all")#
+            if msg == 1:
+            
+                # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
+                # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                self.pwk_timer1.start(3000,0,self.power_on_audio_cb)
+                
+            elif msg == 2:
+                flag = EventMesh.publish("get_call_state") 
+                if flag != 0:#电话呼叫中
+                    self.call_state = 0
+                    voiceCall.callEnd()
+                step = EventMesh.publish("get_old_step_value")
+                # step1 = SC7A20().get_step()
+                # step1 = EventMesh.publish(constants.EVENT.GET_STEP)
+                # step2 = EventMesh.publish("get_storage_config","old_step")
+                self.read_data = EventMesh.publish("get_storage_data")
+                # EventMesh.publish("set_test_data5",[1,step,step1,step2])
+                if step != 0:
+                    EventMesh.publish("set_storage_config",["old_step",step])
+                date_tmp = utime.localtime()
+                time_tmp = utime.mktime(date_tmp)
+                # step3 = EventMesh.publish("get_old_step_value")
+                # step4 = SC7A20().get_step()
+                # step4 = EventMesh.publish(constants.EVENT.GET_STEP)
+                # step5 = EventMesh.publish("get_storage_config","old_step")
+                # EventMesh.publish("set_test_data6",[1,step3,step4,step5])
+                EventMesh.publish("set_storage_config",["old_time",time_tmp])#关机保存一个是时间
+                EventMesh.publish("set_storage_config",["power_state",0])
+                self.pwk_timer1.start(3000,0,self.power_off_audio_cb)
+            elif msg == 3:
+                flag = EventMesh.publish("get_call_state") 
+                if flag != 0:#电话呼叫中
+                    self.call_state = 0
+                    voiceCall.callEnd()
+                self.aud.play(1,0,'U:/static/R_POWER_OFF_1.mp3')
+                # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
+                # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                EventMesh.publish("stop_led_timer")#设置参数
+                self.power_off = 1
+                self.timer.start(8000,0,self.publish_resatrt_down_event_cb)
+                #EventMesh.publish("set_led_time_arg",[3000,4000,1,led_mode.LONG_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE])#
+            elif msg == 4:
+                flag = EventMesh.publish("get_call_state") 
+                if flag != 0:#电话呼叫中
+                    self.call_state = 0
+                    voiceCall.callEnd()
+                EventMesh.publish("stop_led_timer")#设置参数
+                self.power_off = 1
+                ret = 0
+                ret = ql_fs.path_exists("/usr/static/storage_file")#
+                if ret == True:
+                    ql_fs.rmdirs("/usr/static/storage_file")
+                    ql_fs.mkdirs("/usr/static/storage_file")
+                if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:
+                    EventMesh.publish(constants.PROTOCOL.DLT_SEND)
+                self.aud.stopPlayStream()
+                self.timer.start(6*1000,0,self.fun)
+            elif msg == 5:
+                flag = EventMesh.publish("get_call_state") 
+                if flag != 0:#电话呼叫中
+                    self.call_state = 0
+                    voiceCall.callEnd()
+                step = EventMesh.publish("get_old_step_value")
+                # step1 = SC7A20().get_step()
+                # step1 = EventMesh.publish(constants.EVENT.GET_STEP)
+                # step2 = EventMesh.publish("get_storage_config","old_step")
+                self.read_data = EventMesh.publish("get_storage_data")
+                # EventMesh.publish("set_test_data7",[1,step,step1,step2])
+                if step != 0:
+                    EventMesh.publish("set_storage_config",["old_step",step])
+
+                # step3 = EventMesh.publish("get_old_step_value")
+                # step4 = SC7A20().get_step()
+                # step4 = EventMesh.publish(constants.EVENT.GET_STEP)
+                # step5 = EventMesh.publish("get_storage_config","old_step")
+                # EventMesh.publish("set_test_data8",[1,step3,step4,step5])
+                date_tmp = utime.localtime()
+                time_tmp = utime.mktime(date_tmp)
+                EventMesh.publish("set_storage_config",["old_time",time_tmp])#关机保存一个是时间
+                EventMesh.publish("set_storage_config",["power_state",1])
+                self.pwk_timer1.start(3000,0,self.power_off_no_audio_cb)#不需要关机铃声
+
+        def fun(self,*argc):
+            self.aud.stopPlayStream()
+            Power.powerRestart()
+            
+
+        def power_on_cb(self, msg): #msg 开机标识
+            self.power_on_flag = 1
+        def clear_power_on_cb(self, msg): #msg 开机标识
+            self.power_on_flag = 0
+        
+        def power_on_audio_cb(self, msg):
+            self.power_on_flag = 1
+            # EventMesh.debug_log("power_on_audio_cb")
+            power_state = EventMesh.publish("get_storage_config","power_state")
+            if power_state == None:
+                power_state = 0
+            # print("power_state",power_state)
+            if power_state <= 0:
+                self.aud.play(1,1,'U:/static/R_POWER_OFF_1.mp3')
+            # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
+            # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+            EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_GREEN,6,3,led_mode.OTHER_MEASURE_MODE])#測量成功
+            # EventMesh.publish("set_led_time_arg",[1000,200,10,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+            self.power_on_flag = 0
+            self.pwk_timer2.start(5000,0,self.power_on_cb)
+
+        def get_power_on_state(self, event, msg):
+            return self.power_on_flag
+        
+        def power_off_audio_cb(self, msg):
+            # EventMesh.debug_log("power_off_audio_cb")
+            self.aud.play(1,0,'U:/static/R_POWER_OFF_1.mp3')
+            # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
+            # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+            EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_RED,6,3,led_mode.POWER_OFF_MODE])#
+            self.power_off = 1
+            self.pwk_timer2.start(6000,0,self.publish_power_down_event_cb)
+        
+        def power_off_no_audio_cb(self, msg):
+            EventMesh.debug_log("power_off_no_audio_cb")
+            EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_RED,6,3,led_mode.POWER_OFF_MODE])#
+            self.power_off = 1
+            self.pwk_timer2.start(6000,0,self.publish_power_down_event_cb)
+
+        def set_power_off_cb(self, msg):
+            self.power_off = 1
+
+        def get_power_off_state(self, event, msg):
+            return self.power_off
+
+        def close_hr_sop2(self, event, msg): #msg 关闭心率血氧体温测试
+            get_hr_state = EventMesh.publish("get_hr_state")
+            get_spo2_state = EventMesh.publish("get_spo2_state")
+            get_temp_state = EventMesh.publish("get_temp_state")
+            get_bg_state = EventMesh.publish("get_bg_state")
+            get_bp_state = EventMesh.publish("get_bp_state")
+            if get_hr_state != None and get_spo2_state != None and get_temp_state != None and get_bg_state != None and get_bp_state != None:
+                if get_hr_state != 0:
+                    EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
+                    EventMesh.debug_log("sstop hr")
+                    EventMesh.publish(constants.EVENT.STOP_HEART) 
+                if get_spo2_state != 0 :
+                    EventMesh.debug_log("stop spo2")
+                    EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
+                    EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+                if get_temp_state != 0:
+                    EventMesh.debug_log("stop temp")
+                    EventMesh.publish("set_temp_state",0)
+                    EventMesh.publish(constants.EVENT.STOP_TEMP)#手动体温测试
+                if  get_bg_state != 0:
+                    EventMesh.publish("set_bg_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
+                    EventMesh.debug_log("sstop bg")
+                    EventMesh.publish(constants.EVENT.STOP_HEART) 
+
+                if  get_bp_state != 0:
+                    EventMesh.publish("set_bp_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
+                    EventMesh.debug_log("sstop bp")
+                    EventMesh.publish(constants.EVENT.STOP_HEART) 
+
+        def set_manual_measure_mode(self, event, msg): #手动测试 1心率 2 血氧 3 体温
+            get_hr_state = EventMesh.publish("get_hr_state")
+            get_spo2_state = EventMesh.publish("get_spo2_state")
+            get_temp_state = EventMesh.publish("get_temp_state")
+            if msg == 1:
+                if get_hr_state != 1:#不是手动测试直接打断
                     EventMesh.debug_log("set_manual_measure_mode",msg)
-                    EventMesh.publish("set_spo2_state",1)
+                    EventMesh.publish("set_hr_state",1)
                     EventMesh.publish("set_start_measure_time",1)#设置开始测量的时间戳时间
+                    EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) #停止测试血氧
+                    EventMesh.publish("set_hr_blood_led",1)
+                    EventMesh.publish(constants.EVENT.START_HEART) #手动心率测试
+            elif msg == 2:
+                if get_hr_state == 0:
+                    if get_spo2_state != 1:
+                        EventMesh.debug_log("set_manual_measure_mode",msg)
+                        EventMesh.publish("set_spo2_state",1)
+                        EventMesh.publish("set_start_measure_time",1)#设置开始测量的时间戳时间
+                        EventMesh.publish("set_hr_blood_led",1)
+                        EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN) #手动血氧测试
+            elif msg == 3:
+                if get_temp_state != 1:
+                    EventMesh.debug_log("set_manual_measure_mode",msg)
+                    EventMesh.publish("set_temp_state",1)
+                    EventMesh.publish("set_start_temp_measure_time",1)#设置开始测量的时间戳时间
                     EventMesh.publish("set_hr_blood_led",1)
-                    EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN) #手动血氧测试
-        elif msg == 3:
-            if get_temp_state != 1:
-                EventMesh.debug_log("set_manual_measure_mode",msg)
-                EventMesh.publish("set_temp_state",1)
-                EventMesh.publish("set_start_temp_measure_time",1)#设置开始测量的时间戳时间
-                EventMesh.publish("set_hr_blood_led",1)
-                EventMesh.publish(constants.EVENT.START_TEMP)#手动体温测试
-        pass
+                    EventMesh.publish(constants.EVENT.START_TEMP)#手动体温测试
+            pass
 
 
-    def set_start_measure_time(self, event, msg): #手动测试 1心
-        self.hr_auto = msg
-        pass
+        def set_start_measure_time(self, event, msg): #手动测试 1心
+            self.hr_auto = msg
+            pass
 
-    def get_start_measure_time(self, event, msg): #手动测试 
+        def get_start_measure_time(self, event, msg): #手动测试 
 
-        return  self.hr_auto
-    
-    def set_start_temp_measure_time(self, event, msg): #
-        self.temp_auto = msg
-        pass
-
-    def get_start_temp_measure_time(self, event, msg): #
-        return self.temp_auto
-
-    def mearsure_cb(self, event, msg):
-        if msg == 1:
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-        elif msg == 2:
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) 
-        elif msg == 3:
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) 
-        elif msg == 4:
-            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) 
+            return  self.hr_auto
         
-        
-         
-    def play_temp_value(self, event, msg): #播放体温数值
-        flag = EventMesh.publish("get_call_state") 
-        if msg != None:
-            if flag == 0 and self.fall_flag == 0:
-                EventMesh.publish("close_timer_all")#
-                if msg > 0:
-                    # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
-                    # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                    EventMesh.publish("set_hr_blood_led",2)#测量成功
-                    self.temp_value = msg
-                    # self.timer.start(2*1000,1,self.play_temp_fun)
-                    self.play_temp_fun(0)
+        def set_start_temp_measure_time(self, event, msg): #
+            self.temp_auto = msg
+            pass
+
+        def get_start_temp_measure_time(self, event, msg): #
+            return self.temp_auto
+
+        def mearsure_cb(self, event, msg):
+            if msg == 1:
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+            elif msg == 2:
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) 
+            elif msg == 3:
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) 
+            elif msg == 4:
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) 
+            
+            
+            
+        def play_temp_value(self, event, msg): #播放体温数值
+            flag = EventMesh.publish("get_call_state") 
+            if msg != None:
+                if flag == 0 and self.fall_flag == 0:
+                    EventMesh.publish("close_timer_all")#
+                    if msg > 0:
+                        # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
+                        # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        EventMesh.publish("set_hr_blood_led",2)#测量成功
+                        self.temp_value = msg
+                        # self.timer.start(2*1000,1,self.play_temp_fun)
+                        self.play_temp_fun(0)
+                    else:
+                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        EventMesh.publish("set_hr_blood_led",3)#测量异常
                 else:
-                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                     EventMesh.publish("set_hr_blood_led",3)#测量异常
-            else:
-                EventMesh.publish("set_hr_blood_led",3)#测量异常
 
-    def play_temp_fun(self,argc): #播放体温数值
-        data = self.temp_value
-        if data > 42:
-            data = 42
-        data_tmp = str(data)
-        if data_tmp.find(".") != -1:
-            temp_shi = int(data_tmp.split('.')[0])//10
-            temp_ge = int(data_tmp.split('.')[0])%10
-            dot_ge = int(data_tmp.split('.')[1][:1])
-            if temp_ge > 0:#37.0
-                if dot_ge > 0:#37.5
-                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
-                    audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(temp_ge)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),\
-                    audio_buf.index("R_READ_TIME_{}".format(dot_ge)))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+        def play_temp_fun(self,argc): #播放体温数值
+            data = self.temp_value
+            if data > 42:
+                data = 42
+            data_tmp = str(data)
+            if data_tmp.find(".") != -1:
+                temp_shi = int(data_tmp.split('.')[0])//10
+                temp_ge = int(data_tmp.split('.')[0])%10
+                dot_ge = int(data_tmp.split('.')[1][:1])
+                if temp_ge > 0:#37.0
+                    if dot_ge > 0:#37.5
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
+                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(temp_ge)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),\
+                        audio_buf.index("R_READ_TIME_{}".format(dot_ge)))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                    else:#37.0
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
+                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(temp_ge)))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                else:#30.0 30.6
+                    if dot_ge > 0:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
+                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(dot_ge)))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    else:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
+                        audio_buf.index("R_READ_STEP_3"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+            else:
+                temp_shi = int(data_tmp)//10
+                temp_ge = int(data_tmp)%10
 
-                else:#37.0
+                if temp_ge > 0:#45
                     str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
                     audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(temp_ge)))
                     EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            else:#30.0 30.6
-                if dot_ge > 0:
-                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
-                    audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(dot_ge)))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                 else:
                     str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
                     audio_buf.index("R_READ_STEP_3"))
                     EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            
 
-        else:
-            temp_shi = int(data_tmp)//10
-            temp_ge = int(data_tmp)%10
-
-            if temp_ge > 0:#45
-                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
-                audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(temp_ge)))
-                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            else:
-                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
-                audio_buf.index("R_READ_STEP_3"))
-                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                        
-
-    def play_hr_value(self, event, msg): #播放心率数值
-        flag = EventMesh.publish("get_call_state") 
-        if msg != None:
-            if flag == 0 and self.fall_flag == 0:
-                EventMesh.publish("close_timer_all")#
-                if msg >= 50:
-                    # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
-                    # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                    self.hr_value = msg
-                    EventMesh.publish("set_hr_blood_led",2)#测量成功
-                    # self.timer.start(2*1000,1,self.play_hr_fun)
-                    self.play_hr_fun(0)
+        def play_hr_value(self, event, msg): #播放心率数值
+            flag = EventMesh.publish("get_call_state") 
+            if msg != None:
+                if flag == 0 and self.fall_flag == 0:
+                    EventMesh.publish("close_timer_all")#
+                    if msg >= 50:
+                        # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
+                        # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        self.hr_value = msg
+                        EventMesh.publish("set_hr_blood_led",2)#测量成功
+                        # self.timer.start(2*1000,1,self.play_hr_fun)
+                        self.play_hr_fun(0)
+                    else:
+                        str_data ='mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        EventMesh.publish("set_hr_blood_led",3)#测量异常
                 else:
-                    str_data ='mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                     EventMesh.publish("set_hr_blood_led",3)#测量异常
-            else:
-                EventMesh.publish("set_hr_blood_led",3)#测量异常
 
-    def play_hr_fun(self,argc):#播放心率测试值
-        flag = EventMesh.publish("get_call_state") 
-        
-        if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
-            EventMesh.publish("close_timer_all")#
-            data = self.hr_value
-            if data > 220:
-                data = 220
-            if data < 100:
-                if data%10 == 0:
-                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
-                    audio_buf.index("R_READ_STEP_3"))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                else:
-                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
-                    audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(data%10)))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            else: 
-                shi = (data%100)//10 #210
-                ge = (data%100)%10
-                #210 234
-                if shi > 0:
-                    if ge == 0:#210 230 120
-                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//100)),\
-                        audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi)),audio_buf.index("R_READ_STEP_3"))
+        def play_hr_fun(self,argc):#播放心率测试值
+            flag = EventMesh.publish("get_call_state") 
+            
+            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                EventMesh.publish("close_timer_all")#
+                data = self.hr_value
+                if data > 220:
+                    data = 220
+                if data < 100:
+                    if data%10 == 0:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
+                        audio_buf.index("R_READ_STEP_3"))
                         EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                     else:
-                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//100)),\
-                        audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi)),audio_buf.index("R_READ_STEP_3"),\
-                        audio_buf.index("R_READ_TIME_{}".format(ge)))
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
+                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(data%10)))
                         EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                else:
-                    if ge == 0:#200 100 209 108
-                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//100)),\
-                        audio_buf.index("R_READ_STEP_2"))
-                        EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                else: 
+                    shi = (data%100)//10 #210
+                    ge = (data%100)%10
+                    #210 234
+                    if shi > 0:
+                        if ge == 0:#210 230 120
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//100)),\
+                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi)),audio_buf.index("R_READ_STEP_3"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        else:
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//100)),\
+                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi)),audio_buf.index("R_READ_STEP_3"),\
+                            audio_buf.index("R_READ_TIME_{}".format(ge)))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                     else:
-                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//100)),\
-                        audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge)))
-                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        if ge == 0:#200 100 209 108
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//100)),\
+                            audio_buf.index("R_READ_STEP_2"))
+                            EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        else:
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//100)),\
+                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge)))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
 
 
-    def play_sugar_value(self, event, msg): #播放血糖数值
-        flag = EventMesh.publish("get_call_state") 
-        if msg != None:
-            if flag == 0 and self.fall_flag == 0:
-                EventMesh.publish("close_timer_all")#
-                if msg != 0:
-                    # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
-                    # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                    EventMesh.publish("set_hr_blood_led",2)#测量成功
-                    # self.timer.start(2*1000,1,self.play_spo2_fun)
-                    self.play_sugar_fun(msg)
+        def play_sugar_value(self, event, msg): #播放血糖数值
+            flag = EventMesh.publish("get_call_state") 
+            if msg != None:
+                if flag == 0 and self.fall_flag == 0:
+                    EventMesh.publish("close_timer_all")#
+                    if msg != 0:
+                        # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
+                        # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        EventMesh.publish("set_hr_blood_led",2)#测量成功
+                        # self.timer.start(2*1000,1,self.play_spo2_fun)
+                        self.play_sugar_fun(msg)
+                    else:
+                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        EventMesh.publish("set_hr_blood_led",3)#测量异常
                 else:
-                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                     EventMesh.publish("set_hr_blood_led",3)#测量异常
-            else:
-                EventMesh.publish("set_hr_blood_led",3)#测量异常
-
-    def play_sugar_fun(self,argc):#播放血糖测试值
-        flag = EventMesh.publish("get_call_state") 
-        
-        if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
-            EventMesh.publish("close_timer_all")#
-            data = str(argc)
-            data_shi = 0
-            data_ge = 0
-            if data.find(".") != -1:
-                data_shi = int(data.split(".")[0])
-                data_ge = int(data.split(".")[1])
-            else:
-                data_shi = int(data)
-                data_ge = 0
-
-            if data_shi != 0 and data_ge != 0:
-                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_BLOOD_SUGAR"),audio_buf.index("R_READ_TIME_{}".format(data_shi)),\
-                audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(data_ge)))
-                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-        else:
-            EventMesh.publish("set_hr_blood_led",3)#测量异常
-
 
-
-    def play_spo2_value(self, event, msg): #播放血样数值
-        flag = EventMesh.publish("get_call_state") 
-        if msg != None:
-            if flag == 0 and self.fall_flag == 0:
+        def play_sugar_fun(self,argc):#播放血糖测试值
+            flag = EventMesh.publish("get_call_state") 
+            
+            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
                 EventMesh.publish("close_timer_all")#
-                if msg >= 85:
-                    # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
-                    # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                    EventMesh.publish("set_hr_blood_led",2)#测量成功
-                    self.spo2_value = msg
-                    # self.timer.start(2*1000,1,self.play_spo2_fun)
-                    self.play_spo2_fun(0)
+                data = str(argc)
+                data_shi = 0
+                data_ge = 0
+                if data.find(".") != -1:
+                    data_shi = int(data.split(".")[0])
+                    data_ge = int(data.split(".")[1])
                 else:
-                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
+                    data_shi = int(data)
+                    data_ge = 0
+
+                if data_shi != 0 and data_ge != 0:
+                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_BLOOD_SUGAR"),audio_buf.index("R_READ_TIME_{}".format(data_shi)),\
+                    audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(data_ge)))
                     EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                    EventMesh.publish("set_hr_blood_led",3)#测量异常
             else:
                 EventMesh.publish("set_hr_blood_led",3)#测量异常
 
-    def play_spo2_fun(self,argc):#播放血氧测试值
-        flag = EventMesh.publish("get_call_state") 
-        
-        if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
-            EventMesh.publish("close_timer_all")#
-            data = self.spo2_value
-            if data > 100:
-                data = 100
-            if data == 100:
-                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
-                audio_buf.index("R_READ_STEP_2"))
-                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            else:
-                if data % 10 == 0:
-                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
-                    audio_buf.index("R_READ_STEP_3"))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                    pass
-                else:
-                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
-                    audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(data%10)))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
 
 
-    def set_sim_mode(self, event, msg): #mode 1 蓝灯闪烁 可识别卡 但未联网 2 可绑定appsim正常 3 手表不识别卡或者未插卡
-        flag = EventMesh.publish("get_call_state") 
-        if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
-            EventMesh.publish("close_timer_all")#
-            # EventMesh.publish("stop_led_timer")#设置参数
-            mode = 0
-            signal = EventMesh.publish("screen_get_sig")
-            if signal != None:
-                if signal >= 0 and signal <= 31:#有卡 
-                    if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网提示关机
-                        mode = 2
-                    else:
-                        mode = 1
-                else:#未插卡
-                    mode = 3
-            if mode == 1:#白色灯
-                EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_WHITE,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
-                # EventMesh.publish("set_led_time_arg",[1000,400,1,led_mode.FLASH_LIGHT_WHITE,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
-                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SIM_FAILE"))
-                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                pass
-            elif mode == 2:#蓝灯色灯
-                EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_GREEN,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
-                # EventMesh.publish("set_led_time_arg",[1000,400,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
-                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SIM_CONNECT"))
-                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                pass
-            elif mode == 3:#红灯闪烁
-                EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_RED,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
-                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SIM"))
-                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            pass
-        
-    def dial_sos_phone(self, event, msg): #拨打紧急求助电话
-        flag = EventMesh.publish("get_call_state")
-        if flag == 0:
-           
-            signal = EventMesh.publish("screen_get_sig")
-            if signal != None:
-                if signal >= 0 and signal <= 31:#有卡 
-                    if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网提示关机
-                        sos_number = EventMesh.publish("get_dial_sos_number")
-                        if sos_number != None:
-                            if len(sos_number) != 0:
-                                EventMesh.publish("close_timer_all")#
-                                EventMesh.publish("set_sos_flag",1)
-                                    
-                            else:#未设置sos紧急求助号码
-                                EventMesh.publish("close_timer_all")#
-                                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL"))
-                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                pass
-                    else:
-                        EventMesh.publish("close_timer_all")#
-                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SIM_FAILE"))
-                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                else:#未插卡
+        def play_spo2_value(self, event, msg): #播放血样数值
+            flag = EventMesh.publish("get_call_state") 
+            if msg != None:
+                if flag == 0 and self.fall_flag == 0:
                     EventMesh.publish("close_timer_all")#
-                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SIM"))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-    
-    def play_cur_time_event(self, event, msg): #播放当前时间
-        flag = EventMesh.publish("get_call_state") 
-        if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
-            EventMesh.publish("close_timer_all")#
-            
-            data = RTC().datetime()
-            hour = data[4]
-            min = data[5]
-            # EventMesh.debug_log("hour",hour,min)
-            self.old_hour = hour
-            self.old_min = min
-            if self.old_hour == 0:
-                if self.old_min <= 9:#00:09
-                    if self.old_min == 0:#0点整
-                        str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_0")\
-                        ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
-                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                    else:#0点09分
-                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_0")\
-                        ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(self.old_min))\
-                        ,audio_buf.index("R_READ_TIME_MIN"))
+                    if msg >= 85:
+                        # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
+                        # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        EventMesh.publish("set_hr_blood_led",2)#测量成功
+                        self.spo2_value = msg
+                        # self.timer.start(2*1000,1,self.play_spo2_fun)
+                        self.play_spo2_fun(0)
+                    else:
+                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
                         EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                        pass
-
+                        EventMesh.publish("set_hr_blood_led",3)#测量异常
                 else:
-                    if self.old_min % 10 == 0:#0点2十分 0点3十分
-                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_0")\
-                        ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min // 10))\
-                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
-                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                        pass
-                    else:#0点2十8分
-                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_0")\
-                        ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min // 10))\
-                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10)),audio_buf.index("R_READ_TIME_MIN"))
-                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                        pass
+                    EventMesh.publish("set_hr_blood_led",3)#测量异常
 
-            elif self.old_hour <= 9:#8:09 9:20 9:45
-                if self.old_min <= 9:#9点09分
-                    if self.old_min <= 0:
-                        str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\
-                        ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+        def play_spo2_fun(self,argc):#播放血氧测试值
+            flag = EventMesh.publish("get_call_state") 
+            
+            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                EventMesh.publish("close_timer_all")#
+                data = self.spo2_value
+                if data > 100:
+                    data = 100
+                if data == 100:
+                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
+                    audio_buf.index("R_READ_STEP_2"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                else:
+                    if data % 10 == 0:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
+                        audio_buf.index("R_READ_STEP_3"))
                         EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                         pass
                     else:
-                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\
-                        ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(self.old_min))\
-                        ,audio_buf.index("R_READ_TIME_MIN"))
-                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-
-                else:
-                    if self.old_min % 10 == 0:#9点2十分 9点4十分
-                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\
-                        ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min //10))\
-                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
-                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                    else:#9点2十4分
-                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\
-                        ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min //10))\
-                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10)),audio_buf.index("R_READ_TIME_MIN"))
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
+                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(data%10)))
                         EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
 
 
-            else:#12:0
-                if self.old_min == 0:#12:00 13:00 15:00 20 10 11 12 13 14 15
-                    self.play_count+=1
-                    hour_shi = self.old_hour//10
-                    hour_ge = self.old_hour%10
-                    if self.old_hour == 10:#十点整
-                        str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
-                        ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
-                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-
-                    elif self.old_hour == 20:
-                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
-                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+        def set_sim_mode(self, event, msg): #mode 1 蓝灯闪烁 可识别卡 但未联网 2 可绑定appsim正常 3 手表不识别卡或者未插卡
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                EventMesh.publish("close_timer_all")#
+                # EventMesh.publish("stop_led_timer")#设置参数
+                mode = 0
+                signal = EventMesh.publish("screen_get_sig")
+                if signal != None:
+                    if signal >= 0 and signal <= 31:#有卡 
+                        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网提示关机
+                            mode = 2
+                        else:
+                            mode = 1
+                    else:#未插卡
+                        mode = 3
+                if mode == 1:#白色灯
+                    EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_WHITE,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
+                    # EventMesh.publish("set_led_time_arg",[1000,400,1,led_mode.FLASH_LIGHT_WHITE,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SIM_FAILE"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    pass
+                elif mode == 2:#蓝灯色灯
+                    EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_GREEN,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
+                    # EventMesh.publish("set_led_time_arg",[1000,400,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SIM_CONNECT"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    pass
+                elif mode == 3:#红灯闪烁
+                    EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_RED,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SIM"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                pass
+            
+        def dial_sos_phone(self, event, msg): #拨打紧急求助电话
+            flag = EventMesh.publish("get_call_state")
+            if flag == 0:
+            
+                signal = EventMesh.publish("screen_get_sig")
+                if signal != None:
+                    if signal >= 0 and signal <= 31:#有卡 
+                        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网提示关机
+                            sos_number = EventMesh.publish("get_dial_sos_number")
+                            if sos_number != None:
+                                if len(sos_number) != 0:
+                                    EventMesh.publish("close_timer_all")#
+                                    EventMesh.publish("set_sos_flag",1)
+                                        
+                                else:#未设置sos紧急求助号码
+                                    EventMesh.publish("close_timer_all")#
+                                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                    pass
+                        else:
+                            EventMesh.publish("close_timer_all")#
+                            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SIM_FAILE"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    else:#未插卡
+                        EventMesh.publish("close_timer_all")#
+                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SIM"))
                         EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+        
+        def play_cur_time_event(self, event, msg): #播放当前时间
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                EventMesh.publish("close_timer_all")#
+                
+                data = RTC().datetime()
+                hour = data[4]
+                min = data[5]
+                # EventMesh.debug_log("hour",hour,min)
+                self.old_hour = hour
+                self.old_min = min
+                if self.old_hour == 0:
+                    if self.old_min <= 9:#00:09
+                        if self.old_min == 0:#0点整
+                            str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_0")\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        else:#0点09分
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_0")\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(self.old_min))\
+                            ,audio_buf.index("R_READ_TIME_MIN"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            pass
 
                     else:
-                        if hour_shi <= 1:#十3点整
-                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
-                            ,audio_buf.index("R_READ_TIME_{}".format(hour_ge)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                        if self.old_min % 10 == 0:#0点2十分 0点3十分
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_0")\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min // 10))\
+                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            pass
+                        else:#0点2十8分
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_0")\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min // 10))\
+                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10)),audio_buf.index("R_READ_TIME_MIN"))
                             EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            pass
 
+                elif self.old_hour <= 9:#8:09 9:20 9:45
+                    if self.old_min <= 9:#9点09分
+                        if self.old_min <= 0:
+                            str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            pass
                         else:
-                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
-                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(self.old_min))\
+                            ,audio_buf.index("R_READ_TIME_MIN"))
                             EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
 
-                else:
-                    if self.old_hour == 10:#10:09 10:10
-                        if self.old_min <= 9:
-                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
-                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0")\
-                            ,audio_buf.index("R_READ_TIME_{}".format(self.old_min)),audio_buf.index("R_READ_TIME_MIN"))
+                    else:
+                        if self.old_min % 10 == 0:#9点2十分 9点4十分
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min //10))\
+                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        else:#9点2十4分
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min //10))\
+                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10)),audio_buf.index("R_READ_TIME_MIN"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+
+                else:#12:0
+                    if self.old_min == 0:#12:00 13:00 15:00 20 10 11 12 13 14 15
+                        self.play_count+=1
+                        hour_shi = self.old_hour//10
+                        hour_ge = self.old_hour%10
+                        if self.old_hour == 10:#十点整
+                            str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                        elif self.old_hour == 20:
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
                             EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
                         else:
-                            if self.old_min % 10 == 0:#十点2十分
-                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
-                                ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min//10))\
-                                ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
+                            if hour_shi <= 1:#十3点整
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                ,audio_buf.index("R_READ_TIME_{}".format(hour_ge)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
                                 EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                            else:#十点2十1分
-                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
-                                ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min//10))\
-                                ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(self.old_min%10))\
-                                ,audio_buf.index("R_READ_TIME_MIN"))
+
+                            else:
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
                                 EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
 
                     else:
-                        if self.old_hour < 20:#19:00
-                            if self.old_min <= 9:#19:09 
-                                if self.old_min == 0:
-                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
-                                    ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                        if self.old_hour == 10:#10:09 10:10
+                            if self.old_min <= 9:
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0")\
+                                ,audio_buf.index("R_READ_TIME_{}".format(self.old_min)),audio_buf.index("R_READ_TIME_MIN"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            else:
+                                if self.old_min % 10 == 0:#十点2十分
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                    ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min//10))\
+                                    ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
                                     EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                    pass
-                                else:
+                                else:#十点2十1分
                                     str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
-                                    ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")\
-                                    ,audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10))\
+                                    ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min//10))\
+                                    ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(self.old_min%10))\
                                     ,audio_buf.index("R_READ_TIME_MIN"))
                                     EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                
-                            else:#19:18 19:40 19:56
-                                if self.old_min % 10 == 0:#十9点2十分 十9点3十分
-                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
-                                    ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")\
-                                    ,audio_buf.index("R_READ_TIME_{}".format(self.old_min // 10)),audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
-                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                else:#十9点2十1分
-                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
-                                    ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")\
-                                    ,audio_buf.index("R_READ_TIME_{}".format(self.old_min // 10)),audio_buf.index("R_READ_STEP_3")\
-                                    ,audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10)),audio_buf.index("R_READ_TIME_MIN"))
-                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
 
                         else:
-                            hour_shi = self.old_hour//10
-                            hour_ge = self.old_hour%10
-
-                            min_shi = self.old_min//10
-                            min_ge = self.old_min%10
-
-                            #20:08 20:18  20:20
-                            if hour_ge == 0:
-                                if self.old_min <= 9:
+                            if self.old_hour < 20:#19:00
+                                if self.old_min <= 9:#19:09 
                                     if self.old_min == 0:
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
-                                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
                                         EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
                                         pass
                                     else:
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
-                                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0")\
-                                        ,audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN"))
+                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")\
+                                        ,audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10))\
+                                        ,audio_buf.index("R_READ_TIME_MIN"))
                                         EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-
-                                else:
-                                    if min_ge == 0:#2十点2十分
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
-                                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(min_shi))\
-                                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
+                                    
+                                else:#19:18 19:40 19:56
+                                    if self.old_min % 10 == 0:#十9点2十分 十9点3十分
+                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_min // 10)),audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
                                         EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                    else:#2十点2十1分
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
-                                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(min_shi))\
-                                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN"))
+                                    else:#十9点2十1分
+                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_min // 10)),audio_buf.index("R_READ_STEP_3")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10)),audio_buf.index("R_READ_TIME_MIN"))
                                         EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
 
-                            else:#21:08 21:18
-                                if self.old_min <= 9:
-                                    if self.old_min == 0:
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
-                                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\
-                                        ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
-                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                        pass
+                            else:
+                                hour_shi = self.old_hour//10
+                                hour_ge = self.old_hour%10
+
+                                min_shi = self.old_min//10
+                                min_ge = self.old_min%10
+
+                                #20:08 20:18  20:20
+                                if hour_ge == 0:
+                                    if self.old_min <= 9:
+                                        if self.old_min == 0:
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                            pass
+                                        else:
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0")\
+                                            ,audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
                                     else:
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
-                                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\
-                                        ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0")\
-                                        ,audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN"))
-                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                else:
-                                    if min_ge == 0:#2十3点3十分
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
-                                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\
-                                        ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(min_shi))\
-                                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
-                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                                    else:#2十3点3十1分
-                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
-                                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\
-                                        ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(min_shi))\
-                                        ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN"))
-                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        if min_ge == 0:#2十点2十分
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(min_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:#2十点2十1分
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(min_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
 
+                                else:#21:08 21:18
+                                    if self.old_min <= 9:
+                                        if self.old_min == 0:
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\
+                                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                            pass
+                                        else:
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\
+                                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0")\
+                                            ,audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                    else:
+                                        if min_ge == 0:#2十3点3十分
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\
+                                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(min_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:#2十3点3十1分
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\
+                                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(min_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
 
-    def play_timer_cb_1(self,*agrs):
-        return
 
-    def play_center_phone(self, event, msg): #msg
-        flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许设备再次拨出
-        if flag == 0 and self.fall_flag == 0:
-            EventMesh.publish("close_timer_all")#
-           
-            center_dial = EventMesh.publish("get_storage_config","center_dial")
-            if center_dial != None:
-                if len(center_dial) > 0:
-                    voiceCall.callStart(str(center_dial))
-                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SOS_ALERT"))
-                    EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                   
-            else:#未设置号码
-                # EventMesh.debug_log("play_center_phone")
-                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL"))
+        def play_timer_cb_1(self,*agrs):
+            return
+
+        def play_center_phone(self, event, msg): #msg
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许设备再次拨出
+            if flag == 0 and self.fall_flag == 0:
+                EventMesh.publish("close_timer_all")#
+            
+                center_dial = EventMesh.publish("get_storage_config","center_dial")
+                if center_dial != None:
+                    if len(center_dial) > 0:
+                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SOS_ALERT"))
+                        EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        voiceCall.callStart(str(center_dial))
+                        
+                    
+                else:#未设置号码
+                    # EventMesh.debug_log("play_center_phone")
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    pass
+        def center_phone_cb(self,*argc): #msg
+            pass
+
+
+
+
+        def play_imei_event(self, event, msg): #msg
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                EventMesh.publish("close_timer_all")#
+                imei = EventMesh.publish(constants.EVENT.GET_IMEI)
+                EventMesh.debug_log(imei)
+                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(imei[0]))\
+                ,audio_buf.index("R_READ_TIME_{}".format(imei[1])),audio_buf.index("R_READ_TIME_{}".format(imei[2])),audio_buf.index("R_READ_TIME_{}".format(imei[3])),\
+                audio_buf.index("R_READ_TIME_{}".format(imei[4])),audio_buf.index("R_READ_TIME_{}".format(imei[5])),audio_buf.index("R_READ_TIME_{}".format(imei[6])),audio_buf.index("R_READ_TIME_{}".format(imei[7])),\
+                audio_buf.index("R_READ_TIME_{}".format(imei[8])),audio_buf.index("R_READ_TIME_{}".format(imei[9])),audio_buf.index("R_READ_TIME_{}".format(imei[10])),audio_buf.index("R_READ_TIME_{}".format(imei[11])),\
+                audio_buf.index("R_READ_TIME_{}".format(imei[12])),audio_buf.index("R_READ_TIME_{}".format(imei[13])),audio_buf.index("R_READ_TIME_{}".format(imei[14])))
                 EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                pass
-    def center_phone_cb(self,*argc): #msg
-        pass
 
 
+        def get_unread_wechat_state(self,event, msg): 
 
+            return self.set_unread_wechat
+        
+        def set_unread_wechat_state(self, event, msg): 
+            self.set_unread_wechat = msg
 
-    def play_imei_event(self, event, msg): #msg
-        flag = EventMesh.publish("get_call_state") 
-        if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
-            EventMesh.publish("close_timer_all")#
-            imei = EventMesh.publish(constants.EVENT.GET_IMEI)
-            EventMesh.debug_log(imei)
-            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(imei[0]))\
-            ,audio_buf.index("R_READ_TIME_{}".format(imei[1])),audio_buf.index("R_READ_TIME_{}".format(imei[2])),audio_buf.index("R_READ_TIME_{}".format(imei[3])),\
-            audio_buf.index("R_READ_TIME_{}".format(imei[4])),audio_buf.index("R_READ_TIME_{}".format(imei[5])),audio_buf.index("R_READ_TIME_{}".format(imei[6])),audio_buf.index("R_READ_TIME_{}".format(imei[7])),\
-            audio_buf.index("R_READ_TIME_{}".format(imei[8])),audio_buf.index("R_READ_TIME_{}".format(imei[9])),audio_buf.index("R_READ_TIME_{}".format(imei[10])),audio_buf.index("R_READ_TIME_{}".format(imei[11])),\
-            audio_buf.index("R_READ_TIME_{}".format(imei[12])),audio_buf.index("R_READ_TIME_{}".format(imei[13])),audio_buf.index("R_READ_TIME_{}".format(imei[14])))
-            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+        def get_wechat_data(self,event, msg): 
 
+            return [self.MXA_MSG ,self.wechat_recode_list]
+        
+        def set_wechat_data(self, event, msg): 
+            # EventMesh.debug_log("set_wechat_data1 ",msg,self.wechat_num)
+            self.MXA_MSG = msg[0]
+            self.wechat_recode_list = msg[1]
+            self.wechat_num = self.wechat_recode_list["num"]
+            with open("/usr/static/storage_file/wechat_record.json","w",encoding="utf-8") as fd:
+                ujson.dump(self.wechat_recode_list,fd)
+                #写编号
+            # EventMesh.debug_log("set_wechat_data2:{} ".format(self.wechat_num))
+        
 
-    def get_unread_wechat_state(self,event, msg): 
+        def get_wechat_time(self, event, msg):
+            return  [self.press_btn,self.timeSecond]
 
-        return self.set_unread_wechat
-    
-    def set_unread_wechat_state(self, event, msg): 
-        self.set_unread_wechat = msg
+        def start_wechat_record(self, event, msg): #开始录音相关配置
+            if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音
+                flag = EventMesh.publish("get_call_state") 
+                if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                    if self.press_btn == 0:
+                        self.press_btn = 1
+                        audio_state = EventMesh.publish("get_audio_state")
+                        if audio_state == 1:
+                            self.aud.stop()
+                        EventMesh.publish("close_timer_all")#
+                        EventMesh.publish("set_led_time_arg",[1,1,160,led_mode.LONG_LIGHT_GREEN,4,2,led_mode.WECHAT_LED_MODE])#測量成功
+                        # EventMesh.publish("set_led_time_arg",[1000,1000,1,led_mode.LONG_LIGHT_GREEN,led_mode.OPEN_LONG_LIGHT_MODE,led_mode.WECHAT_LED_MODE])#測量成功
+                    
+                        date_tmp = utime.localtime()
+                        time_tmp = utime.mktime(date_tmp)
+                        self.timeSecond = time_tmp#保存按下的时间长s
+                        self.aud.setVolume(11)#设置音量最大
+                        
+                        EventMesh.debug_log("talking1.0")
+                        # if self.wechat_num >= self.MXA_MSG:
+                        #     self.wechat_num = 0 
+                        # self.wechat_num += 1
+                        # self.wechat_show = self.wechat_num
+                        # self.record_test.start("/usr/static/storage_file/{}.amr".format(self.wechat_show),16) 
+                        self.record_test.start("/usr/static/storage_file/wechat.amr",16) 
+                
+            else:
+                self.timeSecond = 0
+                self.press_btn = 0
+        def get_wechat_state(self, event, msg):
+            return self.press_btn
+
+        def send_wechat_record(self, event, msg): #发送录音文件
+            if self.press_btn == 1:
+                self.press_btn = 0
+                self.record_test.stop() #停止錄音
+                EventMesh.publish("stop_led_timer")#关闭灯
+                EventMesh.publish("set_led_time_arg",[1,1,0,led_mode.FLASH_LIGHT_GREEN,4,2,led_mode.OTHER_MEASURE_MODE])#測量成功
+                # EventMesh.publish("set_led_time_arg",[0,1000,1,led_mode.LONG_LIGHT_GREEN,led_mode.OPEN_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#測量成功
+                self.countdown_old = 0
 
-    def get_wechat_data(self,event, msg): 
+                date_tmp = utime.localtime()
+                time_tmp = utime.mktime(date_tmp)
 
-        return [self.MXA_MSG ,self.wechat_recode_list]
-    
-    def set_wechat_data(self, event, msg): 
-        # EventMesh.debug_log("set_wechat_data1 ",msg,self.wechat_num)
-        self.MXA_MSG = msg[0]
-        self.wechat_recode_list = msg[1]
-        self.wechat_num = self.wechat_recode_list["num"]
-        with open("/usr/static/storage_file/wechat_record.json","w",encoding="utf-8") as fd:
-            ujson.dump(self.wechat_recode_list,fd)
-            #写编号
-        # EventMesh.debug_log("set_wechat_data2:{} ".format(self.wechat_num))
-       
-
-    def get_wechat_time(self, event, msg):
-        return  [self.press_btn,self.timeSecond]
-
-    def start_wechat_record(self, event, msg): #开始录音相关配置
-        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音
+                self.countdown_old = msg
+                if self.countdown_old >= 15:
+                    self.countdown_old = 15
+                if self.countdown_old <= 0:
+                    #录音时间太短
+                    return
+                else:
+                    # self.wechat_recode_list["%02d"%(self.wechat_show)] = "read:0"
+                    # self.wechat_recode_list["num"] = self.wechat_show
+                    EventMesh.debug_log("self.wechat_recode_list :{}".format(self.wechat_recode_list))
+
+                    # with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
+                    #     ujson.dump(self.wechat_recode_list,fd)
+                    EventMesh.debug_log("send wechat data!!!!!!!!!!!!!!!!!!!!!")
+
+                    check_txt = ql_fs.path_exists("/usr/static/storage_file/wechat.amr")
+                    if check_txt == True :
+                        path = "/usr/static/storage_file/wechat.amr"
+                        with open(path,"rb") as fd:
+                            buf = bytearray(ql_fs.path_getsize(path))
+                            fd.readinto(buf)
+                            senddata = [self.countdown_old,buf]
+                            EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata)
+
+                    # with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
+                    #     ujson.dump(self.wechat_recode_list,fd)
+                    # EventMesh.debug_log("send wechat data!!!!!!!!!!!!!!!!!!!!!")
+
+                    # check_txt = ql_fs.path_exists("/usr/static/storage_file/{}.amr".format(self.wechat_show))
+                    # if check_txt == True :
+                    #     path = "/usr/static/storage_file/{}.amr".format(self.wechat_show)
+                    #     with open(path,"rb") as fd:
+                    #         buf = bytearray(ql_fs.path_getsize(path))
+                    #         fd.readinto(buf)
+                    #         senddata = [self.countdown_old,buf]
+                    #         EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata)
+
+
+        def play_wechat_last_amr(self, event, msg):#播放微聊最后一条语音文件
             flag = EventMesh.publish("get_call_state") 
-            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
-                if self.press_btn == 0:
-                    self.press_btn = 1
-                    audio_state = EventMesh.publish("get_audio_state")
-                    if audio_state == 1:
-                        self.aud.stop()
-                    EventMesh.publish("close_timer_all")#
-                    EventMesh.publish("set_led_time_arg",[1,1,160,led_mode.LONG_LIGHT_GREEN,4,2,led_mode.WECHAT_LED_MODE])#測量成功
-                    # EventMesh.publish("set_led_time_arg",[1000,1000,1,led_mode.LONG_LIGHT_GREEN,led_mode.OPEN_LONG_LIGHT_MODE,led_mode.WECHAT_LED_MODE])#測量成功
-                
-                    date_tmp = utime.localtime()
-                    time_tmp = utime.mktime(date_tmp)
-                    self.timeSecond = time_tmp#保存按下的时间长s
-                    self.aud.setVolume(11)#设置音量最大
-                    
-                    EventMesh.debug_log("talking1.0")
-                    # if self.wechat_num >= self.MXA_MSG:
-                    #     self.wechat_num = 0 
-                    # self.wechat_num += 1
-                    # self.wechat_show = self.wechat_num
-                    # self.record_test.start("/usr/static/storage_file/{}.amr".format(self.wechat_show),16) 
-                    self.record_test.start("/usr/static/storage_file/wechat.amr",16) 
-            
-        else:
-           self.timeSecond = 0
-           self.press_btn = 0
-    def get_wechat_state(self, event, msg):
-        return self.press_btn
-
-    def send_wechat_record(self, event, msg): #发送录音文件
-        if self.press_btn == 1:
-            self.press_btn = 0
-            self.record_test.stop() #停止錄音
-            EventMesh.publish("stop_led_timer")#关闭灯
-            EventMesh.publish("set_led_time_arg",[1,1,0,led_mode.FLASH_LIGHT_GREEN,4,2,led_mode.OTHER_MEASURE_MODE])#測量成功
-            # EventMesh.publish("set_led_time_arg",[0,1000,1,led_mode.LONG_LIGHT_GREEN,led_mode.OPEN_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#測量成功
-            self.countdown_old = 0
+            if flag == 0:#电话通话中 或者呼叫中挂断中断
+                EventMesh.publish("close_timer_all")#
+                if self.wechat_recode_list != None:
+                    num = 0
+                    play_state = 0
+                    if len(self.wechat_recode_list) > 1:
+                        num = int(self.wechat_recode_list["num"])
+                        #EventMesh.debug_log("self.wechat_recode_list1:{}".format(self.wechat_recode_list))
+                        if num != 0:
+                            last_num = str("%02d"%(num))
+                            last_tmp = self.wechat_recode_list[last_num]
+                            last_read = int(last_tmp.split(":")[1])
+                            if last_read == 1:#如果最后一条没有读则读最新的一条
+                                self.wechat_recode_list[last_num] = "read:0"
+                                self.wechat_recode_list["num"] = num 
+                                with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
+                                    ujson.dump(self.wechat_recode_list,fd)
+                            else:
+                                sotr_new = {}
+                                sotr_new = sorted(self.wechat_recode_list.keys(), reverse=True)#降序排序
+                                # EventMesh.debug_log("sotr_new:{}".format(sotr_new))
+                                for i in range(len(self.wechat_recode_list)-1):#1 01 02 
+                                    key = sotr_new[i+1]
+                                    num_id = int(key)
+                                    #EventMesh.debug_log("key:{} num_id:{}".format(key,num_id))
+                                    if key in self.wechat_recode_list:#
+                                        str_tmp = self.wechat_recode_list[key]
+                                        read = int(str_tmp.split(":")[1])
+                                        if read != 0:#未读是按一下播放下一条同时删除
+                                            check_amr = ql_fs.path_exists("/usr/static/storage_file/{}.amr".format(num_id))#还要检测这个文件是否存在
+                                            if check_amr == True:
+                                                self.wechat_recode_list[key] = "read:0"
+                                                self.wechat_recode_list["num"] = num 
+                                                EventMesh.debug_log("self.wechat_recode_list2:{} num_id:{} num:{}".format(self.wechat_recode_list,num_id,num))
+                                                # self.aud.play(1, 1, '/usr/static/storage_file/{}.amr'.format(num))  #文件名前面要加上路径
+                                                play_state = 1
+                                                with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
+                                                    ujson.dump(self.wechat_recode_list,fd)
+                                                break
+                                            else:
+                                                continue
+                                        else:
+                                            continue
+                                    else:
+                                        continue
+                            #EventMesh.debug_log("play_state:{}".format(play_state))
+                            # if play_state == 0:#
+                            check_amr = ql_fs.path_exists("/usr/static/storage_file/{}.amr".format(num))#还要检测这个文件是否存在
+                            if check_amr == True:
+                                self.aud.play(1, 1, '/usr/static/storage_file/{}.amr'.format(num))  #文件名前面要加上路径
 
-            date_tmp = utime.localtime()
-            time_tmp = utime.mktime(date_tmp)
 
-            self.countdown_old = msg
-            if self.countdown_old >= 15:
-                self.countdown_old = 15
-            if self.countdown_old <= 0:
-                #录音时间太短
-                return
-            else:
-                # self.wechat_recode_list["%02d"%(self.wechat_show)] = "read:0"
-                # self.wechat_recode_list["num"] = self.wechat_show
-                EventMesh.debug_log("self.wechat_recode_list :{}".format(self.wechat_recode_list))
-
-                # with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
-                #     ujson.dump(self.wechat_recode_list,fd)
-                EventMesh.debug_log("send wechat data!!!!!!!!!!!!!!!!!!!!!")
-
-                check_txt = ql_fs.path_exists("/usr/static/storage_file/wechat.amr")
-                if check_txt == True :
-                    path = "/usr/static/storage_file/wechat.amr"
-                    with open(path,"rb") as fd:
-                        buf = bytearray(ql_fs.path_getsize(path))
-                        fd.readinto(buf)
-                        senddata = [self.countdown_old,buf]
-                        EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata)
-
-                # with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
-                #     ujson.dump(self.wechat_recode_list,fd)
-                # EventMesh.debug_log("send wechat data!!!!!!!!!!!!!!!!!!!!!")
-
-                # check_txt = ql_fs.path_exists("/usr/static/storage_file/{}.amr".format(self.wechat_show))
-                # if check_txt == True :
-                #     path = "/usr/static/storage_file/{}.amr".format(self.wechat_show)
-                #     with open(path,"rb") as fd:
-                #         buf = bytearray(ql_fs.path_getsize(path))
-                #         fd.readinto(buf)
-                #         senddata = [self.countdown_old,buf]
-                #         EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata)
-
-
-    def play_wechat_last_amr(self, event, msg):#播放微聊最后一条语音文件
-        flag = EventMesh.publish("get_call_state") 
-        if flag == 0:#电话通话中 或者呼叫中挂断中断
-            EventMesh.publish("close_timer_all")#
-            if self.wechat_recode_list != None:
-                num = 0
-                play_state = 0
-                if len(self.wechat_recode_list) > 1:
-                    num = int(self.wechat_recode_list["num"])
-                    #EventMesh.debug_log("self.wechat_recode_list1:{}".format(self.wechat_recode_list))
-                    if num != 0:
-                        last_num = str("%02d"%(num))
-                        last_tmp = self.wechat_recode_list[last_num]
-                        last_read = int(last_tmp.split(":")[1])
-                        if last_read == 1:#如果最后一条没有读则读最新的一条
-                            self.wechat_recode_list[last_num] = "read:0"
-                            self.wechat_recode_list["num"] = num 
-                            with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
-                                ujson.dump(self.wechat_recode_list,fd)
-                        else:
-                            sotr_new = {}
-                            sotr_new = sorted(self.wechat_recode_list.keys(), reverse=True)#降序排序
-                            # EventMesh.debug_log("sotr_new:{}".format(sotr_new))
+        def play_unread_wechat_infor(self,event,msg):#未读微聊语音
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 0 and self.press_btn == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                if self.wechat_recode_list != None:
+                    num = 0
+                    play_state = 0
+                    if len(self.wechat_recode_list) > 1:
+                        num = int(self.wechat_recode_list["num"])
+                        if num != 0:
                             for i in range(len(self.wechat_recode_list)-1):#1 01 02 
-                                key = sotr_new[i+1]
-                                num_id = int(key)
-                                #EventMesh.debug_log("key:{} num_id:{}".format(key,num_id))
+                                key = "%02d"%(i+1)
                                 if key in self.wechat_recode_list:#
                                     str_tmp = self.wechat_recode_list[key]
                                     read = int(str_tmp.split(":")[1])
-                                    if read != 0:#未读是按一下播放下一条同时删除
-                                        check_amr = ql_fs.path_exists("/usr/static/storage_file/{}.amr".format(num_id))#还要检测这个文件是否存在
-                                        if check_amr == True:
-                                            self.wechat_recode_list[key] = "read:0"
-                                            self.wechat_recode_list["num"] = num 
-                                            EventMesh.debug_log("self.wechat_recode_list2:{} num_id:{} num:{}".format(self.wechat_recode_list,num_id,num))
-                                            # self.aud.play(1, 1, '/usr/static/storage_file/{}.amr'.format(num))  #文件名前面要加上路径
-                                            play_state = 1
-                                            with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
-                                                ujson.dump(self.wechat_recode_list,fd)
-                                            break
-                                        else:
-                                            continue
+                                    if read == 1:#未读是按一下播放下一条同时删除
+                                        play_state = 1
                                     else:
                                         continue
                                 else:
                                     continue
-                        #EventMesh.debug_log("play_state:{}".format(play_state))
-                        # if play_state == 0:#
-                        check_amr = ql_fs.path_exists("/usr/static/storage_file/{}.amr".format(num))#还要检测这个文件是否存在
-                        if check_amr == True:
-                            self.aud.play(1, 1, '/usr/static/storage_file/{}.amr'.format(num))  #文件名前面要加上路径
-
-
-    def play_unread_wechat_infor(self,event,msg):#未读微聊语音
-        flag = EventMesh.publish("get_call_state") 
-        if flag == 0 and self.press_btn == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
-            if self.wechat_recode_list != None:
-                num = 0
-                play_state = 0
-                if len(self.wechat_recode_list) > 1:
-                    num = int(self.wechat_recode_list["num"])
-                    if num != 0:
-                        for i in range(len(self.wechat_recode_list)-1):#1 01 02 
-                            key = "%02d"%(i+1)
-                            if key in self.wechat_recode_list:#
-                                str_tmp = self.wechat_recode_list[key]
-                                read = int(str_tmp.split(":")[1])
-                                if read == 1:#未读是按一下播放下一条同时删除
-                                    play_state = 1
-                                else:
-                                    continue
+                            if play_state == 1:#设置未读语音状态
+                                EventMesh.publish("set_unread_wechat_state",1)
                             else:
-                                continue
-                        if play_state == 1:#设置未读语音状态
-                            EventMesh.publish("set_unread_wechat_state",1)
-                        else:
-                            EventMesh.publish("set_unread_wechat_state",0)
-                            self.updateTime = 0
+                                EventMesh.publish("set_unread_wechat_state",0)
+                                self.updateTime = 0
 
-            state = EventMesh.publish("get_unread_wechat_state")#
-            date_tmp = utime.localtime()
-            time_tmp = utime.mktime(date_tmp)
-            if state != None:
-                if state == 1:
-                    EventMesh.publish("set_led_time_arg",[1,2,8,led_mode.FLASH_LIGHT_GREEN,8,4,led_mode.OTHER_MEASURE_MODE])#測量成功
-                    # EventMesh.publish("set_led_time_arg",[1000,400,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
-                    if self.updateTime == 0:
-                        self.updateTime = time_tmp
-                    if self.updateTime != 0:
-                        if time_tmp - self.updateTime >= 10*60:
+                state = EventMesh.publish("get_unread_wechat_state")#
+                date_tmp = utime.localtime()
+                time_tmp = utime.mktime(date_tmp)
+                if state != None:
+                    if state == 1:
+                        EventMesh.publish("set_led_time_arg",[1,2,8,led_mode.FLASH_LIGHT_GREEN,8,4,led_mode.OTHER_MEASURE_MODE])#測量成功
+                        # EventMesh.publish("set_led_time_arg",[1000,400,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+                        if self.updateTime == 0:
                             self.updateTime = time_tmp
-                            #播放音频文件
-                            EventMesh.publish("close_timer_all")
-                            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_UNREAD_WECHAT"))
-                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-                else:
-                    self.updateTime = 0
-        
+                        if self.updateTime != 0:
+                            if time_tmp - self.updateTime >= 10*60:
+                                self.updateTime = time_tmp
+                                #播放音频文件
+                                EventMesh.publish("close_timer_all")
+                                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_UNREAD_WECHAT"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    else:
+                        self.updateTime = 0
+            
 
 
 
-class BtnDevice(Abstract):
+    class BtnDevice(Abstract):
 
-    def __init__(self, tp=None):
-        self.pk = PowerKey()
-        self.__pwk_timer = osTimer()
-        self.aud = audio.Audio(0)
-        self.aud.set_pa(Pin.GPIO29)
-        self.aud.setVolume(11)
-        # self.keypad = machine.KeyPad(1, 2)
-        self.__PowerDownTimeOut = 3000
-        self.__tp = tp
-        self.pwk_press = 0
-        self.pwk_count = 0
-        self.GPIO26_status = 1#默认是低电平
-        self.powerKey_status = 0
-        self.sosKey = 0
-        self.wechatKey = 0
-        self.sosKey_status = 1#默认是低电平
-        self.WeChatKey_status = 1#默认是低电平
+        def __init__(self, tp=None):
+            self.pk = PowerKey()
+            self.__pwk_timer = osTimer()
+            self.aud = audio.Audio(0)
+            self.aud.set_pa(Pin.GPIO29)
+            self.aud.setVolume(11)
+            # self.keypad = machine.KeyPad(1, 2)
+            self.__PowerDownTimeOut = 3000
+            self.__tp = tp
+            self.pwk_press = 0
+            self.pwk_count = 0
+            self.GPIO26_status = 1#默认是低电平
+            self.powerKey_status = 0
+            self.sosKey = 0
+            self.wechatKey = 0
+            self.sosKey_status = 1#默认是低电平
+            self.WeChatKey_status = 1#默认是低电平
 
-        self.wechatKey_timer = osTimer()
-        self.wechatKey_count = 0
-        self.wechatKey_press = 0 
+            self.wechatKey_timer = osTimer()
+            self.wechatKey_count = 0
+            self.wechatKey_press = 0 
 
-        self.sosKey_timer = osTimer()
-        self.sosKey_count = 0
-        self.sosKey_press = 0 
+            self.sosKey_timer = osTimer()
+            self.sosKey_count = 0
+            self.sosKey_press = 0 
 
-        self.wechatKey_press_count = 0
+            self.wechatKey_press_count = 0
 
-        self.timeSeconOld = 0
-        self.wechat_state = 1 #按下录音时的状态
+            self.timeSeconOld = 0
+            self.wechat_state = 1 #按下录音时的状态
 
-        
-        self.sosKey_press_count = 0
-
-
-        self.pwkey_timer = osTimer()
-        self.pwKey_press_count = 0
-        self.pwkey_count = 0
-        self.pwkey_press = 0
-        self.led_state = 0
-        self.hsensorTest_timer = osTimer()
-        self.btnInfo_queue = Queue()
-        _thread.stack_size(10*1024+192)
-        _thread.start_new_thread(self.btnInfo_queue_thread, ())
-        _thread.stack_size(8*1024)
-        
-        EventMesh.subscribe("publish_message_event_btnInfo",self.publish_message_event_btnInfo)
-
-        EventMesh.subscribe("close_wechat_btn_timer", self.close_wechat_btn_timer)#来电强制关闭微聊语音
-
-    def btnInfo_queue_thread(self):
-        while True:
-            data = self.btnInfo_queue.get()
-            #EventMesh.debug_log("Info_queue:data = {}".format(data))
-            if data != None:
-                try:
-                    data["func"](data["data"])
-                except Exception as e:
-                    EventMesh.debug_log("btnInfo_queue:ERROR:{}".format(e))
-                    usys.print_exception(e)
-    def publish_message_event_btnInfo(self,event,msg):
-        self.btnInfo_queue.put(msg)
-        EventMesh.publish(constants.EVENT.SYSTEM_UP)#唤醒休眠
-        
-    def publish_wechat_btn_event_cb(self, *args, **kwargs):
-        EventMesh.publish("publish_message_event_btnInfo",{"func":self.wechatKey_press_cb,"data":0})  
+            
+            self.sosKey_press_count = 0
+
+
+            self.pwkey_timer = osTimer()
+            self.pwKey_press_count = 0
+            self.pwkey_count = 0
+            self.pwkey_press = 0
+            self.led_state = 0
+            self.hsensorTest_timer = osTimer()
+            self.btnInfo_queue = Queue()
+            _thread.stack_size(10*1024+192)
+            _thread.start_new_thread(self.btnInfo_queue_thread, ())
+            _thread.stack_size(8*1024)
+            
+            EventMesh.subscribe("publish_message_event_btnInfo",self.publish_message_event_btnInfo)
+
+            EventMesh.subscribe("close_wechat_btn_timer", self.close_wechat_btn_timer)#来电强制关闭微聊语音
+
+        def btnInfo_queue_thread(self):
+            while True:
+                data = self.btnInfo_queue.get()
+                #EventMesh.debug_log("Info_queue:data = {}".format(data))
+                if data != None:
+                    try:
+                        data["func"](data["data"])
+                    except Exception as e:
+                        EventMesh.debug_log("btnInfo_queue:ERROR:{}".format(e))
+                        usys.print_exception(e)
+        def publish_message_event_btnInfo(self,event,msg):
+            self.btnInfo_queue.put(msg)
+            EventMesh.publish(constants.EVENT.SYSTEM_UP)#唤醒休眠
+            
+        def publish_wechat_btn_event_cb(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.wechatKey_press_cb,"data":0})  
 
-    def publish_soskey_btn_event_cb(self, *args, **kwargs):
-        EventMesh.publish("publish_message_event_btnInfo",{"func":self.sosKey_press_cb,"data":0})  
+        def publish_soskey_btn_event_cb(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.sosKey_press_cb,"data":0})  
 
-    def publish_pwkKey_btn_event_cb(self, *args, **kwargs):
-        EventMesh.publish("publish_message_event_btnInfo",{"func":self.pwKey_press_cb,"data":0})  
+        def publish_pwkKey_btn_event_cb(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.pwKey_press_cb,"data":0})  
 
-   
+    
 
-    def post_processor_after_instantiation(self):
-        # self.keypad.init()
-        # self.keypad.set_callback(self.key_callback)
-       
-        self.pk.powerKeyEventRegister(self.powerKey_callback)
+        def post_processor_after_instantiation(self):
+            # self.keypad.init()
+            # self.keypad.set_callback(self.key_callback)
         
-        self.extint = ExtInt(ExtInt.GPIO26, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_DISABLE, self.pwk_extint_cb)
-        self.extint.enable()
-
-        self.sosKey = ExtInt(ExtInt.GPIO22, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.sosKey_extint_cb)
-        self.sosKey.enable()
+            self.pk.powerKeyEventRegister(self.powerKey_callback)
+            
+            self.extint = ExtInt(ExtInt.GPIO26, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_DISABLE, self.pwk_extint_cb)
+            self.extint.enable()
 
-        self.wechatKey = ExtInt(ExtInt.GPIO20, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.wechatKey_extint_cb)
-        self.wechatKey.enable()
+            self.sosKey = ExtInt(ExtInt.GPIO22, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.sosKey_extint_cb)
+            self.sosKey.enable()
 
-        key19 = Pin(Pin.GPIO19, Pin.OUT, Pin.PULL_PU, 0)
+            self.wechatKey = ExtInt(ExtInt.GPIO20, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.wechatKey_extint_cb)
+            self.wechatKey.enable()
 
-    def pwk_extint_cb(self,args):#侧边按键
-        self.GPIO26_status = self.extint.read_level()
-        # EventMesh.debug_log('### key20_extint_cb  {} self.GPIO26_status :{}'.format(args,self.GPIO26_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
-        power_off = EventMesh.publish("get_power_off_state")#获取关机标识
-        if power_off != None:
-            if power_off == 1:
-                return
-        open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-        if open_power != None:
-            if open_power == 0:
-                return
-        fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
-        if fall_down != None:
-            if fall_down != 0:
-                return
-        if self.sosKey_status != 0 and self.WeChatKey_status != 0:
-            if self.GPIO26_status == 0:#按下
-                if self.pwkey_press == 0 :
-                    self.aud.stop()  #播放声音 
-                    # self.wechatKey_timeout_cb(0)
-                    # self.sosKey_timeout_cb(0)
-                    self.wechatKey_timer.stop()
-                    self.pwkey_timer.stop()
-                    self.sosKey_timer.stop()
-                    self.wechatKey_press_count = 0
-                    self.sosKey_press_count = 0
-                    self.sosKey_press = 0
-                    self.wechatKey_press = 0
+            key19 = Pin(Pin.GPIO19, Pin.OUT, Pin.PULL_PU, 0)
 
-                    self.pwkey_press = 1
-                    self.pwkey_count = 0
-                    self.led_state = 0
-                    self.pwkey_timer.start(100, 1, self.publish_pwkKey_btn_event_cb)
-                    # EventMesh.debug_log("key22_extint_cb:self.key22_timer.start!!!!\n")
-
-    def pwKey_press_cb(self, data):
-        '''KEY2:联动屏幕右下角或返回键长按关机'''
-        if self.pwkey_press == 1 :
-            self.pwkey_count += 1
-            if self.pwkey_count > 5:
-                if self.led_state == 0:
-                    self.led_state = 1
-                    EventMesh.publish("set_led_time_arg",[1,1,330,led_mode.LONG_LIGHT_GREEN,2,1,led_mode.OTHER_MEASURE_MODE])#測量成功
-                if self.pwkey_count >= 10*10:
-                    EventMesh.publish("stop_led_timer")#设置参数
-                    self.pwkey_timer.stop()
-                    self.pwkey_count = 0
-                    self.pwkey_press = 0
-                    self.pwKey_press_count = 0
-                    self.led_state = 0
-                    # if EventMesh.publish("get_sim_Status") != 1:
-                    #     EventMesh.publish("open_power_on", 2)#
-                    # else:
-                    EventMesh.publish("open_power_on", 3)#
+        def pwk_extint_cb(self,args):#侧边按键
+            # self.GPIO26_status = self.extint.read_level()
+            self.GPIO26_status = int(args[1])
+            if self.GPIO26_status == 0:
+                self.GPIO26_status = 1
+            else:
+                self.GPIO26_status = 0
+                pass
+            # EventMesh.debug_log('### key20_extint_cb  {} self.GPIO26_status :{}'.format(args,self.GPIO26_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
+            power_off = EventMesh.publish("get_power_off_state")#获取关机标识
+            if power_off != None:
+                if power_off == 1:
                     return
-                
-                if self.pwkey_count >= 3*10 :
-                    if EventMesh.publish("get_sim_Status") != 1:
-                        EventMesh.debug_log("长3秒关机")
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+            if fall_down != None:
+                if fall_down != 0 or flag == 2:
+                    return
+            if self.sosKey_status != 0 and self.WeChatKey_status != 0:
+                if self.GPIO26_status == 0:#按下
+                    if self.pwkey_press == 0 :
+                        self.aud.stop()  #播放声音 
+                        # self.wechatKey_timeout_cb(0)
+                        # self.sosKey_timeout_cb(0)
+                        self.wechatKey_timer.stop()
+                        self.pwkey_timer.stop()
+                        self.sosKey_timer.stop()
+                        self.wechatKey_press_count = 0
+                        self.sosKey_press_count = 0
+                        self.sosKey_press = 0
+                        self.wechatKey_press = 0
+
+                        self.pwkey_press = 1
+                        self.pwkey_count = 0
+                        self.led_state = 0
+                        self.pwkey_timer.start(100, 1, self.publish_pwkKey_btn_event_cb)
+                        # EventMesh.debug_log("key22_extint_cb:self.key22_timer.start!!!!\n")
+
+        def pwKey_press_cb(self, data):
+            '''KEY2:联动屏幕右下角或返回键长按关机'''
+            if self.pwkey_press == 1 :
+                self.pwkey_count += 1
+                if self.pwkey_count > 5:
+                    if self.led_state == 0:
+                        self.led_state = 1
+                        EventMesh.publish("set_led_time_arg",[1,1,330,led_mode.LONG_LIGHT_GREEN,2,1,led_mode.OTHER_MEASURE_MODE])#測量成功
+                    if self.pwkey_count >= 10*10:
                         EventMesh.publish("stop_led_timer")#设置参数
                         self.pwkey_timer.stop()
                         self.pwkey_count = 0
                         self.pwkey_press = 0
                         self.pwKey_press_count = 0
                         self.led_state = 0
-                        EventMesh.publish("open_power_on", 2)#
+                        # if EventMesh.publish("get_sim_Status") != 1:
+                        #     EventMesh.publish("open_power_on", 2)#
+                        # else:
+                        EventMesh.publish("open_power_on", 3)#
                         return
-                        
+                    
+                    if self.pwkey_count >= 3*10 :
+                        if EventMesh.publish("get_sim_Status") != 1:
+                            EventMesh.debug_log("长3秒关机")
+                            EventMesh.publish("stop_led_timer")#设置参数
+                            self.pwkey_timer.stop()
+                            self.pwkey_count = 0
+                            self.pwkey_press = 0
+                            self.pwKey_press_count = 0
+                            self.led_state = 0
+                            EventMesh.publish("open_power_on", 2)#
+                            return
+                            
+                    
+                if self.GPIO26_status == 1:#松开
+                    if self.pwkey_count >= 1: #防抖100ms
+                        # EventMesh.debug_log("self.GPIO26_status == 1")
+                        self.pwkey_timer.stop()
+                        self.pwkey_count = 0
+                        self.pwkey_press = 0
+                        self.led_state = 0
+                        self.pwKey_press_count+=1
+                        self.pwkey_timer.start(500, 0, self.publish_pwKey_timeout_cb_do)#松手超时1s判断
+
+        def  hsensorTest_timer_cb(self,e):
+            EventMesh.publish("system_sleep_rest")#防止黑屏 
+            w_data = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
+            #EventMesh.debug_log("FactoryModeHsensorTest{}".format(data))
+        
+            c_data = self.Hsensor.get_test_data()#校准数据和工厂数据
+            # text_data = "   佩戴状态\n红外:{}活体:{}佩戴:{}\n{},{} \n{},{} \n{},{}\n校准数据:{},{},{},{}\n漏光数据:{},{},{}".format(
+            #                                             c_data[3],c_data[4],w_data,c_data[5],c_data[6],c_data[7],c_data[8],c_data[9],c_data[10],
+            #                                                 c_data[11],c_data[12],c_data[13],c_data[14],c_data[0],c_data[1],c_data[2],)
                 
-            if self.GPIO26_status == 1:#松开
-                if self.pwkey_count >= 1: #防抖100ms
-                    # EventMesh.debug_log("self.GPIO26_status == 1")
-                    self.pwkey_timer.stop()
-                    self.pwkey_count = 0
-                    self.pwkey_press = 0
-                    self.led_state = 0
-                    self.pwKey_press_count+=1
-                    self.pwkey_timer.start(500, 0, self.publish_pwKey_timeout_cb_do)#松手超时1s判断
-
-    def  hsensorTest_timer_cb(self,e):
-        EventMesh.publish("system_sleep_rest")#防止黑屏 
-        w_data = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
-        #EventMesh.debug_log("FactoryModeHsensorTest{}".format(data))
-    
-        c_data = self.Hsensor.get_test_data()#校准数据和工厂数据
-        # text_data = "   佩戴状态\n红外:{}活体:{}佩戴:{}\n{},{} \n{},{} \n{},{}\n校准数据:{},{},{},{}\n漏光数据:{},{},{}".format(
-        #                                             c_data[3],c_data[4],w_data,c_data[5],c_data[6],c_data[7],c_data[8],c_data[9],c_data[10],
-        #                                                 c_data[11],c_data[12],c_data[13],c_data[14],c_data[0],c_data[1],c_data[2],)
-            
-        if(self.hsensorTest_timer_count != 0):
-                self.hsensorTest_timer_count -= 1
-                if self.hsensorTest_timer_count%5 == 0:
-                    EventMesh.debug_log("c_data:{} {} {} {}".format(c_data[11],c_data[12],c_data[13],c_data[14]))
-                    if c_data[11] != 0 and c_data[13] != 0: #校准成功
-                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
-                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+            if(self.hsensorTest_timer_count != 0):
+                    self.hsensorTest_timer_count -= 1
+                    if self.hsensorTest_timer_count%5 == 0:
+                        EventMesh.debug_log("c_data:{} {} {} {}".format(c_data[11],c_data[12],c_data[13],c_data[14]))
+                        if c_data[11] != 0 and c_data[13] != 0: #校准成功
+                            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            self.Hsensor.close() 
+                            self.Hsensor.init()
+                            self.hsensorTest_timer.stop()
+                            return
+                    if self.hsensorTest_timer_count == 0:#50秒超时,失败
                         self.Hsensor.close() 
-                        self.Hsensor.init()
+                        self.Hsensor.init(); 
                         self.hsensorTest_timer.stop()
+                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                
+        def publish_pwKey_timeout_cb_do(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.pwKey_timeout_cb,"data":0})  
+        
+        def pwKey_timeout_cb(self, data):#侧边按键
+            boot_count = EventMesh.publish("get_boot_time_count")
+            try :
+                if boot_count < 50 :#开机50秒内按键次数大于10就校准
+                    #EventMesh.debug_log("boot_count:{}".format(boot_count))
+                    if self.pwKey_press_count >= 6:
+                        self.Hsensor =  EventMesh.publish("get_Hsensor")
+                        self.hsensorTest_timer.start(1000,1,self.hsensorTest_timer_cb) 
+                        EventMesh.debug_log("打开校准模式")
+                        self.Hsensor.set_sar(1)
+                        self.Hsensor.open_test(255) #打开校准模式
+                        utime.sleep_ms(500)
+                        self.Hsensor.open_heart()
+                        self.hsensorTest_timer_count = 50
+                        self.hsensorTest_timer.start(1000,1,self.hsensorTest_timer_cb)
+                        str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_HSENSOR_SPO2_TITLE"),)
+                        EventMesh.publish("play_audio_file",[str_data,1])
+                        self.pwKey_press_count = 0
                         return
-                if self.hsensorTest_timer_count == 0:#50秒超时,失败
-                    self.Hsensor.close() 
-                    self.Hsensor.init(); 
-                    self.hsensorTest_timer.stop()
-                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
-                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
-            
-    def publish_pwKey_timeout_cb_do(self, *args, **kwargs):
-        EventMesh.publish("publish_message_event_btnInfo",{"func":self.pwKey_timeout_cb,"data":0})  
-    
-    def pwKey_timeout_cb(self, data):#侧边按键
-        boot_count = EventMesh.publish("get_boot_time_count")
-        try :
-            if boot_count < 50 :#开机50秒内按键次数大于10就校准
-                #EventMesh.debug_log("boot_count:{}".format(boot_count))
-                if self.pwKey_press_count >= 6:
-                    self.Hsensor =  EventMesh.publish("get_Hsensor")
-                    self.hsensorTest_timer.start(1000,1,self.hsensorTest_timer_cb) 
-                    EventMesh.debug_log("打开校准模式")
-                    self.Hsensor.set_sar(1)
-                    self.Hsensor.open_test(255) #打开校准模式
-                    utime.sleep_ms(500)
-                    self.Hsensor.open_heart()
-                    self.hsensorTest_timer_count = 50
-                    self.hsensorTest_timer.start(1000,1,self.hsensorTest_timer_cb)
-                    str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_HSENSOR_SPO2_TITLE"),)
-                    EventMesh.publish("play_audio_file",[str_data,1])
-                    self.pwKey_press_count = 0
-                    return
 
-        except Exception as e:
-            usys.print_exception(e)
-        if self.pwKey_press_count >= 1:
-            # EventMesh.debug_log("pwKey_timeout_cb:self.pwKey_press_count >= 1")
-            
-            EventMesh.publish("stop_led_timer")#设置参数
-            EventMesh.publish("dialing_out_event")#电话呼叫中voiceCall.callEnd()
+            except Exception as e:
+                usys.print_exception(e)
+            if self.pwKey_press_count >= 1:
+                self.pwKey_press_count = 0
+                # EventMesh.debug_log("pwKey_timeout_cb:self.pwKey_press_count >= 1")
+                flag = EventMesh.publish("get_call_state") 
+                if flag != 2:
+                    EventMesh.publish("stop_led_timer")#设置参数
+                    EventMesh.publish("dialing_out_event")#电话呼叫中voiceCall.callEnd()
+
+                    if flag == 1:#如果是sos电话拨出去
+                        sos_flag = EventMesh.publish("get_sos_flag")
+                        if sos_flag == 1:
+                            EventMesh.publish("set_sos_flag",0)
+                            EventMesh.publish("set_sos_num",0)
+                            EventMesh.publish("set_hangup_mode",0)
+                    EventMesh.publish("close_hr_sop2")#
+                    flag = EventMesh.publish("get_call_state") 
+                    if flag != 1:
+                        EventMesh.publish("set_sim_mode")#
             
-            # EventMesh.publish(constants.EVENT.START_LOCATION) #开始定位
-            sos_flag = EventMesh.publish("get_sos_flag")
-            if sos_flag == 1:
-                EventMesh.publish("set_sos_flag",0)
-                EventMesh.publish("set_sos_num",0)
-                EventMesh.publish("set_hangup_mode",0)
-            EventMesh.publish("close_hr_sop2")#
-            flag = EventMesh.publish("get_call_state") 
-            if flag != 1:
-                EventMesh.publish("set_sim_mode")#
-        
-        self.pwKey_press_count = 0
-
-    def sosKey_extint_cb(self,args):
-        power_off = EventMesh.publish("get_power_off_state")#获取关机标识
-        if power_off != None:
-            if power_off == 1:
-                return
-        open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-        if open_power != None:
-            if open_power == 0:
-                return
-        self.sosKey_status = self.sosKey.read_level()
-        # EventMesh.debug_log('### key22_extint_cb  {} self.GPIO22_status:{}'.format(args,self.sosKey_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
-        if self.WeChatKey_status != 0 and self.GPIO26_status != 0:
-            if self.sosKey_status == 0:#按下
-                EventMesh.publish("close_falldown_alarm_event")#sos短按事件
-                if self.sosKey_press == 0 :
-                    self.led_state = 0
-                    self.wechatKey_timer.stop()
-                    self.pwkey_timer.stop()
-                    self.sosKey_timer.stop()
-                    self.wechatKey_press_count = 0
-                    self.pwKey_press_count = 0
-                    self.sosKey_press = 1
-                    self.pwkey_press = 0
-                    self.wechatKey_press = 0
-                    self.sosKey_long_press = 0
-                    self.sosKey_count = 0
-                    self.sosKey_timer.start(100, 1, self.publish_soskey_btn_event_cb)
-        # EventMesh.debug_log("key22_extint_cb:self.key22_timer.start!!!!\n")
-
-    def sosKey_press_cb(self, data):
-        '''KEY2:联动屏幕右下角或返回键长按关机'''
-        if self.sosKey_press == 1 :
-            # if self.sosKey_count <= 2:
-                # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音
-                #     EventMesh.publish("set_led_time_arg",[1000,200,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
-                # else:
-                #     EventMesh.publish("set_led_time_arg",[1000,200,1,led_mode.FLASH_LIGHT_RED,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
-            self.sosKey_count += 1
-            if self.sosKey_count >= 10*3: #长按3s sos拨号
-                self.sosKey_count = 0
-                self.sosKey_long_press = 1
-                self.sosKey_press = 0
-                self.sosKey_timer.stop()
-                EventMesh.publish_async("dial_sos_phone")#拨打sos号码
-                return
+            self.pwKey_press_count = 0
 
-            # EventMesh.debug_log("self.sosKey_count {}",self.sosKey_count)
-            if self.sosKey_status == 1:#松开
-                if self.sosKey_count >= 1: #防抖100ms
-                    self.sosKey_timer.stop()
+        def sosKey_extint_cb(self,args):
+            power_off = EventMesh.publish("get_power_off_state")#获取关机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            # self.sosKey_status = self.sosKey.read_level()
+            self.sosKey_status = int(args[1])
+            if self.sosKey_status == 0:
+                self.sosKey_status = 1
+            else:
+                self.sosKey_status = 0
+                pass
+            # EventMesh.debug_log('### key22_extint_cb  {} self.GPIO22_status:{}'.format(args,self.sosKey_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
+            if self.WeChatKey_status != 0 and self.GPIO26_status != 0:
+                if self.sosKey_status == 0:#按下
+                    EventMesh.publish("close_falldown_alarm_event")#sos短按事件
+                    if self.sosKey_press == 0 :
+                        self.led_state = 0
+                        self.wechatKey_timer.stop()
+                        self.pwkey_timer.stop()
+                        self.sosKey_timer.stop()
+                        self.wechatKey_press_count = 0
+                        self.pwKey_press_count = 0
+                        self.sosKey_press = 1
+                        self.pwkey_press = 0
+                        self.wechatKey_press = 0
+                        self.sosKey_long_press = 0
+                        self.sosKey_count = 0
+                        self.sosKey_timer.start(100, 1, self.publish_soskey_btn_event_cb)
+            # EventMesh.debug_log("key22_extint_cb:self.key22_timer.start!!!!\n")
+
+        def sosKey_press_cb(self, data):
+            '''KEY2:联动屏幕右下角或返回键长按关机'''
+            if self.sosKey_press == 1 :
+                # if self.sosKey_count <= 2:
+                    # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音
+                    #     EventMesh.publish("set_led_time_arg",[1000,200,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+                    # else:
+                    #     EventMesh.publish("set_led_time_arg",[1000,200,1,led_mode.FLASH_LIGHT_RED,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+                self.sosKey_count += 1
+                if self.sosKey_count >= 10*3: #长按3s sos拨号
                     self.sosKey_count = 0
+                    self.sosKey_long_press = 1
                     self.sosKey_press = 0
-                    self.sosKey_press_count+=1
-                    self.sosKey_timer.start(500, 0, self.publish_sosKey_timeout_cb_do)#松手超时1s判断
-    def publish_sosKey_timeout_cb_do(self, *args, **kwargs):
-        EventMesh.publish("publish_message_event_btnInfo",{"func":self.sosKey_timeout_cb,"data":0})  
-    def sosKey_timeout_cb(self, data):#
-        # EventMesh.debug_log("sosKey_press_count!!!!!!!!!!!!!! ",self.sosKey_press_count)
-        
-        if self.sosKey_press_count == 10:#
-            self.sosKey_press_count = 0
-            pass
-        elif self.sosKey_press_count == 6:#
-            self.sosKey_press_count = 0
-            pass
-        elif self.sosKey_press_count == 5:#功能暂时屏蔽
-            self.sosKey_press_count = 0
-            call_state = EventMesh.publish("get_call_state")
-            battery = EventMesh.publish("screen_get_battery")
-            if call_state == None:
-                call_state = 0
-            if call_state == 0: 
-                if battery != None:
-                    if battery[0] != "1":#在充电得时候
-                        EventMesh.publish("stop_led_timer")#设置参数
-                        EventMesh.publish("set_manual_measure_mode",3)#测量体温
-            pass
-        elif self.sosKey_press_count == 4:#拨打app快捷号码
-            self.sosKey_press_count = 0
-            EventMesh.publish("stop_led_timer")#设置参数
-            EventMesh.publish("play_center_phone")#拨打快捷号码
-            # EventMesh.publish("call_phonebook_three_call")
-            pass
-        elif self.sosKey_press_count == 3:#测试心率
-            self.sosKey_press_count = 0
-            
-            call_state = EventMesh.publish("get_call_state")
-            battery = EventMesh.publish("screen_get_battery")
-            if call_state == None:
-                call_state = 0
-            if call_state == 0: 
-                if battery != None:
-                    if battery[0] != "1":#在充电得时候
-                        EventMesh.publish("stop_led_timer")#设置参数
-                        EventMesh.publish("set_manual_measure_mode",1)#
-            pass
-        elif self.sosKey_press_count == 2:#播报当前步数
-            self.sosKey_press_count = 0
-            EventMesh.publish("stop_led_timer")#设置参数
-            EventMesh.publish("play_cur_step_event")#
-            pass
-        elif self.sosKey_press_count == 1:#挂断来电 短语音播报
+                    self.sosKey_timer.stop()
+                    flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+                    fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+                    if fall_down != None:
+                        if fall_down != 0 or flag == 2:
+                            return
+                    EventMesh.publish_async("dial_sos_phone")#拨打sos号码
+                    return
+
+                # EventMesh.debug_log("self.sosKey_count {}",self.sosKey_count)
+                if self.sosKey_status == 1:#松开
+                    if self.sosKey_count >= 1: #防抖100ms
+                        self.sosKey_timer.stop()
+                        self.sosKey_count = 0
+                        self.sosKey_press = 0
+                        self.sosKey_press_count+=1
+                        self.sosKey_timer.start(500, 0, self.publish_sosKey_timeout_cb_do)#松手超时1s判断
+        def publish_sosKey_timeout_cb_do(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.sosKey_timeout_cb,"data":0})  
+        def sosKey_timeout_cb(self, data):#
+            # EventMesh.debug_log("sosKey_press_count!!!!!!!!!!!!!! ",self.sosKey_press_count)
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+            if self.sosKey_press_count > 1:#短按十次解绑app
+                if fall_down != None:
+                    if fall_down != 0 or flag == 2:
+                        self.sosKey_press_count = 0
+                        return
+            if self.sosKey_press_count == 10:#
+                self.sosKey_press_count = 0
+                pass
+            elif self.sosKey_press_count == 6:#
+                self.sosKey_press_count = 0
+                pass
+            elif self.sosKey_press_count == 5:#功能暂时屏蔽
+                self.sosKey_press_count = 0
+                call_state = EventMesh.publish("get_call_state")
+                battery = EventMesh.publish("screen_get_battery")
+                if call_state == None:
+                    call_state = 0
+                if call_state == 0: 
+                    if battery != None:
+                        if battery[0] != "1":#在充电得时候
+                            EventMesh.publish("stop_led_timer")#设置参数
+                            EventMesh.publish("set_manual_measure_mode",3)#测量体温
+                pass
+            elif self.sosKey_press_count == 4:#拨打app快捷号码
+                self.sosKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("play_center_phone")#拨打快捷号码
+                # EventMesh.publish("call_phonebook_three_call")
+                pass
+            elif self.sosKey_press_count == 3:#测试心率
+                self.sosKey_press_count = 0
+                
+                call_state = EventMesh.publish("get_call_state")
+                battery = EventMesh.publish("screen_get_battery")
+                if call_state == None:
+                    call_state = 0
+                if call_state == 0: 
+                    if battery != None:
+                        if battery[0] != "1":#在充电得时候
+                            EventMesh.publish("stop_led_timer")#设置参数
+                            EventMesh.publish("set_manual_measure_mode",1)#
+                pass
+            elif self.sosKey_press_count == 2:#播报当前步数
+                self.sosKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("play_cur_step_event")#
+                pass
+            elif self.sosKey_press_count == 1:#挂断来电 短语音播报
+                self.sosKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("sos_short_press")#sos短按事件
+                
+                pass
             self.sosKey_press_count = 0
-            EventMesh.publish("stop_led_timer")#设置参数
-            # EventMesh.publish("call_test_event")
-            EventMesh.publish("sos_short_press")#sos短按事件
-            
-            pass
-        self.sosKey_press_count = 0
 
 
-    def wechatKey_extint_cb(self,args):
-        power_off = EventMesh.publish("get_power_off_state")#获取关机标识
-        if power_off != None:
-            if power_off != 0:
-                return
-        open_power = EventMesh.publish("get_power_on_state")#获取开机标识
-        if open_power != None:
-            if open_power == 0:
-                return
+        def wechatKey_extint_cb(self,args):
+            power_off = EventMesh.publish("get_power_off_state")#获取关机标识
+            if power_off != None:
+                if power_off != 0:
+                    return
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+            if fall_down != None:
+                if fall_down != 0:
+                    return
+            # self.WeChatKey_status = self.wechatKey.read_level()
+            self.WeChatKey_status = int(args[1])
+            if self.WeChatKey_status == 0:
+                self.WeChatKey_status = 1
+            else:
+                self.WeChatKey_status = 0
+                pass
+            # EventMesh.debug_log('### wechatKey_extint_cb  {} self.WeChatKey_status:{}'.format(args,self.WeChatKey_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
+            if self.sosKey_status != 0 and self.GPIO26_status != 0:
+                if self.WeChatKey_status == 0:#按下
+                    if self.wechatKey_press == 0:
+                        # self.pwKey_timeout_cb(0)
+                        # self.sosKey_timeout_cb(0)
+                        self.wechatKey_timer.stop()
+                        self.pwkey_timer.stop()
+                        self.sosKey_timer.stop()
+                        self.sosKey_press_count = 0
+                        self.pwKey_press_count = 0
+                        self.sosKey_press = 0
+                        self.pwkey_press = 0
+                        self.wechatKey_press = 1
+                        self.led_state = 0
+                        self.wechatKey_count = 0
+                        self.wechat_state = 1
+                        self.wechatKey_timer.start(100, 1, self.publish_wechat_btn_event_cb)
+
+        def close_wechat_btn_timer(self,event,*argc):
+            tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳
+            wechat_time = 0
+            time_tmp = 0
+            time_sec = 0
 
-        self.WeChatKey_status = self.wechatKey.read_level()
-        # EventMesh.debug_log('### wechatKey_extint_cb  {} self.WeChatKey_status:{}'.format(args,self.WeChatKey_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
-        if self.sosKey_status != 0 and self.GPIO26_status != 0:
-            if self.WeChatKey_status == 0:#按下
-                if self.wechatKey_press == 0:
-                    # self.pwKey_timeout_cb(0)
-                    # self.sosKey_timeout_cb(0)
+            if tmp != None:
+                if tmp[0] == 1:
                     self.wechatKey_timer.stop()
-                    self.pwkey_timer.stop()
-                    self.sosKey_timer.stop()
-                    self.sosKey_press_count = 0
-                    self.pwKey_press_count = 0
-                    self.sosKey_press = 0
-                    self.pwkey_press = 0
-                    self.wechatKey_press = 1
-                    self.led_state = 0
                     self.wechatKey_count = 0
-                    self.wechat_state = 1
-                    self.wechatKey_timer.start(100, 1, self.publish_wechat_btn_event_cb)
-
-    def close_wechat_btn_timer(self,event,*argc):
-        tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳
-        wechat_time = 0
-        time_tmp = 0
-        time_sec = 0
-
-        if tmp != None:
-            if tmp[0] == 1:
-                self.wechatKey_timer.stop()
-                self.wechatKey_count = 0
-                self.wechatKey_press = 0
-                self.wechatKey_press_count=0
-                date_tmp = utime.localtime()
-                time_tmp = utime.mktime(date_tmp)
-                time_sec = tmp[1]
-                wechat_time = time_tmp - time_sec
-                # EventMesh.debug_log("close_btn_timer",time_tmp,time_sec,wechat_time)
-                if wechat_time >= 15:
-                    wechat_time = 15
-                if wechat_time <= 0:
-                    wechat_time = 0
-                EventMesh.publish("send_wechat_record",wechat_time)#发送录音文件内容
-       
-
-    def wechatKey_press_cb(self,data):
-        wechat_time = 0
-        tmp = None
-        time_sec = 0
-        time_tmp = 0
-        date_tmp = utime.localtime()
-        time_tmp = utime.mktime(date_tmp)
-        '''KEY2:联动屏幕右下角或返回键长按关机'''
-        if self.wechatKey_press == 1 :#是否按下
-            tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳
-            self.wechatKey_count += 1
-            if self.wechatKey_count >= 10: #长按1s进入微聊录音
-                flag = EventMesh.publish("get_call_state") 
-                fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
-                if flag != None:
-                    if flag == 0 and fall_down == 0:
-                        if self.WeChatKey_status == 0:
-                            if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音
-                                if self.wechat_state == 1:#按下超过s开始录音
-                                    EventMesh.publish("start_wechat_record")#开始录音
+                    self.wechatKey_press = 0
+                    self.wechatKey_press_count=0
+                    date_tmp = utime.localtime()
+                    time_tmp = utime.mktime(date_tmp)
+                    time_sec = tmp[1]
+                    wechat_time = time_tmp - time_sec
+                    # EventMesh.debug_log("close_btn_timer",time_tmp,time_sec,wechat_time)
+                    if wechat_time >= 15:
+                        wechat_time = 15
+                    if wechat_time <= 0:
+                        wechat_time = 0
+                    EventMesh.publish("send_wechat_record",wechat_time)#发送录音文件内容
+        
+
+        def wechatKey_press_cb(self,data):
+            wechat_time = 0
+            tmp = None
+            time_sec = 0
+            time_tmp = 0
+            date_tmp = utime.localtime()
+            time_tmp = utime.mktime(date_tmp)
+            '''KEY2:联动屏幕右下角或返回键长按关机'''
+            if self.wechatKey_press == 1 :#是否按下
+                tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳
+                self.wechatKey_count += 1
+                if self.wechatKey_count >= 10: #长按1s进入微聊录音
+                    flag = EventMesh.publish("get_call_state") 
+                    fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+                    if flag != None:
+                        if flag == 0 and fall_down == 0:
+                            if self.WeChatKey_status == 0:
+                                if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音
+                                    if self.wechat_state == 1:#按下超过s开始录音
+                                        EventMesh.publish("start_wechat_record")#开始录音
+                                        self.wechat_state = 0
+                                else:
                                     self.wechat_state = 0
-                            else:
-                                self.wechat_state = 0
-                                self.wechatKey_timer.stop()
-                                self.wechatKey_count = 0
-                                self.wechatKey_press = 0
-                                self.wechatKey_press_count=0
-                                EventMesh.publish("set_sim_mode")#播報imei号
-                                return
-
-                        if self.WeChatKey_status == 0:#未松手超过15s啧停止录音
-                            if self.wechat_state == 0:
-                                if tmp != None:
-                                    if tmp[0] != 0:
-                                        time_sec = tmp[1]
-                                        if time_tmp - time_sec >= 15:
-                                            wechat_time = time_tmp - time_sec
-                                            if wechat_time >= 15:
-                                                wechat_time = 15
-                                            EventMesh.publish("send_wechat_record",wechat_time)#发送录音文件内容
-                                            
-                                            self.wechatKey_timer.stop()
-                                            self.wechatKey_count = 0
-                                            self.wechatKey_press = 0
-                                            self.wechatKey_press_count=0
-                                            return
-                        else:
-                            if self.WeChatKey_status == 1:
-                                if self.wechat_state == 0:#如果按下时长超过1s且小于长按的时间也认为是录微聊
-                                    if tmp != None:
-                                        if tmp[0] != 0:
-                                            time_sec = tmp[1]
-                                            wechat_time = time_tmp - time_sec
-                                        # EventMesh.debug_log("WECHAT TIEM",time_tmp,time_sec,wechat_time)
-                                        if wechat_time >= 15:
-                                            wechat_time = 15
-                                    
-                                    EventMesh.publish("send_wechat_record",wechat_time)#发送录音文件内容
                                     self.wechatKey_timer.stop()
-
                                     self.wechatKey_count = 0
                                     self.wechatKey_press = 0
                                     self.wechatKey_press_count=0
+                                    EventMesh.publish("set_sim_mode")#播報imei号
                                     return
 
-            if self.WeChatKey_status == 1:#松开
-                if self.wechatKey_count >= 1: #防抖100ms
-                    # EventMesh.debug_log("WeChat time!!!!!!!!!!!!!!")
-                    self.wechatKey_timer.stop()
-                    self.wechatKey_count = 0
-                    self.wechatKey_press = 0
-                    self.wechatKey_press_count+=1
-                    self.wechatKey_timer.start(500, 0, self.publish_wechatKey_btn_event_cb)#松手超时1s判断
-
-    def publish_wechatKey_btn_event_cb(self, *args, **kwargs):
-        EventMesh.publish("publish_message_event_btnInfo",{"func":self.wechatKey_timeout_cb,"data":0})  
-
-    def wechatKey_timeout_cb(self,data):#微聊键
-
-        if self.wechatKey_press_count > 1:#短按十次解绑app
+                            if self.WeChatKey_status == 0:#未松手超过15s啧停止录音
+                                if self.wechat_state == 0:
+                                    if tmp != None:
+                                        if tmp[0] != 0:
+                                            time_sec = tmp[1]
+                                            if time_tmp - time_sec >= 15:
+                                                wechat_time = time_tmp - time_sec
+                                                if wechat_time >= 15:
+                                                    wechat_time = 15
+                                                EventMesh.publish("send_wechat_record",wechat_time)#发送录音文件内容
+                                                
+                                                self.wechatKey_timer.stop()
+                                                self.wechatKey_count = 0
+                                                self.wechatKey_press = 0
+                                                self.wechatKey_press_count=0
+                                                return
+                            else:
+                                if self.WeChatKey_status == 1:
+                                    if self.wechat_state == 0:#如果按下时长超过1s且小于长按的时间也认为是录微聊
+                                        if tmp != None:
+                                            if tmp[0] != 0:
+                                                time_sec = tmp[1]
+                                                wechat_time = time_tmp - time_sec
+                                            # EventMesh.debug_log("WECHAT TIEM",time_tmp,time_sec,wechat_time)
+                                            if wechat_time >= 15:
+                                                wechat_time = 15
+                                        
+                                        EventMesh.publish("send_wechat_record",wechat_time)#发送录音文件内容
+                                        self.wechatKey_timer.stop()
+
+                                        self.wechatKey_count = 0
+                                        self.wechatKey_press = 0
+                                        self.wechatKey_press_count=0
+                                        return
+                        else:
+                            self.wechatKey_timer.stop()
+                            self.wechatKey_count = 0
+                            self.wechatKey_press = 0
+                            self.wechatKey_press_count=0
+                if self.WeChatKey_status == 1:#松开
+                    if self.wechatKey_count >= 1: #防抖100ms
+                        # EventMesh.debug_log("WeChat time!!!!!!!!!!!!!!")
+                        self.wechatKey_timer.stop()
+                        self.wechatKey_count = 0
+                        self.wechatKey_press = 0
+                        self.wechatKey_press_count+=1
+                        self.wechatKey_timer.start(500, 0, self.publish_wechatKey_btn_event_cb)#松手超时1s判断
+
+        def publish_wechatKey_btn_event_cb(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.wechatKey_timeout_cb,"data":0})  
+
+        def wechatKey_timeout_cb(self,data):#微聊键
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
             fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
-            if fall_down != None:
-                if fall_down != 0:
-                    self.wechatKey_press_count = 0
-                    return
-        # EventMesh.debug_log("wechatKey_timeout_cb!!!!!!!!!!!!!! ",self.wechatKey_press_count)
-        if self.wechatKey_press_count == 10:#短按十次解绑app
-            self.wechatKey_press_count = 0
-            EventMesh.publish("stop_led_timer")#设置参数
-            EventMesh.publish("open_power_on", 4)#恢复出厂
-            pass
-        elif self.wechatKey_press_count == 6:#短按六次播报imei号
-            self.wechatKey_press_count = 0
-            EventMesh.publish("stop_led_timer")#设置参数
-            EventMesh.publish("play_imei_event")#播報imei号
-            pass
-        elif self.wechatKey_press_count == 4:#拨打通讯录号码三
-            self.wechatKey_press_count = 0
-            EventMesh.publish("stop_led_timer")#设置参数
-            EventMesh.publish("call_phonebook_three_call")
-            pass
-        elif self.wechatKey_press_count == 3:#拨打通讯录号码二
-            self.wechatKey_press_count = 0
-            EventMesh.publish("stop_led_timer")#设置参数
-            EventMesh.publish("call_phonebook_two_call")
-            pass
-        elif self.wechatKey_press_count == 2:#拨打通讯录号码一
-            EventMesh.publish("stop_led_timer")#设置参数
-            self.wechatKey_press_count = 0
-            EventMesh.publish("call_phonebook_one_call")
-           # EventMesh.publish("interup_call_event")#
-            pass
-        elif self.wechatKey_press_count == 1:#播放最后收到的语音
-            self.wechatKey_press_count = 0
-            EventMesh.publish("stop_led_timer")#设置参数
-            call_state = EventMesh.publish("get_call_state") 
-            if call_state == 0:
-                fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+            if self.wechatKey_press_count > 1:#
                 if fall_down != None:
-                    if fall_down != 0:
-                        EventMesh.publish_async("dial_sos_phone")#拨打sos号码
+                    if fall_down != 0 or flag == 2:
+                        self.wechatKey_press_count = 0
                         return
-            else:
-                if call_state == 2:#电话拨进需要接听
-                    EventMesh.publish("answer_call_event")#接听电话
-                    return
-            EventMesh.publish("play_wechat_last_amr")
-            # pass
-        self.wechatKey_press_count = 0
+            # EventMesh.debug_log("wechatKey_timeout_cb!!!!!!!!!!!!!! ",self.wechatKey_press_count)
+            if self.wechatKey_press_count == 10:#短按十次解绑app
+                self.wechatKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("open_power_on", 4)#恢复出厂
+                pass
+            elif self.wechatKey_press_count == 6:#短按六次播报imei号
+                self.wechatKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("play_imei_event")#播報imei号
+                pass
+            elif self.wechatKey_press_count == 4:#拨打通讯录号码三
+                self.wechatKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("call_phonebook_three_call")
+                pass
+            elif self.wechatKey_press_count == 3:#拨打通讯录号码二
+                self.wechatKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("call_phonebook_two_call")
+                pass
+            elif self.wechatKey_press_count == 2:#拨打通讯录号码一
+                EventMesh.publish("stop_led_timer")#设置参数
+                self.wechatKey_press_count = 0
+                EventMesh.publish("call_phonebook_one_call")
+            # EventMesh.publish("interup_call_event")#
+                pass
+            elif self.wechatKey_press_count == 1:#播放最后收到的语音
+                self.wechatKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                call_state = EventMesh.publish("get_call_state") 
+                if call_state == 0:
+                    fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+                    if fall_down != None:
+                        if fall_down != 0:
+                            EventMesh.publish_async("dial_sos_phone")#拨打sos号码
+                            return
+                else:
+                    if call_state == 2:#电话拨进需要接听
+                        EventMesh.publish("answer_call_event")#接听电话
+                        return
+                EventMesh.publish("play_wechat_last_amr")
+                # pass
+            self.wechatKey_press_count = 0
 
 
-    def pwk_press_cb(self, *args):
-        '''KEY2:联动屏幕右下角或返回键长按关机'''
-        if self.pwk_press == 1 :
-            
-            self.pwk_count += 1
-            EventMesh.debug_log("self.pwk_count {}",self.pwk_count)
-            if self.GPIO26_status == 1:#松开
-                if self.pwk_count >= 1: #防抖100ms
+        def pwk_press_cb(self, *args):
+            '''KEY2:联动屏幕右下角或返回键长按关机'''
+            if self.pwk_press == 1 :
+                
+                self.pwk_count += 1
+                EventMesh.debug_log("self.pwk_count {}",self.pwk_count)
+                if self.GPIO26_status == 1:#松开
+                    if self.pwk_count >= 1: #防抖100ms
+                        self.__pwk_timer.stop()
+                        self.pwk_count = 0
+                        self.pwk_press = 0
+                        EventMesh.debug_log("self.GPIO22_status")
+
+                if self.pwk_count > (self.__PowerDownTimeOut//100): #长按
                     self.__pwk_timer.stop()
                     self.pwk_count = 0
                     self.pwk_press = 0
-                    EventMesh.debug_log("self.GPIO22_status")
-
-            if self.pwk_count > (self.__PowerDownTimeOut//100): #长按
-                self.__pwk_timer.stop()
-                self.pwk_count = 0
-                self.pwk_press = 0
-                EventMesh.debug_log("btn8_long_press")
-
-    def __ui_callback(self, para):
-       # EventMesh.debug_log("para = {}".format(para))
-        if para == 0:
-            EventMesh.publish("done_left_to_right")
-            #EventMesh.debug_log("<-")
-        elif para == 1:
-            EventMesh.publish("done_right_to_left")
-            #EventMesh.debug_log("->")
-        elif para == 2:
-            EventMesh.publish("done_bottom_to_top")
-            #EventMesh.debug_log("^")
-        elif para == 3:
-            EventMesh.publish("done_top_to_bottom")
-            #EventMesh.debug_log("V")
-        elif para == 4:
-            EventMesh.publish("done_return")
-            #EventMesh.debug_log("return")
-        elif para == 5:
-            EventMesh.publish("done_click")
-            #EventMesh.debug_log("CLICK")
-        elif para == 6:
-            EventMesh.publish("done_press")
-            #EventMesh.debug_log("press")
-        elif (para == 6):
-            EventMesh.publish("done_error")
-            #EventMesh.debug_log("error")
-
-    def key_callback(self, l_list):
-        EventMesh.debug_log("key_callback:",str(l_list))
-        if l_list[0] == 1:
-            # 马达震动预留
-            pass
-        if (l_list[1] == 3) and (l_list[2] == 0):
+                    EventMesh.debug_log("btn8_long_press")
+
+        def __ui_callback(self, para):
+        # EventMesh.debug_log("para = {}".format(para))
+            if para == 0:
+                EventMesh.publish("done_left_to_right")
+                #EventMesh.debug_log("<-")
+            elif para == 1:
+                EventMesh.publish("done_right_to_left")
+                #EventMesh.debug_log("->")
+            elif para == 2:
+                EventMesh.publish("done_bottom_to_top")
+                #EventMesh.debug_log("^")
+            elif para == 3:
+                EventMesh.publish("done_top_to_bottom")
+                #EventMesh.debug_log("V")
+            elif para == 4:
+                EventMesh.publish("done_return")
+                #EventMesh.debug_log("return")
+            elif para == 5:
+                EventMesh.publish("done_click")
+                #EventMesh.debug_log("CLICK")
+            elif para == 6:
+                EventMesh.publish("done_press")
+                #EventMesh.debug_log("press")
+            elif (para == 6):
+                EventMesh.publish("done_error")
+                #EventMesh.debug_log("error")
+
+        def key_callback(self, l_list):
+            EventMesh.debug_log("key_callback:",str(l_list))
             if l_list[0] == 1:
-                #self.pwk_press = 0
-                EventMesh.publish("btn1_press")
-            else:
+                # 马达震动预留
                 pass
-                # EventMesh.publish("btn1_press")
+            if (l_list[1] == 3) and (l_list[2] == 0):
+                if l_list[0] == 1:
+                    #self.pwk_press = 0
+                    EventMesh.publish("btn1_press")
+                else:
+                    pass
+                    # EventMesh.publish("btn1_press")
 
 
 
 
-    def powerKey_callback(self, status):
-        EventMesh.debug_log('==pwr:', status)# 0 1 0
-        self.powerKey_status = status
-        if self.pwk_press == 1: #按按钮时不处理
-            return
-       
-           
+        def powerKey_callback(self, status):
+            EventMesh.debug_log('==pwr:', status)# 0 1 0
+            self.powerKey_status = status
+            if self.pwk_press == 1: #按按钮时不处理
+                return
+        
             
+                
 
-    def power_key_press_cb(self, *args):
-        pass
-        # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 0:#未插卡的情况下强制关机
-            # EventMesh.publish("open_power_on", 2)#
+        def power_key_press_cb(self, *args):
+            pass
+            # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 0:#未插卡的情况下强制关机
+                # EventMesh.publish("open_power_on", 2)#
 
 
-    def start(self):
-        self.post_processor_after_instantiation()
+        def start(self):
+            self.post_processor_after_instantiation()
diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m_d15.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m_d15.py
new file mode 100644 (file)
index 0000000..93ef8d3
--- /dev/null
@@ -0,0 +1,3041 @@
+from common import Abstract
+import machine
+import osTimer
+from misc import PowerKey
+import EventMesh
+from machine import Pin
+from machine import ExtInt
+import constants
+import utime
+import audio
+import ql_fs
+import ujson
+import voiceCall
+from misc import Power
+from led import red_green_light,green_light_fast,led_mode,open_led_red,close_led_red,open_led_green,close_led_green,close_led_white
+from machine import RTC
+from queue import Queue
+import _thread
+import usys
+import sms
+from Gsensor import SC7A20
+if EventMesh.model == "D15_" :
+    motor_pin = Pin(Pin.GPIO20, Pin.OUT, Pin.PULL_PD, 0)
+
+    audio_buf = ['audio_find_haixiu', 'R_ALARM_NEW', 'R_BLOOD_SUGAR', 'R_CALL_mp3', 'R_CHARGE_FULL', 'R_CHARGE_IN', 'R_CHARGE_OUT', 'R_DRINK_ALARM', 'R_FALL_ALARM', 'R_HOME_ALARM', 'R_HSENSOR_RESULT_FAILE', 'R_HSENSOR_RESULT_HR_TITLE', 'R_HSENSOR_RESULT_OK', 'R_HSENSOR_SPO2_TITLE', 'R_HSENSOR_TEMP_TITLE', 'R_MEDICINE_ALARM', 'R_NO_SET_SOS_DIAL', 'R_NO_SIM', 'R_POWER_OFF_1', 'R_READ_STEP_0', 'R_READ_STEP_1', 'R_READ_STEP_2', 'R_READ_STEP_3', 'R_READ_STEP_4', 'R_READ_TIME_0', 'R_READ_TIME_1', 'R_READ_TIME_2', 'R_READ_TIME_3', 'R_READ_TIME_4', 'R_READ_TIME_5', 'R_READ_TIME_6', 'R_READ_TIME_7', 'R_READ_TIME_8', 'R_READ_TIME_9', 'R_READ_TIME_MIN', 'R_READ_TIME_ZHENG', 'R_RESET_ALARM', 'R_RESET_END_ALARM', 'R_SIM_CONNECT', 'R_SIM_FAILE', 'R_SLEEP_ALARM', 'R_SOS_ALERT', 'R_TSENSOR_RESULT_VALUE_DOT', 'R_UNREAD_WECHAT', 'R_WAKEUP_ALARM', 'R_WECHAT_RECV']
+
+    class call:
+        CALL_OUT = 1
+        CALL_IN = 2
+        ON_CALL = 3
+
+
+    class intervManager(Abstract):
+        def __init__(self):
+            self.timer = osTimer()
+
+            self.pwk_timer1 = osTimer()
+            self.pwk_timer2 = osTimer()
+            self.timer1 = osTimer()
+            self.sos_timer2 = osTimer()
+            self.sos_timer1 = osTimer()
+
+            self.sos_sendtime = osTimer()
+
+            self.fall_timer1 = osTimer()
+            self.fall_timer2 = osTimer()
+
+            self.alarm_timer1 = osTimer()
+
+            self.find_timer1 = osTimer()
+            self.fall_flag = 0
+
+            self.factory_timer = osTimer()
+            
+            self.restart_timer = osTimer()
+
+            self.aud = audio.Audio(0)
+            self.aud.set_pa(Pin.GPIO29)
+            self.aud.setVolume(11)
+            self.play_count = 0
+            self.count = 0
+
+            self.get_hr_state  = 0
+            self.get_spo2_state = 0
+            self.timeSec = 0
+            self.timeTempSec = 0
+
+            self.hr_value = 0
+            self.spo2_value = 0
+            self.temp_value = 0
+
+            self.usbState = 0
+
+            self.setp_old = 0
+            self.step_tmp = ""
+            self.step_num = 0
+            self.power_off = 0
+            self.call_state = 0
+
+            self.find_state = 0
+            self.FIND_timer_count = 0
+
+            self.old_hour = 0
+            self.alarm_state = 0
+            self.alarm_timer_count = 0
+            self.old_min = 0
+            self.interInfo_queue = Queue()
+            _thread.stack_size(10*1024+64)
+            _thread.start_new_thread(self.interInfo_queue_thread, ())
+            _thread.stack_size(8*1024)
+            EventMesh.subscribe("publish_message_event_interInfo",self.publish_message_event_interInfo)
+            
+
+            self.audio_event_queue = Queue()
+            _thread.stack_size(10*1024+128)
+            _thread.start_new_thread(self.audio_event_queue_thread, ())
+            _thread.stack_size(8*1024)
+            EventMesh.subscribe("publish_message_event_audio",self.publish_message_event_audio)
+
+            self.record_test = audio.Record()
+            self.record_test.gain(4,12)
+
+            self.timeSecond = 0
+            self.wechat_show = 0
+            self.sort_new = {}
+            self.time_min = 0
+            self.press_btn = 0
+            self.countdown_old = 0
+            self.set_unread_wechat = 0
+            self.updateTime = 0
+            
+            self.power_on_flag = 0
+
+            self.MXA_MSG = 1
+            self.wechat_recode_list = {"num":0}
+            self.wechat_num = 0
+            self.read_data = {}
+            self.volum_size = 8 
+            self.phone_num = ''
+            self.sos_phone_num = ''
+            self.msg_tmp = ""
+            self.time_count = 0
+            self.alarm_count = 0
+            self.audio_int = 0
+
+            self.hr_auto = 0
+
+            self.temp_auto = 0
+            
+            check_txt = ql_fs.path_exists("/usr/static/storage_file/wechat_record.json")
+            if check_txt == True :
+                with open("/usr/static/storage_file/wechat_record.json","r") as fd:#音频文件编号
+                    self.wechat_recode_list = ujson.load(fd)
+                    if not self.wechat_recode_list:
+                        self.wechat_recode_list = {"num":0}
+                        self.wechat_num = 0
+            else:
+                self.wechat_recode_list = {"num":0}
+                with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
+                    ujson.dump(self.wechat_recode_list,fd)         
+
+
+        def post_processor_after_instantiation(self):
+            EventMesh.subscribe("open_power_on", self.open_power_on)#开机关机
+
+            EventMesh.subscribe("play_imei_event", self.play_imei_event)#播報imei号
+            EventMesh.subscribe("play_center_phone", self.play_center_phone)#拨打快捷号码
+            EventMesh.subscribe("play_cur_time_event", self.play_cur_time_event)#播放当前时间
+
+            EventMesh.subscribe("OPEN_FIND_WATCH", self.send_find_watch)#查找设备
+            EventMesh.subscribe("STOP_FIND_WATCH", self.stop_find_watch)#是否需要关闭查找设备
+            EventMesh.subscribe("close_timer_all", self.close_timer_all)#关闭相关定时器
+
+            EventMesh.subscribe("dial_sos_phone", self.dial_sos_phone)#长按3s拨打sos求助号码
+
+            EventMesh.subscribe("set_sim_mode", self.set_sim_mode)#sim检测
+
+            EventMesh.subscribe("close_hr_sop2", self.close_hr_sop2)#关闭健康测试
+            EventMesh.subscribe("set_manual_measure_mode", self.set_manual_measure_mode)#设置测试模式
+            EventMesh.subscribe("set_start_measure_time", self.set_start_measure_time)#设置开始测量的时间戳时间
+            EventMesh.subscribe("get_start_measure_time", self.get_start_measure_time)#获取开始测量的时间戳时间
+            EventMesh.subscribe("set_start_temp_measure_time", self.set_start_temp_measure_time)#设置体温开始测量的时间戳时间
+            EventMesh.subscribe("get_start_temp_measure_time", self.get_start_temp_measure_time)#获取体温开始测量的时间戳时间
+            EventMesh.subscribe("play_hr_value", self.play_hr_value)#播放心率数值
+            EventMesh.subscribe("play_spo2_value", self.play_spo2_value)#播放心率数值
+            EventMesh.subscribe("play_temp_value", self.play_temp_value)#播放体温数值
+
+            EventMesh.subscribe("play_sugar_value", self.play_sugar_value)#播放血糖数值
+
+
+            EventMesh.subscribe("set_usb", self.set_usb)#
+            EventMesh.subscribe("get_usb", self.get_usb)#
+
+            EventMesh.subscribe("play_cur_step_event", self.play_cur_step_event)#
+
+            EventMesh.subscribe("set_call_state", self.set_call_state)#1是 拨出去呼叫中 2是播进来 3 是正在通话中 0是无效
+            EventMesh.subscribe("get_call_state", self.get_call_state)#
+            EventMesh.subscribe("interup_call_event", self.interup_call_event)#
+            EventMesh.subscribe("answer_call_event", self.answer_call_event)#接听电话
+            EventMesh.subscribe("dialin_call_event", self.dialin_call_event)#电话拨进响铃
+            EventMesh.subscribe("dialing_out_event", self.dialing_out_event)#电话呼叫中
+            EventMesh.subscribe("call_test_event", self.call_test_event)#电话拨进响铃测试
+
+            EventMesh.subscribe("dial_out_call_center_cb", self.dial_out_call_center_cb)#电话拨出去
+            EventMesh.subscribe("sos_out_call_center_cb", self.sos_out_call_center_cb)#sos拨打
+
+            EventMesh.subscribe("close_audio_play", self.close_audio_play)#关闭音频
+
+
+            EventMesh.subscribe("start_wechat_record", self.start_wechat_record)#手表开始录音
+            EventMesh.subscribe("send_wechat_record", self.send_wechat_record)#发送微聊语音文件to app
+            EventMesh.subscribe("play_wechat_last_amr", self.play_wechat_last_amr)#播放微聊语音最后一条语音文件
+            EventMesh.subscribe("get_wechat_data", self.get_wechat_data)
+            EventMesh.subscribe("set_wechat_data", self.set_wechat_data)
+            EventMesh.subscribe("play_unread_wechat_infor", self.play_unread_wechat_infor)#按键播放最近一条微聊语音
+            EventMesh.subscribe("set_unread_wechat_state", self.set_unread_wechat_state)#设置未读标识
+            EventMesh.subscribe("get_unread_wechat_state", self.get_unread_wechat_state)#获取未读标志
+            EventMesh.subscribe("get_wechat_time", self.get_wechat_time)#获取微聊时间戳
+            EventMesh.subscribe("get_wechat_state", self.get_wechat_state)#获取微聊时间戳
+
+
+            EventMesh.subscribe("get_power_on_state", self.get_power_on_state)#获取开机标识
+            EventMesh.subscribe("get_power_off_state", self.get_power_off_state)#获取关机标识
+
+            EventMesh.subscribe("play_audio_file", self.play_audio_file)#获取播放音频文件
+
+            EventMesh.subscribe("OPEN_ALARM_RING", self.send_alarm_ring)#闹钟到点响铃
+            EventMesh.subscribe("STOP_ALARM_RING", self.stop_alarm_ring)#是否需要关闭闹钟
+
+            EventMesh.subscribe("recv_wechat_audio", self.recv_wechat_audio)#
+
+
+            EventMesh.subscribe("sos_short_press", self.sos_short_press)#sos短按事件
+
+            EventMesh.subscribe("falldown_alarm_event", self.falldown_alarm_event)#跌倒报警
+
+            EventMesh.subscribe("close_falldown_alarm_event", self.close_falldown_alarm_event)#关闭跌倒报警
+
+            EventMesh.subscribe("drink_alarm_event", self.drink_alarm_event)#该喝水了
+
+            EventMesh.subscribe("medicine_alarm_event", self.medicine_alarm_event)#该吃药了
+
+            EventMesh.subscribe("wakeup_alarm_event", self.wakeup_alarm_event)#该起床了
+
+            EventMesh.subscribe("home_alarm_event", self.home_alarm_event)#该回家了
+
+            EventMesh.subscribe("sleep_alarm_event", self.sleep_alarm_event)#该睡觉了
+
+            EventMesh.subscribe("reset_alarm_event", self.reset_alarm_event)#该休息了
+
+            EventMesh.subscribe("reset_end_alarm_event", self.reset_end_alarm_event)#休息结束了
+
+            EventMesh.subscribe("get_fall_down_state", self.get_fall_down_state)#跌倒报警标识
+
+            EventMesh.subscribe("app_factory", self.app_factory)#app恢复出厂
+
+            EventMesh.subscribe("app_restart", self.app_restart)#远程重启
+
+        
+
+        def interInfo_queue_thread(self):
+            while True:
+                data = self.interInfo_queue.get()
+                #EventMesh.debug_log("interInfo_queue_thread:data = {}".format(data))
+                if data != None:
+                    try:
+                        data["func"](data["data"])
+                    except Exception as e:
+                        EventMesh.debug_log("interInfo_queue_thread:ERROR:{}".format(e))
+                        usys.print_exception(e)
+
+        def publish_message_event_interInfo(self,event,msg):
+            self.interInfo_queue.put(msg)
+
+        def publish_call_event_cb(self, *args, **kwargs):#拨打电话
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.call_timer_cb,"data":0})  
+
+        def publish_resatrt_down_event_cb(self, *args, **kwargs):#重启设备
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.powe_resatrt_down_fun,"data":0})  
+        
+        def publish_power_down_event_cb(self, *args, **kwargs):#关机
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.power_down_fun,"data":0})  
+
+        def publish_find_watch_event_cb(self, *args, **kwargs):#查找设备
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.FIND_timer_cb,"data":0})  
+
+        def publish_alarm_ring_event_cb(self, *args, **kwargs):#闹钟响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.Alarm_timer_cb,"data":0})  
+
+        def publish_reset_alarm_ring_event_cb(self, *args, **kwargs):#休息响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.reset_alarm_event_cb,"data":0})  
+        
+        def publish_reset_end_alarm_ring_event_cb(self, *args, **kwargs):#休息结束响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.reset_end_alarm_event_cb,"data":0})  
+        
+        def publish_sleep_alarm_ring_event_cb(self, *args, **kwargs):#睡觉响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.sleep_alarm_event_cb,"data":0})  
+        
+        def publish_home_ring_event_cb(self, *args, **kwargs):#回家响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.home_alarm_event_cb,"data":0})  
+
+        def publish_wakeup_ring_event_cb(self, *args, **kwargs):#起床响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.wakeup_alarm_event_cb,"data":0})  
+
+        def publish_medicine_ring_event_cb(self, *args, **kwargs):#吃药响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.medicine_alarm_event_cb,"data":0})  
+
+        def publish_drink_ring_event_cb(self, *args, **kwargs):#喝水响铃
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.drink_alarm_event_cb,"data":0})  
+
+        def publish_fall_done_ring_event_cb(self, *args, **kwargs):#跌倒提醒
+            EventMesh.publish("publish_message_event_interInfo",{"func":self.falldown_alarm_cb,"data":0})  
+
+
+        def reset_alarm_event(self,args,msg):#该休息了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.publish_reset_alarm_ring_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_RESET_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        def reset_alarm_event_cb(self,args):#该休息了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_RESET_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
+                self.alarm_count = 0
+                self.alarm_timer1.stop()
+
+        def reset_end_alarm_event(self,args,msg):#休息结束了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.reset_end_alarm_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_RESET_END_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        
+        def reset_end_alarm_event_cb(self,args):#休息结束了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_RESET_END_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
+                self.alarm_count = 0
+                self.alarm_timer1.stop()
+        
+        def sleep_alarm_event(self,args,msg):#该睡觉了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.publish_sleep_alarm_ring_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SLEEP_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        def sleep_alarm_event_cb(self,args):#该睡觉了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SLEEP_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
+                self.alarm_count = 0
+                self.alarm_timer1.stop()
+
+
+        def home_alarm_event(self,args,msg):#该回家了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.publish_home_ring_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HOME_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        
+        def home_alarm_event_cb(self,args):#该回家了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HOME_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
+                self.alarm_count = 0
+                self.alarm_timer1.stop()
+        
+        def wakeup_alarm_event(self,args,msg):#该起床了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.publish_wakeup_ring_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_WAKEUP_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        
+        def wakeup_alarm_event_cb(self,args):#该起床了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_WAKEUP_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
+                self.alarm_count = 0
+                self.alarm_timer1.stop()
+
+
+        def medicine_alarm_event(self,args,msg):#该吃药了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.publish_medicine_ring_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_MEDICINE_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+
+        def medicine_alarm_event_cb(self,args):#该吃药了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_MEDICINE_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
+                self.alarm_count = 0
+                self.alarm_timer1.stop()
+
+        def drink_alarm_event(self,args,msg):#该喝水了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count = 0
+                self.alarm_timer1.start(2000, 1, self.publish_drink_ring_event_cb)
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_DRINK_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            
+
+
+        def drink_alarm_event_cb(self,args):#该喝水了
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0 and self.fall_flag == 0:
+                self.alarm_count += 1# 1 2 
+                if self.alarm_count >= 3:
+                    self.alarm_count = 0
+                    self.alarm_timer1.stop()
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_DRINK_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
+                self.alarm_count = 0
+                self.alarm_timer1.stop()
+            
+        def falldown_alarm_event(self,args,msg):#跌倒报警启动中提示
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if flag == 0 and wechat_state == 0:
+                EventMesh.publish("close_timer_all")#
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_FALL_ALARM"))
+                self.time_count = 0
+                self.fall_flag = 0
+                self.fall_timer1.stop()
+                self.fall_flag = 1
+                self.fall_timer1.start(4000, 1, self.publish_fall_done_ring_event_cb)
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+
+        def falldown_alarm_cb(self,*args):
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if self.call_state == 0 and wechat_state == 0:
+                self.time_count+=1
+                if self.time_count >= 5:
+                    self.time_count = 0
+                    self.fall_timer1.stop()
+                    EventMesh.publish_async("dial_sos_phone")#拨打sos号码
+                    return
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_FALL_ALARM"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+            else:
+                self.time_count = 0
+                self.fall_timer1.stop()
+        
+        def close_falldown_alarm_event(self,event,msg):#跌倒挂断挂断
+            if self.fall_flag == 1:#跌倒标志
+                self.fall_flag = 0
+                self.fall_timer1.stop()
+                self.sos_timer1.stop()
+                self.sos_timer2.stop()
+                if self.call_state != 0:
+                    self.call_state = 0
+                    voiceCall.callEnd()
+                sos_flag = EventMesh.publish("get_sos_flag")
+                if sos_flag == 1:
+                    self.call_state = 0
+                    EventMesh.publish("set_sos_flag",0)
+                    EventMesh.publish("set_sos_num",0)
+                    EventMesh.publish("set_hangup_mode",0)
+
+        
+
+        def send_find_watch(self, event, msg): #发送查找设备指令
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if flag == 0 and wechat_state == 0 and self.fall_flag == 0: 
+                EventMesh.publish("close_timer_all")#
+                self.find_state = 1
+                self.FIND_timer_count = 0
+                self.alarm_timer1.start(3000,1,self.publish_find_watch_event_cb)
+                EventMesh.publish("set_led_time_arg",[1,1,330,led_mode.LONG_LIGHT_GREEN,2,1,led_mode.OTHER_MEASURE_MODE])#測量成功
+                # EventMesh.publish("set_led_time_arg",[1000,33000,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("audio_find_haixiu"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+        
+        def stop_find_watch(self, event, msg): 
+            if self.find_state == 1:
+                self.find_state = 0
+                self.FIND_timer_count = 0
+                # EventMesh.publish("stop_led_timer")#设置参数
+                self.aud.stopPlayStream()  #播放声音 
+                self.alarm_timer1.stop()
+
+        def FIND_timer_cb(self, data):
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if flag == 0 and wechat_state == 0 and self.fall_flag == 0:
+                if self.find_state == 1:
+                    # EventMesh.debug_log("self.FIND_timer_count:{}".format(self.FIND_timer_count))
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("audio_find_haixiu"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    self.FIND_timer_count += 1
+                    if self.FIND_timer_count > 10: #120秒30s
+                        EventMesh.publish("STOP_FIND_WATCH")
+            else:
+                self.FIND_timer_count = 0
+                self.alarm_timer1.stop()
+                
+        
+        def stop_FIND(self) :
+            self.alarm_timer1.stop()
+
+        def send_alarm_ring(self, event, msg): #发送查找设备指令
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if flag == 0 and wechat_state == 0 and self.fall_flag == 0:
+                EventMesh.publish("close_timer_all")#
+                self.alarm_state = 1
+                self.alarm_timer_count = 0
+                self.alarm_timer1.start(3000,1,self.publish_alarm_ring_event_cb)
+                # EventMesh.publish("set_led_time_arg",[1,1,330,led_mode.LONG_LIGHT_GREEN,2,1,led_mode.OTHER_MEASURE_MODE])#測量成功
+                # EventMesh.publish("set_led_time_arg",[1000,33000,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_ALARM_NEW"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+        
+        def stop_alarm_ring(self, event, msg): #停止闹钟响铃
+            if self.alarm_state == 1:
+                self.alarm_state = 0
+                self.alarm_timer_count = 0
+                # EventMesh.publish("stop_led_timer")#设置参数
+                self.aud.stopPlayStream()  #停止播放
+                self.alarm_timer1.stop()
+
+        def Alarm_timer_cb(self, data):
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            wechat_state = EventMesh.publish("get_wechat_state")
+            if flag == 0 and wechat_state == 0 and self.fall_flag == 0:
+                if self.alarm_state == 1:
+                    # EventMesh.debug_log("self.alarm_timer_count:{}".format(self.alarm_timer_count))
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_ALARM_NEW"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    self.alarm_timer_count += 1
+                    if self.alarm_timer_count > 15: #120秒30s
+                        EventMesh.publish("STOP_ALARM_RING")
+            else:
+                self.alarm_timer_count = 0
+                self.alarm_timer1.stop()
+
+        def get_fall_down_state(self,event,msg):
+            return self.fall_flag
+
+        def sos_short_press(self,args,msg):
+            EventMesh.publish("interup_call_event")#如果在电话中强制挂断电话
+            EventMesh.publish("close_audio_play")#强制关闭音频文件播放
+            EventMesh.publish("STOP_FIND_WATCH")#停止查找设备
+            EventMesh.publish("STOP_ALARM_RING")#停止闹钟响铃
+            EventMesh.publish("play_cur_time_event")#播报当前时间
+            #播报当前时间
+
+        def recv_wechat_audio(self,event,str_data):#接收微聊语音播放
+            if self.call_state == 0 and self.fall_flag == 0:
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_WECHAT_RECV"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+
+
+
+        def audio_event_queue_thread(self):
+            while True:
+                data = self.audio_event_queue.get()
+                #EventMesh.debug_log("audio_event_queue:data = {}".format(data))
+                if data != None:
+                    try:
+                        data["func"](data["data"])
+                    except Exception as e:
+                        EventMesh.debug_log("audio_event_queue:ERROR:{}".format(e))
+                        usys.print_exception(e)
+        def publish_message_event_audio(self,event,msg):
+            self.audio_event_queue.put(msg)
+
+        def play_audio_file(self, *args, **kwargs):#播放音频文件
+            # EventMesh.debug_log("args",args)
+            EventMesh.publish("publish_message_event_audio",{"func":self.play_audio_file_do,"data":args[1]})  
+
+        def play_audio_file_do(self,data):#msg 拼接的路径文件
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            # EventMesh.debug_log("play_audio_file",data[0],data[1],open_power,power_off)#路径 str_data[1] 是否需要被打断
+            if open_power != None:
+                if open_power == 0:
+                    return
+            if power_off != None:
+                if power_off == 1:
+                    return
+            self.aud.montage_play('U:/static/audio.bin',1,data[1],data[0])
+            # EventMesh.debug_log("play_audio_file end",data[0],data[1])#路径 str_data[1] 是否需要被打断
+            
+
+
+
+
+        def powe_resatrt_down_fun(self, *args):#重启设备
+            EventMesh.publish("close_led_pin")
+            self.aud.stopPlayStream()
+            Power.powerRestart()
+
+        def power_down_fun(self, *args):
+            EventMesh.publish("close_led_pin")
+            self.aud.stopPlayStream()
+            Power.powerDown()
+
+
+
+        def close_audio_play(self, event, msg): #msg
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            if power_off != None:
+                if power_off == 1:
+                    return
+            self.aud.stopPlayStream()
+
+
+
+        def close_timer_all(self, event, msg): 
+            # EventMesh.debug_log("close_timer_all!!!!!!!!!!!!!!!!!!!")
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            if power_off != None:
+                if power_off == 1:
+                    return
+            self.aud.stopPlayStream()
+            
+            
+            self.timer.stop()
+            self.sos_timer2.stop()
+            self.sos_timer1.stop()
+            self.fall_flag = 0
+            self.fall_timer1.stop()
+            self.alarm_timer1.stop()
+        
+
+        def answer_call_event(self, event, msg): #
+            if self.call_state == 2:
+                sos_flag = EventMesh.publish("get_sos_flag")
+                if sos_flag == 1:
+                    self.call_state = 0
+                    EventMesh.publish("set_sos_flag",0)
+                    EventMesh.publish("set_sos_num",0)
+                    EventMesh.publish("set_hangup_mode",0)
+                EventMesh.publish("close_timer_all")#
+                voiceCall.callAnswer()
+
+        def set_call_state(self, event, msg): #
+            self.call_state = msg
+
+        def dialin_call_event(self, event, msg):
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            EventMesh.publish("close_timer_all")#
+            EventMesh.publish("close_wechat_btn_timer")#
+            EventMesh.publish("set_led_time_arg",[1,2,10*10,led_mode.FLASH_LIGHT_RED,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
+            self.timer.start(6000, 1, self.publish_call_event_cb)
+            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CALL_mp3"))
+            EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件
+            # EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+        
+        def call_timer_cb(self,data):
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            if self.call_state != 2:
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("close_timer_all")#
+                return
+            EventMesh.publish("set_led_time_arg",[1,2,10*10,led_mode.FLASH_LIGHT_RED,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
+            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CALL_mp3"))
+            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+        
+        def dial_out_call_center_cb(self, event, msg):#电话拨出去
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            # EventMesh.debug_log("dial_out_call_center_cb",msg)
+            if self.call_state == 0:
+                self.phone_num = ''
+                EventMesh.publish("close_timer_all")#
+                if msg == None:
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+                    # EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                else:
+                    self.phone_num = str(msg)
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SOS_ALERT"))
+                    EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件
+                    self.timer1.start(2000, 0, self.time_out_phone)
+                    
+        
+        def time_out_phone(self, msg):#电话拨出去
+            voiceCall.callStart(self.phone_num)
+
+        def sos_out_call_center_cb(self, event, msg):#sos电话呼叫中
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            self.sos_phone_num = ''
+            # EventMesh.debug_log("sos_out_call_center_cb",msg)
+            if self.call_state == 0:
+            
+                EventMesh.publish("close_timer_all")#
+                if msg == None:
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件
+                    # EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                else:
+                    sos_state =  EventMesh.publish("get_dev_state")
+
+                    tmp = 1 << 16
+                    sos_state = sos_state|tmp #第21位=1
+                    EventMesh.publish("set_dev_state",sos_state)
+
+                    EventMesh.publish(constants.EVENT.START_LOCATION,[constants.PROTOCOL.AL_SEND,sos_state]) #开始AL定位
+                    EventMesh.publish("close_timer_all")#
+                    self.sos_phone_num = msg
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SOS_ALERT"))
+                    EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件
+                    self.sos_timer1.start(2000, 0, self.sos_call_out_phone)
+                    self.sos_timer2.start(30000, 0, self.sos_time_out_phone)
+                    
+                    
+        def sos_time_out_phone(self, msg):#30s超时未打通或者信号不好则重新拨打
+            sos_flag = EventMesh.publish("get_sos_flag")
+            if sos_flag == 1:
+                if self.call_state == 0:
+                    EventMesh.publish("set_sos_info_call") 
+                    
+        def sos_call_out_phone(self, msg):#电话拨出去
+            voiceCall.callStart(self.sos_phone_num)
+        
+
+        def call_test_event(self, event, msg):
+            voiceCall.callStart(str("10086"))
+
+        def get_call_state(self, event, msg):
+            return self.call_state
+        
+        def interup_call_event(self, event, msg):#侧边金属按钮挂断来电
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 2 or flag == 3:#电话通话中 或者呼叫中挂断中断
+                self.call_state = 0
+                voiceCall.callEnd()
+        
+        def dialing_out_event(self, event, msg):#侧边金属按键挂断电话呼叫中
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 1:#电话呼叫中
+                self.call_state = 0
+                voiceCall.callEnd()
+                
+
+
+        def play_cur_step_event(self, event, msg): #msg 1 播放当前步数
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 0:#电话通话中 或者呼叫中挂断中断
+                if self.fall_flag == 0:
+                    EventMesh.publish("close_timer_all")#
+                step = EventMesh.publish("get_old_step_value")
+                EventMesh.debug_log("step",step)
+                self.setp_old = step
+                if step <= 10:#
+                    if step == 10:#十步
+                        str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    else:# 9步
+                        str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(step)),audio_buf.index("R_READ_STEP_4"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                elif step <= 100:#十 90
+                    if step == 100:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_1"),audio_buf.index("R_READ_STEP_2"),\
+                            audio_buf.index("R_READ_STEP_4"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    else:
+                        step_tmp = str(step)
+                        shi_value = int(step_tmp[0])#十
+                        ge_value = int(step_tmp[1])#个
+                        if shi_value > 1:#大于19步
+                            if ge_value == 0:#9十步 70十步
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
+                                audio_buf.index("R_READ_STEP_4"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            else:#9十2步
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
+                                audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        else:#十9步
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                            audio_buf.index("R_READ_STEP_4"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                elif step <= 1000:
+                    if step == 1000:#1千步
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_1"),\
+                        audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_STEP_4"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    else:
+                        step_tmp = str(step)#500
+                        bai_value = int(step_tmp[0])#百
+                        shi_value = int(step_tmp[1])#十
+                        ge_value = int(step_tmp[2])#个
+                        #101 110 1
+                        if shi_value > 0:#110
+                            if ge_value == 0:
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            else:
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
+                                audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        else:
+                            if shi_value == 0 and ge_value == 0:#500 600
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_STEP_4"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                pass
+                            else:
+
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                                audio_buf.index("R_READ_STEP_4"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            pass
+                elif step <= 10000:#千
+                    if step == 10000:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_1"),\
+                        audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_STEP_4"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        pass
+                    else:
+                        one_thousand = step//1000 #千
+                        one_hundred = step%1000 #百
+                        baishu = step%100 #十
+                        shishu = step%10 #个
+                        step_tmp = str(step)
+                        qian = int(step_tmp[0])#千
+                        bai_value = int(step_tmp[1])#百
+                        shi_value = int(step_tmp[2])#十
+                        ge_value = int(step_tmp[3])#个
+                        if bai_value <= 0:
+                            if shi_value <= 0:
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                                audio_buf.index("R_READ_STEP_4"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            else:
+                                if ge_value == 0:#1020 1040
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                    audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                    audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                else:#1021 
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                    audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                    audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        else:
+                            if shi_value <= 0:#1109
+                                if ge_value == 0:#1110
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                    audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),
+                                    audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_STEP_4"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                else:
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                    audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),
+                                    audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                                    audio_buf.index("R_READ_STEP_4"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            else:
+                                if ge_value == 0:#1110
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                    audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),
+                                    audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                    audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                else:#1117
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                    audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),
+                                    audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                    audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                        pass
+                elif step <= 100000:#万
+                            if step == 100000:#10万步
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3"),\
+                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_STEP_4"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            else:
+                                step_tmp = str(step)
+                                wang = int(step_tmp[0])#万
+                                qian = int(step_tmp[1])#千
+                                bai_value = int(step_tmp[2])#百
+                                shi_value = int(step_tmp[3])#十
+                                ge_value = int(step_tmp[4])#个
+                                if wang > 0 and qian > 0 and bai_value > 0:#11109 11111
+                                    if shi_value <= 0:#11109
+                                        if ge_value == 0:#11100
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:#11108
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                                            audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                            pass
+                                    else:
+                                        if ge_value == 0:#11110
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                            audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:#11116
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                            audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                            pass
+                                elif wang > 0 and qian > 0:#11000 11010 11012 11008
+                                    if shi_value > 0:
+                                        if ge_value == 0:#11010
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                            audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:#11016
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                            audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                    else:   
+                                        if ge_value == 0:#11000
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:#11004
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_{}".format(qian)),\
+                                            audio_buf.index("R_READ_STEP_1"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                                            audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                
+                                elif wang > 0:#1
+                                    if bai_value > 0:#百
+                                        if shi_value > 0:#10110
+                                            if ge_value == 0:#10150
+                                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
+                                                audio_buf.index("R_READ_STEP_4"))
+                                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                            else:
+                                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),audio_buf.index("R_READ_STEP_3"),\
+                                                audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:#10108
+                                            if ge_value == 0:#10100
+                                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_STEP_4"))
+                                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                            else:#10108
+                                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(bai_value)),\
+                                                audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                                                audio_buf.index("R_READ_STEP_4"))
+                                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                    else:
+                                        if shi_value > 0:
+                                            if ge_value == 0:#10090
+                                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                                audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_STEP_4"))
+                                                EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                            else:#10098
+                                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                                audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(shi_value)),\
+                                                audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),audio_buf.index("R_READ_STEP_4"))
+                                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(wang)),\
+                                            audio_buf.index("R_READ_STEP_0"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge_value)),\
+                                            audio_buf.index("R_READ_STEP_4"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+        def set_usb(self, event, msg): #msg 1 正在充电 2充电已移出 3 充电已满 0
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            power_off = EventMesh.publish("get_power_off_state")#获取开机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            flag = EventMesh.publish("get_call_state") 
+            get_hr_state = EventMesh.publish("get_hr_state")
+            get_spo2_state = EventMesh.publish("get_spo2_state")
+            get_bp_state  = EventMesh.publish("get_bp_state")
+            get_bg_state  = EventMesh.publish("get_bg_state")
+            get_temp_state  = EventMesh.publish("get_temp_state")
+            if msg == 1:
+                if get_hr_state != None and get_spo2_state != None and get_bp_state != None and get_bg_state != None and get_temp_state != None:
+                    if get_hr_state != 0:
+                        
+                        EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
+                        if get_hr_state == 1:
+                            EventMesh.publish("stop_led_timer")#设置参数
+                            EventMesh.publish("set_start_measure_time",0)#设置开始测量的时间戳时间
+
+                        EventMesh.debug_log("stop debug8")
+                        EventMesh.publish(constants.EVENT.STOP_HEART) 
+                    elif get_spo2_state != 0:
+                        EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
+                        if get_spo2_state == 1:
+                            EventMesh.publish("stop_led_timer")#设置参数
+                        EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+                        EventMesh.debug_log("stop debug13")
+                    elif get_bp_state != 0:
+                        EventMesh.publish("set_bp_state",0)#2代表后台进入测试
+                        if get_bp_state == 1:
+                            EventMesh.publish("stop_led_timer")#设置参数
+                        EventMesh.publish(constants.EVENT.STOP_HEART)
+                        EventMesh.debug_log("stop bp debug1")
+                    elif get_bg_state != 0:
+                        EventMesh.publish("set_bg_state",0)#2代表后台进入测试
+                        if get_bg_state == 1:#手动开灯关闭灯
+                            EventMesh.publish("stop_led_timer")#设置参数
+                        EventMesh.publish(constants.EVENT.STOP_HEART)
+                        EventMesh.debug_log("stop BG  debug14")
+                    if get_temp_state != 0:
+                        
+                        EventMesh.publish("set_temp_state",0)#2代表后台进入测试
+                        if get_temp_state == 1:
+                            EventMesh.publish("stop_led_timer")#设置参数
+                            EventMesh.publish("get_start_temp_measure_time",0)#
+                        EventMesh.publish(constants.EVENT.STOP_TEMP)
+                        EventMesh.debug_log("stop temp  debug14")
+            if msg == 1:
+                self.usbState = msg
+                str_buf = [1,1,10,led_mode.LONG_LIGHT_RED,4,2,led_mode.CHARGE_IN_MODE]
+                EventMesh.publish("set_led_time_arg",str_buf)#
+                if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                    EventMesh.publish("close_timer_all")#
+                    self.aud.stop()
+                    self.aud.play(1,1,'U:/static/R_CHARGE_IN.mp3')
+                    # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CHARGE_IN"))
+                    # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                EventMesh.debug_log("charge R_CHARGE_IN")
+                
+                
+            elif msg == 2:
+                self.usbState = msg
+                EventMesh.publish("stop_led_timer")#设置参数
+                # EventMesh.publish("set_led_time_arg",[0,1000,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.CHARGE_OUT_MODE])#測量成功
+                EventMesh.publish("set_led_time_arg",[1,1,0,led_mode.FLASH_LIGHT_GREEN,4,4,led_mode.CHARGE_OUT_MODE])#測量成功
+                EventMesh.debug_log("charge R_CHARGE_OUT")
+                if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                    EventMesh.publish("close_timer_all")#
+                    self.aud.stop()
+                    self.aud.play(1,1,'U:/static/R_CHARGE_OUT.mp3')
+                    # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CHARGE_OUT"))
+                    # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                
+
+
+            elif msg == 3:
+                self.usbState = msg
+                EventMesh.debug_log("charge full")
+                str_buf = [1,1,10,led_mode.LONG_LIGHT_GREEN,4,2,led_mode.CHARGE_FULL_MODE]
+                EventMesh.publish("set_led_time_arg",str_buf)#
+                # if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                #     EventMesh.publish("close_timer_all")#
+                #     str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_CHARGE_FULL"))
+                #     EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                
+
+
+        def get_usb(self, event, msg):
+            return self.usbState
+        
+
+
+        def app_factory(self,event,msg):
+            if msg != None:
+                number = str(msg)
+                sms.sendPduMsg(number, 'factory# send ok', 'UCS2')
+            ret = 0
+            ret = ql_fs.path_exists("/usr/static/storage_file")#
+            if ret == True:
+                ql_fs.rmdirs("/usr/static/storage_file")
+                ql_fs.mkdirs("/usr/static/storage_file")
+            if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:
+                EventMesh.publish(constants.PROTOCOL.DLT_SEND)
+        
+            self.factory_timer.start(6*1000,0,self.factory_cb)
+            pass
+        def factory_cb(self,*argc):
+            self.aud.stopPlayStream()
+            Power.powerRestart()
+
+        def app_restart(self,event,msg):#远程发短信重启
+            if msg != None:
+                number = str(msg)
+                sms.sendPduMsg(number, 'reset# send ok', 'UCS2')
+            self.restart_timer.start(3*1000,0,self.app_restart_cb)
+            pass
+        def app_restart_cb(self,*argc):
+            Power.powerRestart()
+
+        def open_power_on(self, event, msg): #msg 1 开机 2 关机 3 重启  4恢复出厂设置 5静音关机
+            EventMesh.publish("close_timer_all")#
+            if msg == 1:
+            
+                # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
+                # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                self.pwk_timer1.start(3000,0,self.power_on_audio_cb)
+                
+            elif msg == 2:
+                flag = EventMesh.publish("get_call_state") 
+                if flag != 0:#电话呼叫中
+                    self.call_state = 0
+                    voiceCall.callEnd()
+                step = EventMesh.publish("get_old_step_value")
+                # step1 = SC7A20().get_step()
+                # step1 = EventMesh.publish(constants.EVENT.GET_STEP)
+                # step2 = EventMesh.publish("get_storage_config","old_step")
+                self.read_data = EventMesh.publish("get_storage_data")
+                # EventMesh.publish("set_test_data5",[1,step,step1,step2])
+                if step != 0:
+                    EventMesh.publish("set_storage_config",["old_step",step])
+                date_tmp = utime.localtime()
+                time_tmp = utime.mktime(date_tmp)
+                # step3 = EventMesh.publish("get_old_step_value")
+                # step4 = SC7A20().get_step()
+                # step4 = EventMesh.publish(constants.EVENT.GET_STEP)
+                # step5 = EventMesh.publish("get_storage_config","old_step")
+                # EventMesh.publish("set_test_data6",[1,step3,step4,step5])
+                EventMesh.publish("set_storage_config",["old_time",time_tmp])#关机保存一个是时间
+                EventMesh.publish("set_storage_config",["power_state",0])
+                self.pwk_timer1.start(3000,0,self.power_off_audio_cb)
+            elif msg == 3:
+                flag = EventMesh.publish("get_call_state") 
+                if flag != 0:#电话呼叫中
+                    self.call_state = 0
+                    voiceCall.callEnd()
+                self.aud.play(1,0,'U:/static/R_POWER_OFF_1.mp3')
+                # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
+                # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                EventMesh.publish("stop_led_timer")#设置参数
+                self.power_off = 1
+                self.timer.start(8000,0,self.publish_resatrt_down_event_cb)
+                #EventMesh.publish("set_led_time_arg",[3000,4000,1,led_mode.LONG_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE])#
+            elif msg == 4:
+                flag = EventMesh.publish("get_call_state") 
+                if flag != 0:#电话呼叫中
+                    self.call_state = 0
+                    voiceCall.callEnd()
+                EventMesh.publish("stop_led_timer")#设置参数
+                self.power_off = 1
+                ret = 0
+                ret = ql_fs.path_exists("/usr/static/storage_file")#
+                if ret == True:
+                    ql_fs.rmdirs("/usr/static/storage_file")
+                    ql_fs.mkdirs("/usr/static/storage_file")
+                if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:
+                    EventMesh.publish(constants.PROTOCOL.DLT_SEND)
+                self.aud.stopPlayStream()
+                self.timer.start(6*1000,0,self.fun)
+            elif msg == 5:
+                flag = EventMesh.publish("get_call_state") 
+                if flag != 0:#电话呼叫中
+                    self.call_state = 0
+                    voiceCall.callEnd()
+                step = EventMesh.publish("get_old_step_value")
+                # step1 = SC7A20().get_step()
+                # step1 = EventMesh.publish(constants.EVENT.GET_STEP)
+                # step2 = EventMesh.publish("get_storage_config","old_step")
+                self.read_data = EventMesh.publish("get_storage_data")
+                # EventMesh.publish("set_test_data7",[1,step,step1,step2])
+                if step != 0:
+                    EventMesh.publish("set_storage_config",["old_step",step])
+
+                # step3 = EventMesh.publish("get_old_step_value")
+                # step4 = SC7A20().get_step()
+                # step4 = EventMesh.publish(constants.EVENT.GET_STEP)
+                # step5 = EventMesh.publish("get_storage_config","old_step")
+                # EventMesh.publish("set_test_data8",[1,step3,step4,step5])
+                date_tmp = utime.localtime()
+                time_tmp = utime.mktime(date_tmp)
+                EventMesh.publish("set_storage_config",["old_time",time_tmp])#关机保存一个是时间
+                EventMesh.publish("set_storage_config",["power_state",1])
+                self.pwk_timer1.start(3000,0,self.power_off_no_audio_cb)#不需要关机铃声
+
+        def fun(self,*argc):
+            self.aud.stopPlayStream()
+            Power.powerRestart()
+            
+
+        def power_on_cb(self, msg): #msg 开机标识
+            self.power_on_flag = 1
+        def clear_power_on_cb(self, msg): #msg 开机标识
+            self.power_on_flag = 0
+        
+        def power_on_audio_cb(self, msg):
+            self.power_on_flag = 1
+            # EventMesh.debug_log("power_on_audio_cb")
+            power_state = EventMesh.publish("get_storage_config","power_state")
+            if power_state == None:
+                power_state = 0
+            # print("power_state",power_state)
+            if power_state <= 0:
+                self.aud.play(1,1,'U:/static/R_POWER_OFF_1.mp3')
+            # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
+            # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+            EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_GREEN,6,3,led_mode.OTHER_MEASURE_MODE])#測量成功
+            # EventMesh.publish("set_led_time_arg",[1000,200,10,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+            self.power_on_flag = 0
+            self.pwk_timer2.start(5000,0,self.power_on_cb)
+
+        def get_power_on_state(self, event, msg):
+            return self.power_on_flag
+        
+        def power_off_audio_cb(self, msg):
+            # EventMesh.debug_log("power_off_audio_cb")
+            self.aud.play(1,0,'U:/static/R_POWER_OFF_1.mp3')
+            # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_POWER_OFF_1"))
+            # EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+            EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_RED,6,3,led_mode.POWER_OFF_MODE])#
+            self.power_off = 1
+            self.pwk_timer2.start(6000,0,self.publish_power_down_event_cb)
+        
+        def power_off_no_audio_cb(self, msg):
+            EventMesh.debug_log("power_off_no_audio_cb")
+            EventMesh.publish("set_led_time_arg",[1,2,6*8,led_mode.FLASH_LIGHT_RED,6,3,led_mode.POWER_OFF_MODE])#
+            self.power_off = 1
+            self.pwk_timer2.start(6000,0,self.publish_power_down_event_cb)
+
+        def set_power_off_cb(self, msg):
+            self.power_off = 1
+
+        def get_power_off_state(self, event, msg):
+            return self.power_off
+
+        def close_hr_sop2(self, event, msg): #msg 关闭心率血氧体温测试
+            get_hr_state = EventMesh.publish("get_hr_state")
+            get_spo2_state = EventMesh.publish("get_spo2_state")
+            get_temp_state = EventMesh.publish("get_temp_state")
+            get_bg_state = EventMesh.publish("get_bg_state")
+            get_bp_state = EventMesh.publish("get_bp_state")
+            if get_hr_state != None and get_spo2_state != None and get_temp_state != None and get_bg_state != None and get_bp_state != None:
+                if get_hr_state != 0:
+                    EventMesh.publish("set_hr_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
+                    EventMesh.debug_log("sstop hr")
+                    EventMesh.publish(constants.EVENT.STOP_HEART) 
+                if get_spo2_state != 0 :
+                    EventMesh.debug_log("stop spo2")
+                    EventMesh.publish("set_spo2_state",0)#2代表后台进入测试
+                    EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN)
+                if get_temp_state != 0:
+                    EventMesh.debug_log("stop temp")
+                    EventMesh.publish("set_temp_state",0)
+                    EventMesh.publish(constants.EVENT.STOP_TEMP)#手动体温测试
+                if  get_bg_state != 0:
+                    EventMesh.publish("set_bg_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
+                    EventMesh.debug_log("sstop bg")
+                    EventMesh.publish(constants.EVENT.STOP_HEART) 
+
+                if  get_bp_state != 0:
+                    EventMesh.publish("set_bp_state",0)#2代表后台进入测试,定时测心率 1ui界面测试洗心率 
+                    EventMesh.debug_log("sstop bp")
+                    EventMesh.publish(constants.EVENT.STOP_HEART) 
+
+        def set_manual_measure_mode(self, event, msg): #手动测试 1心率 2 血氧 3 体温
+            get_hr_state = EventMesh.publish("get_hr_state")
+            get_spo2_state = EventMesh.publish("get_spo2_state")
+            get_temp_state = EventMesh.publish("get_temp_state")
+            if msg == 1:
+                if get_hr_state != 1:#不是手动测试直接打断
+                    EventMesh.debug_log("set_manual_measure_mode",msg)
+                    EventMesh.publish("set_hr_state",1)
+                    EventMesh.publish("set_start_measure_time",1)#设置开始测量的时间戳时间
+                    EventMesh.publish(constants.EVENT.STOP_BLOOD_OXYGEN) #停止测试血氧
+                    EventMesh.publish("set_hr_blood_led",1)
+                    EventMesh.publish(constants.EVENT.START_HEART) #手动心率测试
+            elif msg == 2:
+                if get_hr_state == 0:
+                    if get_spo2_state != 1:
+                        EventMesh.debug_log("set_manual_measure_mode",msg)
+                        EventMesh.publish("set_spo2_state",1)
+                        EventMesh.publish("set_start_measure_time",1)#设置开始测量的时间戳时间
+                        EventMesh.publish("set_hr_blood_led",1)
+                        EventMesh.publish(constants.EVENT.START_BLOOD_OXYGEN) #手动血氧测试
+            elif msg == 3:
+                if get_temp_state != 1:
+                    EventMesh.debug_log("set_manual_measure_mode",msg)
+                    EventMesh.publish("set_temp_state",1)
+                    EventMesh.publish("set_start_temp_measure_time",1)#设置开始测量的时间戳时间
+                    EventMesh.publish("set_hr_blood_led",1)
+                    EventMesh.publish(constants.EVENT.START_TEMP)#手动体温测试
+            pass
+
+
+        def set_start_measure_time(self, event, msg): #手动测试 1心
+            self.hr_auto = msg
+            pass
+
+        def get_start_measure_time(self, event, msg): #手动测试 
+
+            return  self.hr_auto
+        
+        def set_start_temp_measure_time(self, event, msg): #
+            self.temp_auto = msg
+            pass
+
+        def get_start_temp_measure_time(self, event, msg): #
+            return self.temp_auto
+
+        def mearsure_cb(self, event, msg):
+            if msg == 1:
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+            elif msg == 2:
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) 
+            elif msg == 3:
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) 
+            elif msg == 4:
+                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data) 
+            
+            
+            
+        def play_temp_value(self, event, msg): #播放体温数值
+            flag = EventMesh.publish("get_call_state") 
+            if msg != None:
+                if flag == 0 and self.fall_flag == 0:
+                    EventMesh.publish("close_timer_all")#
+                    if msg > 0:
+                        # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
+                        # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        EventMesh.publish("set_hr_blood_led",2)#测量成功
+                        self.temp_value = msg
+                        # self.timer.start(2*1000,1,self.play_temp_fun)
+                        self.play_temp_fun(0)
+                    else:
+                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        EventMesh.publish("set_hr_blood_led",3)#测量异常
+                else:
+                    EventMesh.publish("set_hr_blood_led",3)#测量异常
+
+        def play_temp_fun(self,argc): #播放体温数值
+            data = self.temp_value
+            if data > 42:
+                data = 42
+            data_tmp = str(data)
+            if data_tmp.find(".") != -1:
+                temp_shi = int(data_tmp.split('.')[0])//10
+                temp_ge = int(data_tmp.split('.')[0])%10
+                dot_ge = int(data_tmp.split('.')[1][:1])
+                if temp_ge > 0:#37.0
+                    if dot_ge > 0:#37.5
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
+                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(temp_ge)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),\
+                        audio_buf.index("R_READ_TIME_{}".format(dot_ge)))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                    else:#37.0
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
+                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(temp_ge)))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                else:#30.0 30.6
+                    if dot_ge > 0:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
+                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(dot_ge)))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    else:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
+                        audio_buf.index("R_READ_STEP_3"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+            else:
+                temp_shi = int(data_tmp)//10
+                temp_ge = int(data_tmp)%10
+
+                if temp_ge > 0:#45
+                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
+                    audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(temp_ge)))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                else:
+                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_TEMP_TITLE"),audio_buf.index("R_READ_TIME_{}".format(temp_shi)),\
+                    audio_buf.index("R_READ_STEP_3"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            
+
+        def play_hr_value(self, event, msg): #播放心率数值
+            flag = EventMesh.publish("get_call_state") 
+            if msg != None:
+                if flag == 0 and self.fall_flag == 0:
+                    EventMesh.publish("close_timer_all")#
+                    if msg >= 50:
+                        # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
+                        # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        self.hr_value = msg
+                        EventMesh.publish("set_hr_blood_led",2)#测量成功
+                        # self.timer.start(2*1000,1,self.play_hr_fun)
+                        self.play_hr_fun(0)
+                    else:
+                        str_data ='mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        EventMesh.publish("set_hr_blood_led",3)#测量异常
+                else:
+                    EventMesh.publish("set_hr_blood_led",3)#测量异常
+
+        def play_hr_fun(self,argc):#播放心率测试值
+            flag = EventMesh.publish("get_call_state") 
+            
+            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                EventMesh.publish("close_timer_all")#
+                data = self.hr_value
+                if data > 220:
+                    data = 220
+                if data < 100:
+                    if data%10 == 0:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
+                        audio_buf.index("R_READ_STEP_3"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    else:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
+                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(data%10)))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                else: 
+                    shi = (data%100)//10 #210
+                    ge = (data%100)%10
+                    #210 234
+                    if shi > 0:
+                        if ge == 0:#210 230 120
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//100)),\
+                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi)),audio_buf.index("R_READ_STEP_3"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        else:
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//100)),\
+                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_{}".format(shi)),audio_buf.index("R_READ_STEP_3"),\
+                            audio_buf.index("R_READ_TIME_{}".format(ge)))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    else:
+                        if ge == 0:#200 100 209 108
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//100)),\
+                            audio_buf.index("R_READ_STEP_2"))
+                            EventMesh.publish("play_audio_file",str_data)#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        else:
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//100)),\
+                            audio_buf.index("R_READ_STEP_2"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(ge)))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+
+        def play_sugar_value(self, event, msg): #播放血糖数值
+            flag = EventMesh.publish("get_call_state") 
+            if msg != None:
+                if flag == 0 and self.fall_flag == 0:
+                    EventMesh.publish("close_timer_all")#
+                    if msg != 0:
+                        # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
+                        # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        EventMesh.publish("set_hr_blood_led",2)#测量成功
+                        # self.timer.start(2*1000,1,self.play_spo2_fun)
+                        self.play_sugar_fun(msg)
+                    else:
+                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        EventMesh.publish("set_hr_blood_led",3)#测量异常
+                else:
+                    EventMesh.publish("set_hr_blood_led",3)#测量异常
+
+        def play_sugar_fun(self,argc):#播放血糖测试值
+            flag = EventMesh.publish("get_call_state") 
+            
+            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                EventMesh.publish("close_timer_all")#
+                data = str(argc)
+                data_shi = 0
+                data_ge = 0
+                if data.find(".") != -1:
+                    data_shi = int(data.split(".")[0])
+                    data_ge = int(data.split(".")[1])
+                else:
+                    data_shi = int(data)
+                    data_ge = 0
+
+                if data_shi != 0 and data_ge != 0:
+                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_BLOOD_SUGAR"),audio_buf.index("R_READ_TIME_{}".format(data_shi)),\
+                    audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(data_ge)))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+            else:
+                EventMesh.publish("set_hr_blood_led",3)#测量异常
+
+
+
+        def play_spo2_value(self, event, msg): #播放血样数值
+            flag = EventMesh.publish("get_call_state") 
+            if msg != None:
+                if flag == 0 and self.fall_flag == 0:
+                    EventMesh.publish("close_timer_all")#
+                    if msg >= 85:
+                        # str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
+                        # EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        EventMesh.publish("set_hr_blood_led",2)#测量成功
+                        self.spo2_value = msg
+                        # self.timer.start(2*1000,1,self.play_spo2_fun)
+                        self.play_spo2_fun(0)
+                    else:
+                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        EventMesh.publish("set_hr_blood_led",3)#测量异常
+                else:
+                    EventMesh.publish("set_hr_blood_led",3)#测量异常
+
+        def play_spo2_fun(self,argc):#播放血氧测试值
+            flag = EventMesh.publish("get_call_state") 
+            
+            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                EventMesh.publish("close_timer_all")#
+                data = self.spo2_value
+                if data > 100:
+                    data = 100
+                if data == 100:
+                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
+                    audio_buf.index("R_READ_STEP_2"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                else:
+                    if data % 10 == 0:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
+                        audio_buf.index("R_READ_STEP_3"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        pass
+                    else:
+                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_SPO2_TITLE"),audio_buf.index("R_READ_TIME_{}".format(data//10)),\
+                        audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(data%10)))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+
+        def set_sim_mode(self, event, msg): #mode 1 蓝灯闪烁 可识别卡 但未联网 2 可绑定appsim正常 3 手表不识别卡或者未插卡
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                EventMesh.publish("close_timer_all")#
+                # EventMesh.publish("stop_led_timer")#设置参数
+                mode = 0
+                signal = EventMesh.publish("screen_get_sig")
+                if signal != None:
+                    if signal >= 0 and signal <= 31:#有卡 
+                        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网提示关机
+                            mode = 2
+                        else:
+                            mode = 1
+                    else:#未插卡
+                        mode = 3
+                if mode == 1:#白色灯
+                    EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_WHITE,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
+                    # EventMesh.publish("set_led_time_arg",[1000,400,1,led_mode.FLASH_LIGHT_WHITE,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SIM_FAILE"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    pass
+                elif mode == 2:#蓝灯色灯
+                    EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_GREEN,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
+                    # EventMesh.publish("set_led_time_arg",[1000,400,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SIM_CONNECT"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    pass
+                elif mode == 3:#红灯闪烁
+                    EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_RED,10,5,led_mode.OTHER_MEASURE_MODE])#測量成功
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SIM"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                pass
+            
+        def dial_sos_phone(self, event, msg): #拨打紧急求助电话
+            flag = EventMesh.publish("get_call_state")
+            if flag == 0:
+            
+                signal = EventMesh.publish("screen_get_sig")
+                if signal != None:
+                    if signal >= 0 and signal <= 31:#有卡 
+                        if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网提示关机
+                            sos_number = EventMesh.publish("get_dial_sos_number")
+                            if sos_number != None:
+                                if len(sos_number) != 0:
+                                    EventMesh.publish("close_timer_all")#
+                                    EventMesh.publish("set_sos_flag",1)
+                                        
+                                else:#未设置sos紧急求助号码
+                                    EventMesh.publish("close_timer_all")#
+                                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                    pass
+                        else:
+                            EventMesh.publish("close_timer_all")#
+                            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SIM_FAILE"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    else:#未插卡
+                        EventMesh.publish("close_timer_all")#
+                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SIM"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+        
+        def play_cur_time_event(self, event, msg): #播放当前时间
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                EventMesh.publish("close_timer_all")#
+                
+                data = RTC().datetime()
+                hour = data[4]
+                min = data[5]
+                # EventMesh.debug_log("hour",hour,min)
+                self.old_hour = hour
+                self.old_min = min
+                if self.old_hour == 0:
+                    if self.old_min <= 9:#00:09
+                        if self.old_min == 0:#0点整
+                            str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_0")\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        else:#0点09分
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_0")\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(self.old_min))\
+                            ,audio_buf.index("R_READ_TIME_MIN"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            pass
+
+                    else:
+                        if self.old_min % 10 == 0:#0点2十分 0点3十分
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_0")\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min // 10))\
+                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            pass
+                        else:#0点2十8分
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_0")\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min // 10))\
+                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10)),audio_buf.index("R_READ_TIME_MIN"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            pass
+
+                elif self.old_hour <= 9:#8:09 9:20 9:45
+                    if self.old_min <= 9:#9点09分
+                        if self.old_min <= 0:
+                            str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            pass
+                        else:
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(self.old_min))\
+                            ,audio_buf.index("R_READ_TIME_MIN"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                    else:
+                        if self.old_min % 10 == 0:#9点2十分 9点4十分
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min //10))\
+                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        else:#9点2十4分
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(self.old_hour))\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min //10))\
+                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10)),audio_buf.index("R_READ_TIME_MIN"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+
+                else:#12:0
+                    if self.old_min == 0:#12:00 13:00 15:00 20 10 11 12 13 14 15
+                        self.play_count+=1
+                        hour_shi = self.old_hour//10
+                        hour_ge = self.old_hour%10
+                        if self.old_hour == 10:#十点整
+                            str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                        elif self.old_hour == 20:
+                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                        else:
+                            if hour_shi <= 1:#十3点整
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                ,audio_buf.index("R_READ_TIME_{}".format(hour_ge)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                            else:
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                    else:
+                        if self.old_hour == 10:#10:09 10:10
+                            if self.old_min <= 9:
+                                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0")\
+                                ,audio_buf.index("R_READ_TIME_{}".format(self.old_min)),audio_buf.index("R_READ_TIME_MIN"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            else:
+                                if self.old_min % 10 == 0:#十点2十分
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                    ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min//10))\
+                                    ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                else:#十点2十1分
+                                    str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                    ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(self.old_min//10))\
+                                    ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(self.old_min%10))\
+                                    ,audio_buf.index("R_READ_TIME_MIN"))
+                                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                        else:
+                            if self.old_hour < 20:#19:00
+                                if self.old_min <= 9:#19:09 
+                                    if self.old_min == 0:
+                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        pass
+                                    else:
+                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")\
+                                        ,audio_buf.index("R_READ_TIME_0"),audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10))\
+                                        ,audio_buf.index("R_READ_TIME_MIN"))
+                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                    
+                                else:#19:18 19:40 19:56
+                                    if self.old_min % 10 == 0:#十9点2十分 十9点3十分
+                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_min // 10)),audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
+                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                    else:#十9点2十1分
+                                        str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_STEP_3")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_hour % 10)),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_min // 10)),audio_buf.index("R_READ_STEP_3")\
+                                        ,audio_buf.index("R_READ_TIME_{}".format(self.old_min % 10)),audio_buf.index("R_READ_TIME_MIN"))
+                                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                            else:
+                                hour_shi = self.old_hour//10
+                                hour_ge = self.old_hour%10
+
+                                min_shi = self.old_min//10
+                                min_ge = self.old_min%10
+
+                                #20:08 20:18  20:20
+                                if hour_ge == 0:
+                                    if self.old_min <= 9:
+                                        if self.old_min == 0:
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                            pass
+                                        else:
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0")\
+                                            ,audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                                    else:
+                                        if min_ge == 0:#2十点2十分
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(min_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:#2十点2十1分
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(min_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+                                else:#21:08 21:18
+                                    if self.old_min <= 9:
+                                        if self.old_min == 0:
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\
+                                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                            pass
+                                        else:
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\
+                                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_0")\
+                                            ,audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                    else:
+                                        if min_ge == 0:#2十3点3十分
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\
+                                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(min_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_MIN"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                                        else:#2十3点3十1分
+                                            str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(hour_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(hour_ge))\
+                                            ,audio_buf.index("R_TSENSOR_RESULT_VALUE_DOT"),audio_buf.index("R_READ_TIME_{}".format(min_shi))\
+                                            ,audio_buf.index("R_READ_STEP_3"),audio_buf.index("R_READ_TIME_{}".format(min_ge)),audio_buf.index("R_READ_TIME_MIN"))
+                                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+
+        def play_timer_cb_1(self,*agrs):
+            return
+
+        def play_center_phone(self, event, msg): #msg
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许设备再次拨出
+            if flag == 0 and self.fall_flag == 0:
+                EventMesh.publish("close_timer_all")#
+            
+                center_dial = EventMesh.publish("get_storage_config","center_dial")
+                if center_dial != None:
+                    if len(center_dial) > 0:
+                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_SOS_ALERT"))
+                        EventMesh.publish("play_audio_file",[str_data,0])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                        voiceCall.callStart(str(center_dial))
+                        
+                    
+                else:#未设置号码
+                    # EventMesh.debug_log("play_center_phone")
+                    str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_NO_SET_SOS_DIAL"))
+                    EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    pass
+        def center_phone_cb(self,*argc): #msg
+            pass
+
+
+
+
+        def play_imei_event(self, event, msg): #msg
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                EventMesh.publish("close_timer_all")#
+                imei = EventMesh.publish(constants.EVENT.GET_IMEI)
+                EventMesh.debug_log(imei)
+                str_data = 'mp3files={}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3+{}.mp3'.format(audio_buf.index("R_READ_TIME_{}".format(imei[0]))\
+                ,audio_buf.index("R_READ_TIME_{}".format(imei[1])),audio_buf.index("R_READ_TIME_{}".format(imei[2])),audio_buf.index("R_READ_TIME_{}".format(imei[3])),\
+                audio_buf.index("R_READ_TIME_{}".format(imei[4])),audio_buf.index("R_READ_TIME_{}".format(imei[5])),audio_buf.index("R_READ_TIME_{}".format(imei[6])),audio_buf.index("R_READ_TIME_{}".format(imei[7])),\
+                audio_buf.index("R_READ_TIME_{}".format(imei[8])),audio_buf.index("R_READ_TIME_{}".format(imei[9])),audio_buf.index("R_READ_TIME_{}".format(imei[10])),audio_buf.index("R_READ_TIME_{}".format(imei[11])),\
+                audio_buf.index("R_READ_TIME_{}".format(imei[12])),audio_buf.index("R_READ_TIME_{}".format(imei[13])),audio_buf.index("R_READ_TIME_{}".format(imei[14])))
+                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+
+
+        def get_unread_wechat_state(self,event, msg): 
+
+            return self.set_unread_wechat
+        
+        def set_unread_wechat_state(self, event, msg): 
+            self.set_unread_wechat = msg
+
+        def get_wechat_data(self,event, msg): 
+
+            return [self.MXA_MSG ,self.wechat_recode_list]
+        
+        def set_wechat_data(self, event, msg): 
+            # EventMesh.debug_log("set_wechat_data1 ",msg,self.wechat_num)
+            self.MXA_MSG = msg[0]
+            self.wechat_recode_list = msg[1]
+            self.wechat_num = self.wechat_recode_list["num"]
+            with open("/usr/static/storage_file/wechat_record.json","w",encoding="utf-8") as fd:
+                ujson.dump(self.wechat_recode_list,fd)
+                #写编号
+            # EventMesh.debug_log("set_wechat_data2:{} ".format(self.wechat_num))
+        
+
+        def get_wechat_time(self, event, msg):
+            return  [self.press_btn,self.timeSecond]
+
+        def start_wechat_record(self, event, msg): #开始录音相关配置
+            if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音
+                flag = EventMesh.publish("get_call_state") 
+                if flag == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                    if self.press_btn == 0:
+                        self.press_btn = 1
+                        audio_state = EventMesh.publish("get_audio_state")
+                        if audio_state == 1:
+                            self.aud.stop()
+                        EventMesh.publish("close_timer_all")#
+                        EventMesh.publish("set_led_time_arg",[1,1,160,led_mode.LONG_LIGHT_GREEN,4,2,led_mode.WECHAT_LED_MODE])#測量成功
+                        # EventMesh.publish("set_led_time_arg",[1000,1000,1,led_mode.LONG_LIGHT_GREEN,led_mode.OPEN_LONG_LIGHT_MODE,led_mode.WECHAT_LED_MODE])#測量成功
+                    
+                        date_tmp = utime.localtime()
+                        time_tmp = utime.mktime(date_tmp)
+                        self.timeSecond = time_tmp#保存按下的时间长s
+                        self.aud.setVolume(11)#设置音量最大
+                        
+                        EventMesh.debug_log("talking1.0")
+                        # if self.wechat_num >= self.MXA_MSG:
+                        #     self.wechat_num = 0 
+                        # self.wechat_num += 1
+                        # self.wechat_show = self.wechat_num
+                        # self.record_test.start("/usr/static/storage_file/{}.amr".format(self.wechat_show),16) 
+                        self.record_test.start("/usr/static/storage_file/wechat.amr",16) 
+                
+            else:
+                self.timeSecond = 0
+                self.press_btn = 0
+        def get_wechat_state(self, event, msg):
+            return self.press_btn
+
+        def send_wechat_record(self, event, msg): #发送录音文件
+            if self.press_btn == 1:
+                self.press_btn = 0
+                self.record_test.stop() #停止錄音
+                EventMesh.publish("stop_led_timer")#关闭灯
+                EventMesh.publish("set_led_time_arg",[1,1,0,led_mode.FLASH_LIGHT_GREEN,4,2,led_mode.OTHER_MEASURE_MODE])#測量成功
+                # EventMesh.publish("set_led_time_arg",[0,1000,1,led_mode.LONG_LIGHT_GREEN,led_mode.OPEN_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#測量成功
+                self.countdown_old = 0
+
+                date_tmp = utime.localtime()
+                time_tmp = utime.mktime(date_tmp)
+
+                self.countdown_old = msg
+                if self.countdown_old >= 15:
+                    self.countdown_old = 15
+                if self.countdown_old <= 0:
+                    #录音时间太短
+                    return
+                else:
+                    # self.wechat_recode_list["%02d"%(self.wechat_show)] = "read:0"
+                    # self.wechat_recode_list["num"] = self.wechat_show
+                    EventMesh.debug_log("self.wechat_recode_list :{}".format(self.wechat_recode_list))
+
+                    # with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
+                    #     ujson.dump(self.wechat_recode_list,fd)
+                    EventMesh.debug_log("send wechat data!!!!!!!!!!!!!!!!!!!!!")
+
+                    check_txt = ql_fs.path_exists("/usr/static/storage_file/wechat.amr")
+                    if check_txt == True :
+                        path = "/usr/static/storage_file/wechat.amr"
+                        with open(path,"rb") as fd:
+                            buf = bytearray(ql_fs.path_getsize(path))
+                            fd.readinto(buf)
+                            senddata = [self.countdown_old,buf]
+                            EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata)
+
+                    # with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
+                    #     ujson.dump(self.wechat_recode_list,fd)
+                    # EventMesh.debug_log("send wechat data!!!!!!!!!!!!!!!!!!!!!")
+
+                    # check_txt = ql_fs.path_exists("/usr/static/storage_file/{}.amr".format(self.wechat_show))
+                    # if check_txt == True :
+                    #     path = "/usr/static/storage_file/{}.amr".format(self.wechat_show)
+                    #     with open(path,"rb") as fd:
+                    #         buf = bytearray(ql_fs.path_getsize(path))
+                    #         fd.readinto(buf)
+                    #         senddata = [self.countdown_old,buf]
+                    #         EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata)
+
+
+        def play_wechat_last_amr(self, event, msg):#播放微聊最后一条语音文件
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 0:#电话通话中 或者呼叫中挂断中断
+                EventMesh.publish("close_timer_all")#
+                if self.wechat_recode_list != None:
+                    num = 0
+                    play_state = 0
+                    if len(self.wechat_recode_list) > 1:
+                        num = int(self.wechat_recode_list["num"])
+                        #EventMesh.debug_log("self.wechat_recode_list1:{}".format(self.wechat_recode_list))
+                        if num != 0:
+                            last_num = str("%02d"%(num))
+                            last_tmp = self.wechat_recode_list[last_num]
+                            last_read = int(last_tmp.split(":")[1])
+                            if last_read == 1:#如果最后一条没有读则读最新的一条
+                                self.wechat_recode_list[last_num] = "read:0"
+                                self.wechat_recode_list["num"] = num 
+                                with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
+                                    ujson.dump(self.wechat_recode_list,fd)
+                            else:
+                                sotr_new = {}
+                                sotr_new = sorted(self.wechat_recode_list.keys(), reverse=True)#降序排序
+                                # EventMesh.debug_log("sotr_new:{}".format(sotr_new))
+                                for i in range(len(self.wechat_recode_list)-1):#1 01 02 
+                                    key = sotr_new[i+1]
+                                    num_id = int(key)
+                                    #EventMesh.debug_log("key:{} num_id:{}".format(key,num_id))
+                                    if key in self.wechat_recode_list:#
+                                        str_tmp = self.wechat_recode_list[key]
+                                        read = int(str_tmp.split(":")[1])
+                                        if read != 0:#未读是按一下播放下一条同时删除
+                                            check_amr = ql_fs.path_exists("/usr/static/storage_file/{}.amr".format(num_id))#还要检测这个文件是否存在
+                                            if check_amr == True:
+                                                self.wechat_recode_list[key] = "read:0"
+                                                self.wechat_recode_list["num"] = num 
+                                                EventMesh.debug_log("self.wechat_recode_list2:{} num_id:{} num:{}".format(self.wechat_recode_list,num_id,num))
+                                                # self.aud.play(1, 1, '/usr/static/storage_file/{}.amr'.format(num))  #文件名前面要加上路径
+                                                play_state = 1
+                                                with open("/usr/static/storage_file/wechat_record.json","w+",encoding="utf-8") as fd:
+                                                    ujson.dump(self.wechat_recode_list,fd)
+                                                break
+                                            else:
+                                                continue
+                                        else:
+                                            continue
+                                    else:
+                                        continue
+                            #EventMesh.debug_log("play_state:{}".format(play_state))
+                            # if play_state == 0:#
+                            check_amr = ql_fs.path_exists("/usr/static/storage_file/{}.amr".format(num))#还要检测这个文件是否存在
+                            if check_amr == True:
+                                self.aud.play(1, 1, '/usr/static/storage_file/{}.amr'.format(num))  #文件名前面要加上路径
+
+
+        def play_unread_wechat_infor(self,event,msg):#未读微聊语音
+            flag = EventMesh.publish("get_call_state") 
+            if flag == 0 and self.press_btn == 0 and self.fall_flag == 0:#电话通话中 或者呼叫中挂断中断
+                if self.wechat_recode_list != None:
+                    num = 0
+                    play_state = 0
+                    if len(self.wechat_recode_list) > 1:
+                        num = int(self.wechat_recode_list["num"])
+                        if num != 0:
+                            for i in range(len(self.wechat_recode_list)-1):#1 01 02 
+                                key = "%02d"%(i+1)
+                                if key in self.wechat_recode_list:#
+                                    str_tmp = self.wechat_recode_list[key]
+                                    read = int(str_tmp.split(":")[1])
+                                    if read == 1:#未读是按一下播放下一条同时删除
+                                        play_state = 1
+                                    else:
+                                        continue
+                                else:
+                                    continue
+                            if play_state == 1:#设置未读语音状态
+                                EventMesh.publish("set_unread_wechat_state",1)
+                            else:
+                                EventMesh.publish("set_unread_wechat_state",0)
+                                self.updateTime = 0
+
+                state = EventMesh.publish("get_unread_wechat_state")#
+                date_tmp = utime.localtime()
+                time_tmp = utime.mktime(date_tmp)
+                if state != None:
+                    if state == 1:
+                        EventMesh.publish("set_led_time_arg",[1,2,8,led_mode.FLASH_LIGHT_GREEN,8,4,led_mode.OTHER_MEASURE_MODE])#測量成功
+                        # EventMesh.publish("set_led_time_arg",[1000,400,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+                        if self.updateTime == 0:
+                            self.updateTime = time_tmp
+                        if self.updateTime != 0:
+                            if time_tmp - self.updateTime >= 10*60:
+                                self.updateTime = time_tmp
+                                #播放音频文件
+                                EventMesh.publish("close_timer_all")
+                                str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_UNREAD_WECHAT"))
+                                EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                    else:
+                        self.updateTime = 0
+            
+
+
+
+    class BtnDevice(Abstract):
+
+        def __init__(self, tp=None):
+            self.pk = PowerKey()
+            self.__pwk_timer = osTimer()
+            self.aud = audio.Audio(0)
+            self.aud.set_pa(Pin.GPIO29)
+            self.aud.setVolume(11)
+            # self.keypad = machine.KeyPad(4, 4)
+            self.__PowerDownTimeOut = 3000
+            self.__tp = tp
+            self.pwk_press = 0
+            self.pwk_count = 0
+            self.GPIO26_status = 1#默认是低电平
+            self.powerKey_status = 0
+            self.sosKey = 0
+            self.wechatKey = 0
+            self.sosKey_status = 1#默认是低电平
+            self.WeChatKey_status = 1#默认是低电平
+
+            self.wechatKey_timer = osTimer()
+            self.wechatKey_count = 0
+            self.wechatKey_press = 0 
+
+            self.sosKey_timer = osTimer()
+            self.sosKey_count = 0
+            self.sosKey_press = 0 
+
+            self.wechatKey_press_count = 0
+
+            self.timeSeconOld = 0
+            self.wechat_state = 1 #按下录音时的状态
+
+            
+            self.sosKey_press_count = 0
+
+
+            self.pwk_key = 0
+            self.GPIO26_status = 1
+
+            self.extint_22 = 0
+            self.GPIO22_status = 1
+
+            self.extint_17= 0
+            self.KeyCall2_status = 1
+
+            self.extint_19= 0
+            self.KeyCall1_status = 1
+
+            self.Keycall1_timer = osTimer()
+            self.Keycall1_count = 0
+            self.Keycall1_press = 0 
+            self.Keycall1_press_count = 0
+
+            self.Keycall2_timer = osTimer()
+            self.Keycall2_count = 0
+            self.Keycall2_press = 0 
+            self.Keycall2_press_count = 0
+
+            
+
+            self.pwkey_timer = osTimer()
+            self.pwKey_press_count = 0
+            self.pwkey_count = 0
+            self.pwkey_press = 0
+            self.led_state = 0
+            self.hsensorTest_timer = osTimer()
+            self.btnInfo_queue = Queue()
+            _thread.stack_size(10*1024+192)
+            _thread.start_new_thread(self.btnInfo_queue_thread, ())
+            _thread.stack_size(8*1024)
+            
+            EventMesh.subscribe("publish_message_event_btnInfo",self.publish_message_event_btnInfo)
+
+            EventMesh.subscribe("close_wechat_btn_timer", self.close_wechat_btn_timer)#来电强制关闭微聊语音
+
+        def btnInfo_queue_thread(self):
+            while True:
+                data = self.btnInfo_queue.get()
+                #EventMesh.debug_log("Info_queue:data = {}".format(data))
+                if data != None:
+                    try:
+                        data["func"](data["data"])
+                    except Exception as e:
+                        EventMesh.debug_log("btnInfo_queue:ERROR:{}".format(e))
+                        usys.print_exception(e)
+        def publish_message_event_btnInfo(self,event,msg):
+            self.btnInfo_queue.put(msg)
+            EventMesh.publish(constants.EVENT.SYSTEM_UP)#唤醒休眠
+            
+        def publish_wechat_btn_event_cb(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.wechatKey_press_cb,"data":0})  
+
+        def publish_soskey_btn_event_cb(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.sosKey_press_cb,"data":0})  
+
+        def publish_call1key_btn_event_cb(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.call1Key_press_cb,"data":0})  
+        
+        def publish_call2key_btn_event_cb(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.call2Key_press_cb,"data":0})  
+
+        def publish_pwkKey_btn_event_cb(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.pwKey_press_cb,"data":0})  
+
+    
+
+        def post_processor_after_instantiation(self):
+            # self.keypad.init()
+            # self.keypad.set_callback(self.key_callback)
+        
+            self.pk.powerKeyEventRegister(self.powerKey_callback)
+            
+            self.pwk_key26 = ExtInt(ExtInt.GPIO26, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_DISABLE, self.pwk_extint_cb)
+            self.pwk_key26.enable() 
+
+            self.sosKey = ExtInt(ExtInt.GPIO22,ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.sosKey_extint_cb)#S0S键
+            self.sosKey.enable()
+
+            self.extint_19 = ExtInt(ExtInt.GPIO19,ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.key19_extint_cb)
+            self.extint_19.enable()
+
+            self.extint_17 = ExtInt(ExtInt.GPIO17,ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.key17_extint_cb)
+            self.extint_17.enable()
+
+            # self.sosKey = ExtInt(ExtInt.GPIO22, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.sosKey_extint_cb)
+            # self.sosKey.enable()
+
+            self.wechatKey = ExtInt(ExtInt.GPIO6, ExtInt.IRQ_RISING_FALLING, ExtInt.PULL_PU, self.wechatKey_extint_cb)
+            self.wechatKey.enable()
+
+            # key19 = Pin(Pin.GPIO19, Pin.OUT, Pin.PULL_PU, 0)
+        # def key22_extint_cb(self,args):#SOS键
+        #     self.GPIO22_status = self.extint_22.read_level()
+        #     EventMesh.debug_log('### key22_extint_cb  {} self.GPIO22_status :{}'.format(args,self.GPIO22_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
+
+        def key17_extint_cb(self,args):#call 2
+            
+            power_off = EventMesh.publish("get_power_off_state")#获取关机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            if fall_down != None:
+                if fall_down != 0 or flag == 2:
+                    return
+            self.KeyCall2_status = int(args[1]) 
+            if self.KeyCall2_status == 0:
+                self.KeyCall2_status = 1
+            else:
+                self.KeyCall2_status = 0
+                pass
+            EventMesh.debug_log('### key17_extint_cb  {} self.KeyCall2_status :{}'.format(args,self.KeyCall2_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
+            if self.WeChatKey_status != 0 and self.GPIO26_status != 0 and self.KeyCall1_status != 0 and self.sosKey_status != 0:
+                if self.KeyCall2_status == 0:#按下
+                    if self.Keycall2_press == 0 :
+                        self.wechatKey_timer.stop()
+                        self.pwkey_timer.stop()
+                        self.sosKey_timer.stop()
+                        self.Keycall2_timer.stop()
+                        self.Keycall1_timer.stop()
+
+                        self.wechatKey_press_count = 0
+                        self.wechatKey_press = 0
+
+                        self.pwKey_press_count = 0
+                        self.pwkey_press = 0
+                    
+                        self.sosKey_long_press = 0
+                        self.sosKey_count = 0
+
+                        self.Keycall1_count = 0
+                        self.Keycall1_press = 0
+                        self.Keycall1_press_count = 0
+
+                        self.Keycall2_count = 0
+                        self.Keycall2_press = 1
+                        self.Keycall2_timer.start(100, 1, self.publish_call2key_btn_event_cb)
+
+        def call2Key_press_cb(self, data):
+            '''KEY2:联动屏幕右下角或返回键长按关机'''
+            if self.Keycall2_press == 1 :
+                if self.KeyCall2_status == 1:#松开
+                    self.Keycall2_count += 1
+                    if self.Keycall2_count >= 1: #防抖100ms
+                        self.Keycall2_timer.stop()
+                        self.Keycall2_count = 0
+                        self.Keycall2_press = 0
+                        self.Keycall2_press_count+=1
+                        self.Keycall2_timer.start(500, 0, self.publish_call2Key_timeout_cb_do)#松手超时1s判断
+
+        def publish_call2Key_timeout_cb_do(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.call2Key_timeout_cb,"data":0}) 
+        
+        def call2Key_timeout_cb(self, data):#
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+            if self.Keycall2_press_count >= 1:#短按十次解绑app
+                fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+                if fall_down != None:
+                    if fall_down != 0 or flag != 0:#在打电话或者跌倒报警提醒中不允许按键触发
+                        self.Keycall2_press_count = 0
+                        return
+            if self.Keycall2_press_count == 1:#拨打通讯录号码二
+                self.Keycall2_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("call_phonebook_two_call")
+            self.Keycall2_press_count = 0
+
+
+        def key19_extint_cb(self,args):#call 1
+            
+            power_off = EventMesh.publish("get_power_off_state")#获取关机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            if fall_down != None:
+                if fall_down != 0 or flag == 2:
+                    return
+            # self.KeyCall1_status = self.extint_19.read_level()
+            # self.KeyCall1_status =  ~args[1]
+            self.KeyCall1_status = int(args[1])
+            if self.KeyCall1_status == 0:
+                self.KeyCall1_status = 1
+            else:
+                self.KeyCall1_status = 0
+                pass
+            EventMesh.debug_log('### key19_extint_cb  {} self.KeyCall1_status :{}'.format(args,self.KeyCall1_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
+            if self.WeChatKey_status != 0 and self.GPIO26_status != 0 and self.KeyCall2_status != 0 and self.sosKey_status != 0:
+                if self.KeyCall1_status == 0:#按下
+                    if self.Keycall1_press == 0 :
+                        self.wechatKey_timer.stop()
+                        self.pwkey_timer.stop()
+                        self.sosKey_timer.stop()
+                        self.Keycall2_timer.stop()
+                        self.Keycall1_timer.stop()
+
+                        self.wechatKey_press_count = 0
+                        self.wechatKey_press = 0
+
+                        self.pwKey_press_count = 0
+                        self.pwkey_press = 0
+                    
+                        self.sosKey_long_press = 0
+                        self.sosKey_count = 0
+            
+                        self.Keycall2_count = 0
+                        self.Keycall2_press = 0 
+                        self.Keycall2_press_count = 0
+
+                        self.Keycall1_count = 0
+                        self.Keycall1_press = 1
+                        self.Keycall1_timer.start(100, 1, self.publish_call1key_btn_event_cb)
+
+        def call1Key_press_cb(self, data):
+            '''KEY2:联动屏幕右下角或返回键长按关机'''
+            if self.Keycall1_press == 1 :
+                if self.KeyCall1_status == 1:#松开
+                    self.Keycall1_count += 1
+                    if self.Keycall1_count >= 1: #防抖100ms
+                        self.Keycall1_timer.stop()
+                        self.Keycall1_count = 0
+                        self.Keycall1_press = 0
+                        self.Keycall1_press_count+=1
+                        self.Keycall1_timer.start(500, 0, self.publish_call1Key_timeout_cb_do)#松手超时1s判断
+
+        def publish_call1Key_timeout_cb_do(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.call1Key_timeout_cb,"data":0}) 
+        
+        def call1Key_timeout_cb(self, data):#
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+            if self.Keycall1_press_count >= 1:#短按十次解绑app
+                if fall_down != None:
+                    if fall_down != 0 or flag != 0:#在打电话或者跌倒报警提醒中不允许按键触发
+                        self.Keycall1_press_count = 0
+                        return
+            if self.Keycall1_press_count == 1:#拨打通讯录号码一
+                self.Keycall1_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("call_phonebook_one_call")
+            self.Keycall1_press_count = 0
+
+
+
+        def pwk_extint_cb(self,args):#侧边按键
+            # self.GPIO26_status = self.pwk_key26.read_level()
+        
+            power_off = EventMesh.publish("get_power_off_state")#获取关机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+            if fall_down != None:
+                if fall_down != 0 or flag == 2:
+                    return
+            self.GPIO26_status = int(args[1])
+            if self.GPIO26_status == 0:
+                self.GPIO26_status = 1
+            else:
+                self.GPIO26_status = 0
+                pass
+            # self.GPIO26_status = ~args[1]
+            EventMesh.debug_log('### GPIO26_status  {} self.GPIO26_status :{}'.format(args,self.GPIO26_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
+            if self.WeChatKey_status != 0 and self.KeyCall1_status != 0 and self.sosKey_status != 0 and self.KeyCall2_status != 0:
+            # if self.sosKey_status != 0 and self.WeChatKey_status != 0:
+                if self.GPIO26_status == 0:#按下
+                    if self.pwkey_press == 0 :
+                        self.aud.stop()  #播放声音 
+                        self.wechatKey_timer.stop()
+                        self.pwkey_timer.stop()
+                        self.sosKey_timer.stop()
+                        self.Keycall2_timer.stop()
+                        self.Keycall1_timer.stop()
+
+                        self.wechatKey_press_count = 0
+                        self.sosKey_press_count = 0
+                        self.sosKey_press = 0
+                        self.wechatKey_press = 0
+
+                        self.pwkey_press = 1
+                        self.pwkey_count = 0
+
+                        self.Keycall1_count = 0
+                        self.Keycall1_press = 0 
+                        self.Keycall1_press_count = 0
+                        
+                        self.Keycall2_count = 0
+                        self.Keycall2_press = 0 
+                        self.Keycall2_press_count = 0
+
+                        self.pwkey_timer.start(100, 1, self.publish_pwkKey_btn_event_cb)
+                        # EventMesh.debug_log("key22_extint_cb:self.key22_timer.start!!!!\n")
+
+
+
+
+        def pwKey_press_cb(self, data):
+            '''KEY2:联动屏幕右下角或返回键长按关机'''
+            if self.pwkey_press == 1 :
+                self.pwkey_count += 1
+                if self.pwkey_count > 5:
+                    if self.led_state == 0:
+                        self.led_state = 1
+                        EventMesh.publish("set_led_time_arg",[1,1,330,led_mode.LONG_LIGHT_GREEN,2,1,led_mode.OTHER_MEASURE_MODE])#測量成功
+                    if self.pwkey_count >= 10*10:
+                        EventMesh.publish("stop_led_timer")#设置参数
+                        self.pwkey_timer.stop()
+                        self.pwkey_count = 0
+                        self.pwkey_press = 0
+                        self.pwKey_press_count = 0
+                        self.led_state = 0
+                        # if EventMesh.publish("get_sim_Status") != 1:
+                        #     EventMesh.publish("open_power_on", 2)#
+                        # else:
+                        EventMesh.publish("open_power_on", 3)#
+                        return
+                    
+                    if self.pwkey_count >= 3*10 :
+                        if EventMesh.publish("get_sim_Status") != 1:
+                            EventMesh.debug_log("长3秒关机")
+                            EventMesh.publish("stop_led_timer")#设置参数
+                            self.pwkey_timer.stop()
+                            self.pwkey_count = 0
+                            self.pwkey_press = 0
+                            self.pwKey_press_count = 0
+                            self.led_state = 0
+                            EventMesh.publish("open_power_on", 2)#
+                            return
+                            
+                    
+                if self.GPIO26_status == 1:#松开
+                    if self.pwkey_count >= 1: #防抖100ms
+                        # EventMesh.debug_log("self.GPIO26_status == 1")
+                        self.pwkey_timer.stop()
+                        self.pwkey_count = 0
+                        self.pwkey_press = 0
+                        self.led_state = 0
+                        self.pwKey_press_count+=1
+                        self.pwkey_timer.start(500, 0, self.publish_pwKey_timeout_cb_do)#松手超时1s判断
+
+        def  hsensorTest_timer_cb(self,e):
+            EventMesh.publish("system_sleep_rest")#防止黑屏 
+            w_data = EventMesh.publish(constants.EVENT.GET_WEAR)#佩戴数据
+            #EventMesh.debug_log("FactoryModeHsensorTest{}".format(data))
+        
+            c_data = self.Hsensor.get_test_data()#校准数据和工厂数据
+            # text_data = "   佩戴状态\n红外:{}活体:{}佩戴:{}\n{},{} \n{},{} \n{},{}\n校准数据:{},{},{},{}\n漏光数据:{},{},{}".format(
+            #                                             c_data[3],c_data[4],w_data,c_data[5],c_data[6],c_data[7],c_data[8],c_data[9],c_data[10],
+            #                                                 c_data[11],c_data[12],c_data[13],c_data[14],c_data[0],c_data[1],c_data[2],)
+                
+            if(self.hsensorTest_timer_count != 0):
+                    self.hsensorTest_timer_count -= 1
+                    if self.hsensorTest_timer_count%5 == 0:
+                        EventMesh.debug_log("c_data:{} {} {} {}".format(c_data[11],c_data[12],c_data[13],c_data[14]))
+                        if c_data[11] != 0 and c_data[13] != 0: #校准成功
+                            str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_OK"))
+                            EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                            self.Hsensor.close() 
+                            self.Hsensor.init()
+                            self.hsensorTest_timer.stop()
+                            return
+                    if self.hsensorTest_timer_count == 0:#50秒超时,失败
+                        self.Hsensor.close() 
+                        self.Hsensor.init(); 
+                        self.hsensorTest_timer.stop()
+                        str_data = 'mp3files={}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_FAILE"))
+                        EventMesh.publish("play_audio_file",[str_data,1])#获取播放音频文件('U:/static/audio.bin',1,1,str_data)
+                
+        def publish_pwKey_timeout_cb_do(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.pwKey_timeout_cb,"data":0})  
+        
+        def pwKey_timeout_cb(self, data):#侧边按键
+            boot_count = EventMesh.publish("get_boot_time_count")
+            try :
+                if boot_count < 50 :#开机50秒内按键次数大于10就校准
+                    #EventMesh.debug_log("boot_count:{}".format(boot_count))
+                    if self.pwKey_press_count >= 6:
+                        self.Hsensor =  EventMesh.publish("get_Hsensor")
+                        self.hsensorTest_timer.start(1000,1,self.hsensorTest_timer_cb) 
+                        EventMesh.debug_log("打开校准模式")
+                        self.Hsensor.set_sar(1)
+                        self.Hsensor.open_test(255) #打开校准模式
+                        utime.sleep_ms(500)
+                        self.Hsensor.open_heart()
+                        self.hsensorTest_timer_count = 50
+                        self.hsensorTest_timer.start(1000,1,self.hsensorTest_timer_cb)
+                        str_data = 'mp3files={}.mp3+{}.mp3'.format(audio_buf.index("R_HSENSOR_RESULT_HR_TITLE"),audio_buf.index("R_HSENSOR_SPO2_TITLE"),)
+                        EventMesh.publish("play_audio_file",[str_data,1])
+                        self.pwKey_press_count = 0
+                        return
+
+            except Exception as e:
+                usys.print_exception(e)
+            if self.pwKey_press_count >= 1:
+                self.pwKey_press_count = 0
+                # EventMesh.debug_log("pwKey_timeout_cb:self.pwKey_press_count >= 1")
+                flag = EventMesh.publish("get_call_state") 
+                if flag != 2:#如果是电话拨出去或者不在打电话中都可以执行
+                    EventMesh.publish("stop_led_timer")#设置参数
+                    EventMesh.publish("dialing_out_event")#电话呼叫中voiceCall.callEnd()
+
+                    if flag == 1:#如果是sos电话拨出去
+                        sos_flag = EventMesh.publish("get_sos_flag")
+                        if sos_flag == 1:
+                            EventMesh.publish("set_sos_flag",0)
+                            EventMesh.publish("set_sos_num",0)
+                            EventMesh.publish("set_hangup_mode",0)
+                    EventMesh.publish("close_hr_sop2")#
+                    flag = EventMesh.publish("get_call_state") 
+                    if flag != 1:
+                        EventMesh.publish("set_sim_mode")#
+            
+            self.pwKey_press_count = 0
+
+        def sosKey_extint_cb(self,args):
+            power_off = EventMesh.publish("get_power_off_state")#获取关机标识
+            if power_off != None:
+                if power_off == 1:
+                    return
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            self.sosKey_status = int(args[1])
+            if self.sosKey_status == 0:
+                self.sosKey_status = 1
+            else:
+                self.sosKey_status = 0
+                pass
+            # self.sosKey_status = self.sosKey.read_level()
+            EventMesh.debug_log('### sosKey_extint_cb  {} self.sosKey_status:{}'.format(args,self.sosKey_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
+            # if self.WeChatKey_status != 0 and self.GPIO26_status != 0:
+            if self.WeChatKey_status != 0 and self.GPIO26_status != 0 and self.KeyCall1_status != 0 and self.KeyCall2_status != 0:
+                if self.sosKey_status == 0:#按下
+                    EventMesh.publish("close_falldown_alarm_event")#sos短按事件
+                    if self.sosKey_press == 0 :
+                        self.led_state = 0
+                        self.wechatKey_timer.stop()
+                        self.pwkey_timer.stop()
+                        self.sosKey_timer.stop()
+                        self.Keycall2_timer.stop()
+                        self.Keycall1_timer.stop()
+                        self.wechatKey_press_count = 0
+                        self.pwKey_press_count = 0
+                        self.sosKey_press = 1
+                        self.pwkey_press = 0
+                        self.wechatKey_press = 0
+                        self.sosKey_long_press = 0
+                        self.sosKey_count = 0
+
+                        self.Keycall1_count = 0
+                        self.Keycall1_press = 0 
+                        self.Keycall1_press_count = 0
+                        
+                        self.Keycall2_count = 0
+                        self.Keycall2_press = 0 
+                        self.Keycall2_press_count = 0
+
+                        self.sosKey_timer.start(100, 1, self.publish_soskey_btn_event_cb)
+                        # self.sosKey_timer.start(100, 1, self.sosKey_press_cb)
+            # EventMesh.debug_log("key22_extint_cb:self.key22_timer.start!!!!\n")
+
+        def sosKey_press_cb(self, data):
+            '''KEY2:联动屏幕右下角或返回键长按关机'''
+            if self.sosKey_press == 1 :
+                # if self.sosKey_count <= 2:
+                    # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音
+                    #     EventMesh.publish("set_led_time_arg",[1000,200,1,led_mode.FLASH_LIGHT_GREEN,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+                    # else:
+                    #     EventMesh.publish("set_led_time_arg",[1000,200,1,led_mode.FLASH_LIGHT_RED,led_mode.DEFAULT_LONG_LIGHT_MODE,led_mode.OTHER_MEASURE_MODE])#设置参数
+                self.sosKey_count += 1
+                if self.sosKey_count >= 10*3: #长按3s sos拨号
+                    self.sosKey_count = 0
+                    self.sosKey_long_press = 1
+                    self.sosKey_press = 0
+                    self.sosKey_timer.stop()
+                    flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+                    fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+                    if fall_down != None:
+                        if fall_down != 0 or flag == 2:
+                            return
+                    EventMesh.publish_async("dial_sos_phone")#拨打sos号码
+                    return
+
+                # EventMesh.debug_log("self.sosKey_count {}",self.sosKey_count)
+                if self.sosKey_status == 1:#松开
+                    if self.sosKey_count >= 1: #防抖100ms
+                        self.sosKey_timer.stop()
+                        self.sosKey_count = 0
+                        self.sosKey_press = 0
+                        self.sosKey_press_count+=1
+                        self.sosKey_timer.start(500, 0, self.publish_sosKey_timeout_cb_do)#松手超时1s判断
+        def publish_sosKey_timeout_cb_do(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.sosKey_timeout_cb,"data":0})  
+        def sosKey_timeout_cb(self, data):#
+            # EventMesh.debug_log("sosKey_press_count!!!!!!!!!!!!!! ",self.sosKey_press_count)
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+            if self.sosKey_press_count > 1:#短按十次解绑app
+                if fall_down != None:
+                    if fall_down != 0 or flag == 2:
+                        self.sosKey_press_count = 0
+                        return
+            if self.sosKey_press_count == 10:#
+                self.sosKey_press_count = 0
+                pass
+            elif self.sosKey_press_count == 6:#
+                self.sosKey_press_count = 0
+                pass
+            elif self.sosKey_press_count == 5:#功能暂时屏蔽
+                self.sosKey_press_count = 0
+                call_state = EventMesh.publish("get_call_state")
+                battery = EventMesh.publish("screen_get_battery")
+                if call_state == None:
+                    call_state = 0
+                if call_state == 0: 
+                    if battery != None:
+                        if battery[0] != "1":#在充电得时候
+                            EventMesh.publish("stop_led_timer")#设置参数
+                            EventMesh.publish("set_manual_measure_mode",3)#测量体温
+                pass
+            elif self.sosKey_press_count == 4:#拨打app快捷号码
+                self.sosKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("play_center_phone")#拨打快捷号码
+                # EventMesh.publish("call_phonebook_three_call")
+                pass
+            elif self.sosKey_press_count == 3:#测试心率
+                self.sosKey_press_count = 0
+                
+                call_state = EventMesh.publish("get_call_state")
+                battery = EventMesh.publish("screen_get_battery")
+                if call_state == None:
+                    call_state = 0
+                if call_state == 0: 
+                    if battery != None:
+                        if battery[0] != "1":#在充电得时候
+                            EventMesh.publish("stop_led_timer")#设置参数
+                            EventMesh.publish("set_manual_measure_mode",1)#
+                pass
+            elif self.sosKey_press_count == 2:#播报当前步数
+                self.sosKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("play_cur_step_event")#
+                pass
+            elif self.sosKey_press_count == 1:#挂断来电 短语音播报
+                self.sosKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                # EventMesh.publish("call_test_event")
+                EventMesh.publish("sos_short_press")#sos短按事件
+                
+                pass
+            self.sosKey_press_count = 0
+
+
+        def wechatKey_extint_cb(self,args):
+            power_off = EventMesh.publish("get_power_off_state")#获取关机标识
+            if power_off != None:
+                if power_off != 0:
+                    return
+            open_power = EventMesh.publish("get_power_on_state")#获取开机标识
+            if open_power != None:
+                if open_power == 0:
+                    return
+            fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+            if fall_down != None:
+                if fall_down != 0:
+                    return
+            self.WeChatKey_status = int(args[1])
+            if self.WeChatKey_status == 0:
+                self.WeChatKey_status = 1
+            else:
+                self.WeChatKey_status = 0
+                pass
+            EventMesh.debug_log('### wechatKey_extint_cb  {} self.WeChatKey_status:{}'.format(args,self.WeChatKey_status)) # args[0]:gpio号 args[1]:上升沿或下降沿
+            # if self.sosKey_status != 0 and self.GPIO26_status != 0:
+            if self.sosKey_status != 0 and self.GPIO26_status != 0 and self.KeyCall1_status != 0 and self.KeyCall2_status != 0:
+                if self.WeChatKey_status == 0:#按下
+                    if self.wechatKey_press == 0:
+                        self.wechatKey_timer.stop()
+                        self.pwkey_timer.stop()
+                        self.sosKey_timer.stop()
+                        self.Keycall2_timer.stop()
+                        self.Keycall1_timer.stop()
+
+                        self.sosKey_press_count = 0
+                        self.pwKey_press_count = 0
+                        self.sosKey_press = 0
+                        self.pwkey_press = 0
+                        self.wechatKey_press = 1
+                        self.led_state = 0
+                        self.wechatKey_count = 0
+                        self.wechat_state = 1
+
+                        self.Keycall1_count = 0
+                        self.Keycall1_press = 0 
+                        self.Keycall1_press_count = 0
+                        
+                        self.Keycall2_count = 0
+                        self.Keycall2_press = 0 
+                        self.Keycall2_press_count = 0
+
+                        self.wechatKey_timer.start(100, 1, self.publish_wechat_btn_event_cb)
+
+        def close_wechat_btn_timer(self,event,*argc):
+            tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳
+            wechat_time = 0
+            time_tmp = 0
+            time_sec = 0
+
+            if tmp != None:
+                if tmp[0] == 1:
+                    self.wechatKey_timer.stop()
+                    self.wechatKey_count = 0
+                    self.wechatKey_press = 0
+                    self.wechatKey_press_count=0
+                    date_tmp = utime.localtime()
+                    time_tmp = utime.mktime(date_tmp)
+                    time_sec = tmp[1]
+                    wechat_time = time_tmp - time_sec
+                    # EventMesh.debug_log("close_btn_timer",time_tmp,time_sec,wechat_time)
+                    if wechat_time >= 15:
+                        wechat_time = 15
+                    if wechat_time <= 0:
+                        wechat_time = 0
+                    EventMesh.publish("send_wechat_record",wechat_time)#发送录音文件内容
+        
+
+        def wechatKey_press_cb(self,data):
+            wechat_time = 0
+            tmp = None
+            time_sec = 0
+            time_tmp = 0
+            date_tmp = utime.localtime()
+            time_tmp = utime.mktime(date_tmp)
+            '''KEY2:联动屏幕右下角或返回键长按关机'''
+            if self.wechatKey_press == 1 :#是否按下
+                tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳
+                self.wechatKey_count += 1
+                if self.wechatKey_count >= 10: #长按1s进入微聊录音
+                    flag = EventMesh.publish("get_call_state") 
+                    fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+                    if flag != None:
+                        if flag == 0 and fall_down == 0:
+                            if self.WeChatKey_status == 0:
+                                if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音
+                                    if self.wechat_state == 1:#按下超过s开始录音
+                                        EventMesh.publish("start_wechat_record")#开始录音
+                                        self.wechat_state = 0
+                                else:
+                                    self.wechat_state = 0
+                                    self.wechatKey_timer.stop()
+                                    self.wechatKey_count = 0
+                                    self.wechatKey_press = 0
+                                    self.wechatKey_press_count=0
+                                    EventMesh.publish("set_sim_mode")#播報imei号
+                                    return
+
+                            if self.WeChatKey_status == 0:#未松手超过15s啧停止录音
+                                if self.wechat_state == 0:
+                                    if tmp != None:
+                                        if tmp[0] != 0:
+                                            time_sec = tmp[1]
+                                            if time_tmp - time_sec >= 15:
+                                                wechat_time = time_tmp - time_sec
+                                                if wechat_time >= 15:
+                                                    wechat_time = 15
+                                                EventMesh.publish("send_wechat_record",wechat_time)#发送录音文件内容
+                                                
+                                                self.wechatKey_timer.stop()
+                                                self.wechatKey_count = 0
+                                                self.wechatKey_press = 0
+                                                self.wechatKey_press_count=0
+                                                return
+                            else:
+                                if self.WeChatKey_status == 1:
+                                    if self.wechat_state == 0:#如果按下时长超过1s且小于长按的时间也认为是录微聊
+                                        if tmp != None:
+                                            if tmp[0] != 0:
+                                                time_sec = tmp[1]
+                                                wechat_time = time_tmp - time_sec
+                                            # EventMesh.debug_log("WECHAT TIEM",time_tmp,time_sec,wechat_time)
+                                            if wechat_time >= 15:
+                                                wechat_time = 15
+                                        
+                                        EventMesh.publish("send_wechat_record",wechat_time)#发送录音文件内容
+                                        self.wechatKey_timer.stop()
+
+                                        self.wechatKey_count = 0
+                                        self.wechatKey_press = 0
+                                        self.wechatKey_press_count=0
+                                        return
+                        else:
+                            self.wechatKey_timer.stop()
+                            self.wechatKey_count = 0
+                            self.wechatKey_press = 0
+                            self.wechatKey_press_count = 0
+
+                if self.WeChatKey_status == 1:#松开
+                    if self.wechatKey_count >= 1: #防抖100ms
+                        # EventMesh.debug_log("WeChat time!!!!!!!!!!!!!!")
+                        self.wechatKey_timer.stop()
+                        self.wechatKey_count = 0
+                        self.wechatKey_press = 0
+                        self.wechatKey_press_count+=1
+                        self.wechatKey_timer.start(500, 0, self.publish_wechatKey_btn_event_cb)#松手超时1s判断
+
+        def publish_wechatKey_btn_event_cb(self, *args, **kwargs):
+            EventMesh.publish("publish_message_event_btnInfo",{"func":self.wechatKey_timeout_cb,"data":0})  
+
+        def wechatKey_timeout_cb(self,data):#微聊键
+            flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备
+            fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+            if self.wechatKey_press_count > 1:#
+                if fall_down != None:
+                    if fall_down != 0 or flag == 2:
+                        self.wechatKey_press_count = 0
+                        return
+            # EventMesh.debug_log("wechatKey_timeout_cb!!!!!!!!!!!!!! ",self.wechatKey_press_count)
+            if self.wechatKey_press_count == 10:#短按十次解绑app
+                self.wechatKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("open_power_on", 4)#恢复出厂
+                pass
+            elif self.wechatKey_press_count == 6:#短按六次播报imei号
+                self.wechatKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("play_imei_event")#播報imei号
+                pass
+            elif self.wechatKey_press_count == 4:#拨打通讯录号码三
+                self.wechatKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("call_phonebook_three_call")
+                pass
+            elif self.wechatKey_press_count == 3:#拨打通讯录号码二
+                self.wechatKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("call_phonebook_two_call")
+                pass
+            elif self.wechatKey_press_count == 2:#拨打通讯录号码一
+                self.wechatKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                EventMesh.publish("call_phonebook_one_call")
+            # EventMesh.publish("interup_call_event")#
+                pass
+            elif self.wechatKey_press_count == 1:#播放最后收到的语音
+                self.wechatKey_press_count = 0
+                EventMesh.publish("stop_led_timer")#设置参数
+                call_state = EventMesh.publish("get_call_state") 
+                if call_state == 0:
+                    fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识
+                    if fall_down != None:
+                        if fall_down != 0:
+                            EventMesh.publish_async("dial_sos_phone")#拨打sos号码
+                            return
+                else:
+                    if call_state == 2:#电话拨进需要接听
+                        EventMesh.publish("answer_call_event")#接听电话
+                        return
+                EventMesh.publish("play_wechat_last_amr")
+                # pass
+            self.wechatKey_press_count = 0
+
+
+        def pwk_press_cb(self, *args):
+            '''KEY2:联动屏幕右下角或返回键长按关机'''
+            if self.pwk_press == 1 :
+                
+                self.pwk_count += 1
+                EventMesh.debug_log("self.pwk_count {}",self.pwk_count)
+                if self.GPIO26_status == 1:#松开
+                    if self.pwk_count >= 1: #防抖100ms
+                        self.__pwk_timer.stop()
+                        self.pwk_count = 0
+                        self.pwk_press = 0
+                        EventMesh.debug_log("self.pwk_press_cb")
+
+                if self.pwk_count > (self.__PowerDownTimeOut//100): #长按
+                    self.__pwk_timer.stop()
+                    self.pwk_count = 0
+                    self.pwk_press = 0
+                    EventMesh.debug_log("btn8_long_press")
+
+        def __ui_callback(self, para):
+        # EventMesh.debug_log("para = {}".format(para))
+            if para == 0:
+                EventMesh.publish("done_left_to_right")
+                #EventMesh.debug_log("<-")
+            elif para == 1:
+                EventMesh.publish("done_right_to_left")
+                #EventMesh.debug_log("->")
+            elif para == 2:
+                EventMesh.publish("done_bottom_to_top")
+                #EventMesh.debug_log("^")
+            elif para == 3:
+                EventMesh.publish("done_top_to_bottom")
+                #EventMesh.debug_log("V")
+            elif para == 4:
+                EventMesh.publish("done_return")
+                #EventMesh.debug_log("return")
+            elif para == 5:
+                EventMesh.publish("done_click")
+                #EventMesh.debug_log("CLICK")
+            elif para == 6:
+                EventMesh.publish("done_press")
+                #EventMesh.debug_log("press")
+            elif (para == 6):
+                EventMesh.publish("done_error")
+                #EventMesh.debug_log("error")
+
+        def key_callback(self, l_list):
+            EventMesh.debug_log("key_callback:",str(l_list))
+            if l_list[0] == 1:
+                # 马达震动预留
+                pass
+            if (l_list[1] == 3) and (l_list[2] == 0):
+                if l_list[0] == 1:
+                    #self.pwk_press = 0
+                    EventMesh.publish("btn1_press")
+                else:
+                    pass
+                    # EventMesh.publish("btn1_press")
+
+
+
+
+        def powerKey_callback(self, status):
+            EventMesh.debug_log('==pwr:', status)# 0 1 0
+            self.powerKey_status = status
+            if self.pwk_press == 1: #按按钮时不处理
+                return
+        
+            
+                
+
+        def power_key_press_cb(self, *args):
+            pass
+            # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 0:#未插卡的情况下强制关机
+                # EventMesh.publish("open_power_on", 2)#
+
+
+        def start(self):
+            self.post_processor_after_instantiation()
index dd3e552..0b6b22c 100644 (file)
@@ -56,7 +56,10 @@ def main_init():
     
     EventMesh.debug_log("init2:{}".format(utime.localtime()))
     EventMesh.debug_log("init3:{}".format(utime.localtime()))
-    from btn_device_ec800m import BtnDevice,intervManager
+    if EventMesh.model == "D10_":
+        from btn_device_ec800m import BtnDevice,intervManager
+    else:
+        from btn_device_ec800m_d15 import BtnDevice,intervManager
 
     btn_device = BtnDevice()
     btn_device.start()
index e541df3..77b00e5 100644 (file)
@@ -711,6 +711,7 @@ def voice_callback(args):
         EventMesh.publish("set_sos_info_call")  
         flag = EventMesh.publish("get_call_state") 
         if flag == 2:
+            EventMesh.publish("stop_led_timer")#设置参数
             EventMesh.publish("close_timer_all")#
         EventMesh.publish("set_call_state",0) 
         EventMesh.debug_log('voicecall disconnect end')
@@ -956,6 +957,8 @@ class DeviceInfoManager(Abstract):
         EventMesh.subscribe("clear_wakeup_alarm", self.clear_wakeup_alarm)
         EventMesh.subscribe("clear_sleep_alarm", self.clear_sleep_alarm)
         EventMesh.subscribe("clear_normal_alarm", self.clear_normal_alarm)
+
+        EventMesh.subscribe("clear_usb_flag", self.clear_usb_flag)
         
         EventMesh.debug_log("post_processor_after_instantiation:2")
         self.timer_push_schedule.start(10000, 1, self.publish_event_cb)
@@ -1038,7 +1041,8 @@ class DeviceInfoManager(Abstract):
         else:
             if self.temp_warning>=1:
                 self.temp_warning -= 1
-            
+        if temp >= 40:
+            temp = 40
         return temp
     def clear_health_state(self,event,msg):
         print("clear_health_state")
@@ -1597,12 +1601,13 @@ class DeviceInfoManager(Abstract):
                                     EventMesh.publish(constants.EVENT.START_HEART)
                                     self.HR_Onestate = 1
                                 elif (time_tmp - self.SENSOR_time) >= 60 and self.HR_Onestate == 1:
+                                    self.HR_Onestate = 0
                                     EventMesh.publish("set_hr_state",0)#2代表后台进入测试
                                     EventMesh.debug_log("stop debug3")
                                     EventMesh.publish(constants.EVENT.STOP_HEART)
                                     heart_value = EventMesh.publish(constants.EVENT.GET_HEART)
                                     EventMesh.debug_log("heart_value:{}".format(heart_value))
-                                    heart_value = 60+urandom.randint(0,10)
+                                    # heart_value = 60+urandom.randint(0,10)
                                     if heart_value > 50 and heart_value != None:
                                         # EventMesh.publish("play_hr_value",heart_value)
                                         EventMesh.publish("set_history_hr_value",heart_value)
@@ -1613,7 +1618,7 @@ class DeviceInfoManager(Abstract):
                                         # EventMesh.publish("play_hr_value",0)
                                     #获取心率数据上传数据app
                                     EventMesh.debug_log("STOP_HEART:")
-                                    self.HR_Onestate = 0
+                                    
                             else:
                                 self.HR_Onestate = 0
                         else:
@@ -1818,9 +1823,15 @@ class DeviceInfoManager(Abstract):
             self.BG_state = 0
             self.temp_time = time_tmp
 
+            self.bp_timeSecond = time_tmp
+            self.bpauto_state = 0
+
+            self.spo2_timeSecond = time_tmp
+            self.spo2auto_state = 0
+
             self.temp_state = 0
             self.temp_one_state = 0
-            self.old_temp_time = 0
+            self.old_temp_time = 0  
 
 
             if battery[0] == "1":
@@ -2016,7 +2027,7 @@ class DeviceInfoManager(Abstract):
             else:
                 if battery[1] >= 100:
                     if self.charge_full_count == 0:#充电已满
-                        # EventMesh.publish("set_usb",3)#
+                        EventMesh.publish("set_usb",3)#
                         EventMesh.debug_log("charge R_CHARGE_full")
                         self.charge_full_count = 1
                 
@@ -2047,7 +2058,8 @@ class DeviceInfoManager(Abstract):
             self.alarm_flag = 1
             EventMesh.publish("set_rtc_alarm")
 
-
+    def clear_usb_flag(self,event,msg):
+        self.charge_full_count = 0
     #普通闹钟
     def normal_alarm(self):
         data = RTC().datetime()
@@ -2762,11 +2774,14 @@ class DeviceInfoManager(Abstract):
 
         if status == 1:#插入USB
             EventMesh.debug_log("charge R_CHARGE_in")
+            EventMesh.publish("clear_usb_flag")
             EventMesh.publish("set_usb", 1)#
             pass
         elif status == 0:#拨出usbs
+            EventMesh.publish("clear_usb_flag")
             EventMesh.publish("set_usb", 2)#
             EventMesh.debug_log("charge R_CHARGE_out")
+
             
             
 
index 8b8a029..83492f5 100644 (file)
@@ -158,16 +158,16 @@ class CountdownManager(Abstract):
 BATTERY_OCV_TABLE = {
     "nix_coy_mnzo2": {
         55: {
-            4270: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55,
-            3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3355: 0,
+            4170: 100, 4061: 95, 3994: 90, 3937: 85, 3883: 80, 3834: 75, 3789: 70, 3746: 65, 3707: 60, 3673: 55,
+            3644: 50, 3622: 45, 3604: 40, 3588: 35, 3572: 30, 3556: 25, 3537: 20, 3515: 15, 3486: 10, 3449: 5, 3410: 0,
         },
         20: {
-            4270: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55,
-            3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3355: 0,
+            4170: 100, 4061: 95, 3994: 90, 3937: 85, 3883: 80, 3834: 75, 3789: 70, 3746: 65, 3707: 60, 3673: 55,
+            3644: 50, 3622: 45, 3604: 40, 3588: 35, 3572: 30, 3556: 25, 3537: 20, 3515: 15, 3486: 10, 3449: 5, 3410: 0,
         },
         0: {
-            4270: 100, 4237: 95, 4179: 90, 4123: 85, 4070: 80, 4020: 75, 3963: 70, 3919: 65, 3882: 60, 3847: 55,
-            3818: 50, 3794: 45, 3772: 40, 3752: 35, 3733: 30, 3716: 25, 3699: 20, 3677: 15, 3652: 10, 3629: 5, 3355: 0,
+            4170: 100, 4061: 95, 3994: 90, 3937: 85, 3883: 80, 3834: 75, 3789: 70, 3746: 65, 3707: 60, 3673: 55,
+            3644: 50, 3622: 45, 3604: 40, 3588: 35, 3572: 30, 3556: 25, 3537: 20, 3515: 15, 3486: 10, 3449: 5, 3410: 0,
         },
     },
 }
@@ -476,7 +476,9 @@ def voice_callback(args):
         sos_flag = EventMesh.publish("get_sos_flag")
         if sos_flag == 1:
             sos_flag = 0
+            EventMesh.publish("close_sos_timer")
             EventMesh.publish("set_sos_flag",0)
+            EventMesh.publish("set_sos_num",0)
 
         print('voicecall connected, PhoneNO.: ', args[6])
         size_len = len(str(args[6]))
@@ -497,12 +499,8 @@ def voice_callback(args):
         EventMesh.publish("set_interrup_incall",0)
         EventMesh.publish("set_UI_high_priority",0)
         
-
-        screen_NAME = EventMesh.publish("get_screen_NAME")
-        if screen_NAME != None:
-            if screen_NAME != "dialing_noplay_popup":
-                EventMesh.publish("return_prev_screen")
-                # EventMesh.publish("load_screen", {"screen": "main_menu"})  
+        EventMesh.publish("return_prev_screen")
+            # EventMesh.publish("load_screen", {"screen": "main_menu"})  
         
         EventMesh.publish("set_sos_info_call")  
         print('voicecall disconnect end')
@@ -2841,7 +2839,7 @@ class getStorageDataManager(Abstract):#获取内存数据
         # print("get_storage_data:{}".format(self.config_data))
         return self.config_data 
     def get_storage_config(self,event,msg):
-        print("get_storage_key_data1:{}".format(msg))
+        # print("get_storage_key_data1:{}".format(msg))
         b = msg in self.config_data.keys()
         if b == True:
             # print("get_storage_key_data2:{}".format(self.config_data[msg]))
@@ -2940,6 +2938,8 @@ class getSosFlagManager(Abstract):#设置sos
         EventMesh.subscribe("set_hangup_mode", self.set_hangup_mode)
         EventMesh.subscribe("get_hangup_mode", self.get_hangup_mode)#获取挂断方式 是对方挂断 还是手表按键主动挂断
 
+        EventMesh.subscribe("close_sos_timer",self.close_sos_timer)
+
     def get_hangup_mode(self, event, msg): # 1是设备端手表主动挂断 0是手机端
         return self.hangup_mode
     
@@ -2962,14 +2962,17 @@ class getSosFlagManager(Abstract):#设置sos
 
     def set_callnumer_cb(self, event, msg):
         self.callnumer = msg
-        self.call_timer.start(5*1000, 0, self.call_timer_cb)#延迟10S 继续拨打
+        self.call_timer.start(8*1000, 0, self.call_timer_cb)#延迟10S 继续拨打
 
     def call_timer_cb(self, *args, **kwargs):
-        if self.sos_flag == 1:
-            # print("call_timer_cb:{}".format(self.callnumer))
-            EventMesh.publish("save_phonename",str(self.callnumer))
-            EventMesh.publish("save_phonenum",str(self.callnumer))
-            EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})  
+        # print("call_timer_cb:{}".format(self.callnumer))
+        EventMesh.publish("save_phonename",str(self.callnumer))
+        EventMesh.publish("save_phonenum",str(self.callnumer))
+        EventMesh.publish("load_screen", {"screen": "dialing_noplay_popup"})  
+
+    def close_sos_timer(self,event,msg):
+        self.call_timer.stop()
+        pass
 
     def get_sos_flag(self, event, msg): 
         return self.sos_flag
index 0ddc32a..08792b5 100644 (file)
@@ -305,7 +305,7 @@ class SockManager(Abstract):
                 if data != None:
                     try:
                         self.sock.send(data)
-                        print("TCP:send data2 len:{}".format(data))    
+                        # print("TCP:send data2 len:{}".format(data))    
                     except Exception as e:
                         self.reconnect()
                         self.socket_send_queue.put(data)#重新把数据加回队列
@@ -1992,8 +1992,7 @@ class TK_ProtoCol(ProtoCol):
         else:
             # [SZKW*YYYYYYYYYYYYYYY*LEN*TK,AMR 格式音频数据]
             #[XT*YYYYYYYYYYYYYYY*LEN*TKS,秒数(十进制),AMR 格式音频数据]
-            arm_data = msg[1]
-            arm_sec = msg[0]
+            arm_data = msg
             # print("TK_ProtoCol:msgtype:{} arm_sec:{}".format(len(msg[1]),arm_sec))
 
             arm = bytearray()
@@ -2011,9 +2010,9 @@ class TK_ProtoCol(ProtoCol):
                 else :
                     arm.append(arm_data[i])
                 
-            datalen = len(arm) + len("TK,")+len(str(arm_sec))+1
+            datalen = len(arm) + len("TK,")+1
             #Wechat_log("len(str(arm_sec)):{}".format(len(str(arm_sec))+1))
-            send_data = bytearray(EventMesh.publish("get_new_pid")+"*%s*%04X*TK,%d,"%(self.imei,datalen,arm_sec))
+            send_data = bytearray(EventMesh.publish("get_new_pid")+"*%s*%04X*TK,"%(self.imei,datalen))
             send_data.extend(arm)
             MD5_head_data = EventMesh.publish("get_new_pid")+"*%s*%04X*%s"%(self.imei,datalen,"TK")
             MD5_SIGN = self.pack_MD5_head(MD5_head_data)
index fd64eee..3310f6b 100644 (file)
@@ -431,6 +431,8 @@ class PhoneScreen(Screen):
             # phone_label.set_long_mode(lv.label.LONG.CLIP)
             # phone_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
 
+        
+
             phone_one = lv.img(phone_screen)
             phone_one.set_src("U:/static/IMAGE_NUMBER_KEY1_ICON.png")
             phone_one.add_flag(lv.obj.FLAG.CLICKABLE)
@@ -1153,16 +1155,12 @@ class DialingScreen(Screen):
         
     def hangup(self,e):
         EventMesh.publish("set_UI_high_priority", 0)
+        EventMesh.publish("close_sos_timer")
         EventMesh.publish("set_hangup_mode", 1)
         voiceCall.callEnd()
         EventMesh.publish("set_interrup_incall",0)
         EventMesh.publish("set_UI_high_priority",0)
-
-        screen_NAME = EventMesh.publish("get_screen_NAME")
-        if screen_NAME != None:
-            if screen_NAME != "dialing_noplay_popup":
-                # EventMesh.publish("return_prev_screen")
-                EventMesh.publish("load_screen", {"screen": "main_menu"})  
+        EventMesh.publish("load_screen", {"screen": "main_menu"})  
 
     def Close(self):
         self.timer.stop()
@@ -1624,7 +1622,7 @@ class DialingNoPlayPopupScreen(Screen):#正在拨号中...未打出
     def timeout_hangup(self,e):
         EventMesh.publish("system_sleep_rest")#防止黑屏
         self.time_count+=1
-        if self.time_count >= 10:#5s内没有打通则不在继续拨打关闭
+        if self.time_count >= 5:#5s内没有打通则不在继续拨打关闭
             self.time_count = 0
             self.timer1.stop()
             EventMesh.publish("set_UI_high_priority", 0)
@@ -1640,6 +1638,7 @@ class DialingNoPlayPopupScreen(Screen):#正在拨号中...未打出
         voiceCall.callEnd()
         sos_flag = EventMesh.publish("get_sos_flag")
         if sos_flag == 1:
+            EventMesh.publish("close_sos_timer")
             EventMesh.publish("set_sos_flag",0)
             EventMesh.publish("set_sos_num",0)
             EventMesh.publish("set_hangup_mode",0)
@@ -1702,13 +1701,14 @@ class DialNoconnectPopupScreen(Screen):#你所拨打的电话暂时无法接通
     def timeout_hangup(self,e):
         EventMesh.publish("system_sleep_rest")#防止黑屏
         self.time_count+=1
-        if self.time_count >= 10:
+        if self.time_count >= 5:
             self.time_count = 0
+            self.timer.stop()
             EventMesh.publish("return_prev_screen")
 
     def Close(self):
         self.timer.stop()
-        EventMesh.publish("set_sos_info_call") 
+        # EventMesh.publish("set_sos_info_call") 
     
 
 
@@ -7000,6 +7000,7 @@ class classMgrPopupScreen(Screen):#上课禁用时间界面
 
         sos_flag = EventMesh.publish("get_sos_flag")
         if sos_flag == 1:
+            EventMesh.publish("close_sos_timer")
             EventMesh.publish("set_sos_flag",0)
             EventMesh.publish("set_sos_num",0)
             EventMesh.publish("set_hangup_mode",0)
index 5b95aeb..27787d3 100644 (file)
@@ -61,71 +61,34 @@ setting_cont.set_pos(0, 5)
 setting_cont.set_size(128, 123)
 setting_cont.add_style(setting_cont_style,lv.PART.MAIN | lv.STATE.DEFAULT)
 
-# setting_language = lv.btn(setting_cont)
-# setting_language.set_pos(0, setting_cont_y)
-# setting_language.set_size(240, 54)
-# setting_language_label = lv.label(setting_language)
-# setting_language_label.set_text("语言设置")
-# setting_language.set_style_pad_all(0, lv.STATE.DEFAULT)
-# setting_language_label.align(lv.ALIGN.LEFT_MID, 70, 0)
-# setting_language_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-# setting_language_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-# setting_language.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
-# setting_language_img = lv.img(setting_cont)
-# setting_language_img.set_pos(10, setting_cont_y)set_size(47, 47)
-# setting_language_img.set_size(232, 80)
-# setting_language_img.add_flag(lv.obj.FLAG.CLICKABLE)
-# setting_language_img.set_src("U:/static/menu_language.png")
-# setting_language_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-#setting_cont_y += 60
-
-setting_dialswitch_img_btn_1 = lv.btn(setting_cont)
-setting_dialswitch_img_btn_1.set_pos(int(0),int(setting_cont_y-5))
-setting_dialswitch_img_btn_1.set_size(120,35)
-setting_dialswitch_img_btn_1.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
-setting_dialswitch_img_btn_1.add_flag(lv.obj.FLAG.CLICKABLE)
-setting_dialswitch_img_btn_1.add_style(style_screen_btn_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT)
-
-setting_dialswitch_label = lv.label(setting_cont)
-setting_dialswitch_label.set_text("表盘切换")
-setting_dialswitch_label.set_pos(34, setting_cont_y+5)
-setting_dialswitch_label.set_size(128-34, 35)
-# setting_dialswitch_label.add_flag(lv.obj.FLAG.CLICKABLE)
-# setting_dialswitch_label.set_text_align(lv.ALIGN.LEFT_MID, 30, setting_cont_y)
-setting_dialswitch_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-setting_dialswitch_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-
-setting_dialswitch_img = lv.img(setting_cont)
-setting_dialswitch_img.set_pos(4, setting_cont_y)
-setting_dialswitch_img.set_size(set_icon_x, set_icon_y)
-# setting_dialswitch_img.add_flag(lv.obj.FLAG.CLICKABLE)
-setting_dialswitch_img.set_src("U:/static/menu_watch_switch.png")
-setting_dialswitch_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
 
+# setting_dialswitch_img_btn_1 = lv.btn(setting_cont)
+# setting_dialswitch_img_btn_1.set_pos(int(0),int(setting_cont_y-5))
+# setting_dialswitch_img_btn_1.set_size(120,35)
+# setting_dialswitch_img_btn_1.set_scrollbar_mode(lv.SCROLLBAR_MODE.OFF)
+# setting_dialswitch_img_btn_1.add_flag(lv.obj.FLAG.CLICKABLE)
+# setting_dialswitch_img_btn_1.add_style(style_screen_btn_1_main_main_default, lv.PART.MAIN|lv.STATE.DEFAULT)
 
+# setting_dialswitch_label = lv.label(setting_cont)
+# setting_dialswitch_label.set_text("表盘切换")
+# setting_dialswitch_label.set_pos(34, setting_cont_y+5)
+# setting_dialswitch_label.set_size(128-34, 35)
+# # setting_dialswitch_label.add_flag(lv.obj.FLAG.CLICKABLE)
+# # setting_dialswitch_label.set_text_align(lv.ALIGN.LEFT_MID, 30, setting_cont_y)
+# setting_dialswitch_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
+# setting_dialswitch_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 
-setting_cont_y+=setting_cont_offset
+# setting_dialswitch_img = lv.img(setting_cont)
+# setting_dialswitch_img.set_pos(4, setting_cont_y)
+# setting_dialswitch_img.set_size(set_icon_x, set_icon_y)
+# # setting_dialswitch_img.add_flag(lv.obj.FLAG.CLICKABLE)
+# setting_dialswitch_img.set_src("U:/static/menu_watch_switch.png")
+# setting_dialswitch_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 
 
+# setting_cont_y+=setting_cont_offset
 
-# setting_themeswitch = lv.btn(setting_cont)
-# setting_themeswitch.set_pos(0, 120)
-# setting_themeswitch.set_size(240, 54)
-# setting_themeswitch_label = lv.label(setting_themeswitch)
-# setting_themeswitch_label.set_text("主题切换")
-# setting_themeswitch.set_style_pad_all(0, lv.STATE.DEFAULT)
-# setting_themeswitch_label.align(lv.ALIGN.LEFT_MID, 70, 0)
-# setting_themeswitch_label.set_style_text_color(lv.color_make(0xff, 0xff, 0xff), lv.STATE.DEFAULT)
-# setting_themeswitch_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-# setting_themeswitch.add_style(style_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
-# setting_themeswitch_img = lv.img(setting_cont)
-# setting_themeswitch_img.set_pos(10, 120)
-# setting_themeswitch_img.set_size(232, 80)
-# setting_themeswitch_img.add_flag(lv.obj.FLAG.CLICKABLE)
-# setting_themeswitch_img.set_src("U:/static/menu_theme_switch.png")
-# setting_themeswitch_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
-#setting_cont_y+=60
 
 setting_imei_img_btn_1 = lv.btn(setting_cont)
 setting_imei_img_btn_1.set_pos(int(0),int(setting_cont_y-5))
@@ -394,7 +357,7 @@ class SettingScreen(Screen):
         setting_restart_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "restart")), lv.EVENT.SHORT_CLICKED, None)
         # setting_update_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "update")), (lv.EVENT.SHORT_CLICKED ), None)
         setting_version_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "version")), (lv.EVENT.SHORT_CLICKED ), None)
-        setting_dialswitch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "dialswitch")), lv.EVENT.SHORT_CLICKED, None)
+        # setting_dialswitch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "dialswitch")), lv.EVENT.SHORT_CLICKED, None)
 
         # # setting_themeswitch.add_event_cb(lambda e: self.load_screen(e, {"screen": "themeswitch"}), lv.EVENT.SHORT_CLICKED, None)
         # setting_imei_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "imei")), lv.EVENT.PRESSING, None)
@@ -408,7 +371,7 @@ class SettingScreen(Screen):
 
         # img regist btton
         # setting_language.add_event_cb(lambda e: self.load_screen(e, {"screen": "language"}), lv.EVENT.SHORT_CLICKED, None)
-        setting_dialswitch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "dialswitch")), lv.EVENT.PRESSING, None)
+        # setting_dialswitch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "dialswitch")), lv.EVENT.PRESSING, None)
         # setting_themeswitch.add_event_cb(lambda e: self.load_screen(e, {"screen": "themeswitch"}), lv.EVENT.SHORT_CLICKED, None)
         setting_imei_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "imei")), lv.EVENT.PRESSING, None)
         setting_app_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "app")), lv.EVENT.PRESSING, None)
diff --git a/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/versions.py b/2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/versions.py
new file mode 100644 (file)
index 0000000..65fab6f
--- /dev/null
@@ -0,0 +1,2 @@
+Version="V1.0" 
+Build_Time="2023-12-25 14:29:09" 
index c94afbb..26041c3 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/00_WM.png and b/2.sdk/project/K01/usr/static/00_WM.png differ
index e4b4c54..2e45d21 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/01_WM.png and b/2.sdk/project/K01/usr/static/01_WM.png differ
index 6b025ac..50db7e9 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/02_WM.png and b/2.sdk/project/K01/usr/static/02_WM.png differ
index c3c40ae..4b57639 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/03_WM.png and b/2.sdk/project/K01/usr/static/03_WM.png differ
index d9a1c58..981eb5a 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/04_WM.png and b/2.sdk/project/K01/usr/static/04_WM.png differ
index 5ddc5f7..f34db9a 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/0_BAT.png and b/2.sdk/project/K01/usr/static/0_BAT.png differ
index 1429545..0f14da9 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/0_weather.png and b/2.sdk/project/K01/usr/static/0_weather.png differ
index df11b7e..d6eaedf 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/1_weather.png and b/2.sdk/project/K01/usr/static/1_weather.png differ
index df34dd1..fac3d2f 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/2_weather.png and b/2.sdk/project/K01/usr/static/2_weather.png differ
index 149adb8..f01c9b2 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/3_weather.png and b/2.sdk/project/K01/usr/static/3_weather.png differ
diff --git a/2.sdk/project/K01/usr/static/DIAL_PREV01.png b/2.sdk/project/K01/usr/static/DIAL_PREV01.png
deleted file mode 100644 (file)
index 1f6cd62..0000000
Binary files a/2.sdk/project/K01/usr/static/DIAL_PREV01.png and /dev/null differ
index 614869f..b982917 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_APP_QR_CODE.png and b/2.sdk/project/K01/usr/static/IMAGE_APP_QR_CODE.png differ
index b39bbbd..1761799 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_BUTTON_DELKEY.png and b/2.sdk/project/K01/usr/static/IMAGE_BUTTON_DELKEY.png differ
index 5137fc8..03bb930 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_BUTTON_DIAL.png and b/2.sdk/project/K01/usr/static/IMAGE_BUTTON_DIAL.png differ
index 5150641..13d5ef0 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_IDLE_SCREEN_ALARM_POPUP_02.png and b/2.sdk/project/K01/usr/static/IMAGE_IDLE_SCREEN_ALARM_POPUP_02.png differ
index 638c12a..eb9f6f0 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_NOTICE_CALL.png and b/2.sdk/project/K01/usr/static/IMAGE_NOTICE_CALL.png differ
index f229715..401b21d 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_NOTICE_NONE.png and b/2.sdk/project/K01/usr/static/IMAGE_NOTICE_NONE.png differ
index e9fc48f..92c1892 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY0_ICON.png and b/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY0_ICON.png differ
index 5be7802..45f58df 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY1_ICON.png and b/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY1_ICON.png differ
index 02e843d..c2c5cf9 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY2_ICON.png and b/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY2_ICON.png differ
index 5beb1b7..4e2179b 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY3_ICON.png and b/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY3_ICON.png differ
index 8d8a7db..65a5210 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY4_ICON.png and b/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY4_ICON.png differ
index ebb9d43..ee3b794 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY5_ICON.png and b/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY5_ICON.png differ
index 0b9282c..c530685 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY6_ICON.png and b/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY6_ICON.png differ
index 7c5b9d1..f60465e 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY7_ICON.png and b/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY7_ICON.png differ
index 40833b9..1d4a450 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY8_ICON.png and b/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY8_ICON.png differ
index 513fa90..6f741fd 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY9_ICON.png and b/2.sdk/project/K01/usr/static/IMAGE_NUMBER_KEY9_ICON.png differ
index 34df5ca..5372897 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_ALBUM.png and b/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_ALBUM.png differ
index 1139908..718931b 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_CALL.png and b/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_CALL.png differ
index 1931413..a2751b0 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_CAMERA.png and b/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_CAMERA.png differ
index bd4df36..df8b20d 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_CONTACTS.png and b/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_CONTACTS.png differ
index c6d7316..b68bc47 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_FRIEND.png and b/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_FRIEND.png differ
index 97e31cc..16b4a98 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_SETTINGS.png and b/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_SETTINGS.png differ
index f1e7f8d..f21fb32 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_SMS.png and b/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_SMS.png differ
index c2953ab..27af880 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_TOOLS.png and b/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_TOOLS.png differ
index 2b0610b..b1758d5 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_VIDEOCALL.png and b/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_VIDEOCALL.png differ
index 76f20ef..d46bb3c 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_WECHAT.png and b/2.sdk/project/K01/usr/static/IMAGE_ONE_PAGE_WECHAT.png differ
index 148edc4..c1992fd 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_SECMENU_ALARM.png and b/2.sdk/project/K01/usr/static/IMAGE_SECMENU_ALARM.png differ
index ed6a9b6..9595c45 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_SECMENU_COUNTDOWN.png and b/2.sdk/project/K01/usr/static/IMAGE_SECMENU_COUNTDOWN.png differ
index ee45af5..6a7ffef 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_SECMENU_STEP.png and b/2.sdk/project/K01/usr/static/IMAGE_SECMENU_STEP.png differ
index 1048f7e..f3f303e 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_SECMENU_STOPWATCH.png and b/2.sdk/project/K01/usr/static/IMAGE_SECMENU_STOPWATCH.png differ
index a7fa7dc..d83622f 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_SECMENU_WEATHER.png and b/2.sdk/project/K01/usr/static/IMAGE_SECMENU_WEATHER.png differ
index 85288c3..ff0a48e 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/IMAGE_STEP.png and b/2.sdk/project/K01/usr/static/IMAGE_STEP.png differ
index a5140fb..eab00ef 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/REDUCE_VOLUM_ICON.png and b/2.sdk/project/K01/usr/static/REDUCE_VOLUM_ICON.png differ
index 2def6f4..dfa38e5 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/RED_RETURN_PNG.png and b/2.sdk/project/K01/usr/static/RED_RETURN_PNG.png differ
index 4181128..a096aeb 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/R_1.png and b/2.sdk/project/K01/usr/static/R_1.png differ
index 306ee59..f543601 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/R_2.png and b/2.sdk/project/K01/usr/static/R_2.png differ
index 50740e1..e6f25df 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/R_3.png and b/2.sdk/project/K01/usr/static/R_3.png differ
index 3e2569f..b24d536 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/S_1.png and b/2.sdk/project/K01/usr/static/S_1.png differ
index e9121ab..63739b5 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/S_2.png and b/2.sdk/project/K01/usr/static/S_2.png differ
index c845959..60147fc 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/S_3.png and b/2.sdk/project/K01/usr/static/S_3.png differ
index a9aef5f..6675356 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/VOLUM_ADD_ICON.png and b/2.sdk/project/K01/usr/static/VOLUM_ADD_ICON.png differ
index 777b41b..a9d66e0 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/add_btn.png and b/2.sdk/project/K01/usr/static/add_btn.png differ
index a6cc75c..65a9882 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/album_delete.png and b/2.sdk/project/K01/usr/static/album_delete.png differ
index 63d2e01..72029ec 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/answer.png and b/2.sdk/project/K01/usr/static/answer.png differ
index 0c3c52e..ee98c24 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/bg.png and b/2.sdk/project/K01/usr/static/bg.png differ
index 6e1bf64..9a2c5bd 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/camera_album_btn.png and b/2.sdk/project/K01/usr/static/camera_album_btn.png differ
index 9474e7e..700f8d9 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/camera_btn.png and b/2.sdk/project/K01/usr/static/camera_btn.png differ
index a65d24d..9f20c37 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/cancel_icon.png and b/2.sdk/project/K01/usr/static/cancel_icon.png differ
index 6061f3e..7eb3ce9 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/charge_ing.png and b/2.sdk/project/K01/usr/static/charge_ing.png differ
index 3aa8d13..733781f 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/degree.png and b/2.sdk/project/K01/usr/static/degree.png differ
index 4efc00b..0deab22 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/find_phone.png and b/2.sdk/project/K01/usr/static/find_phone.png differ
index 73eeda8..755c83e 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/hang_up.png and b/2.sdk/project/K01/usr/static/hang_up.png differ
index 18a5b30..6f8d468 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/jia_icon.png and b/2.sdk/project/K01/usr/static/jia_icon.png differ
index 6219162..ba832c4 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/jing_icon.png and b/2.sdk/project/K01/usr/static/jing_icon.png differ
index bc148ea..2637193 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/low_power.png and b/2.sdk/project/K01/usr/static/low_power.png differ
index bbc70c3..ac5922d 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/menu_app_qrcode.png and b/2.sdk/project/K01/usr/static/menu_app_qrcode.png differ
index 1224966..e12b3a4 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/menu_bright.png and b/2.sdk/project/K01/usr/static/menu_bright.png differ
index dc80594..aa947ae 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/menu_calcut.png and b/2.sdk/project/K01/usr/static/menu_calcut.png differ
index d795565..26020ef 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/menu_imei_qrcode.png and b/2.sdk/project/K01/usr/static/menu_imei_qrcode.png differ
index b5c4c58..9ecc263 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/menu_poweroff.png and b/2.sdk/project/K01/usr/static/menu_poweroff.png differ
index 6476806..42692e0 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/menu_restart.png and b/2.sdk/project/K01/usr/static/menu_restart.png differ
index 384225d..1bc2225 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/menu_restore.png and b/2.sdk/project/K01/usr/static/menu_restore.png differ
index 4950c31..e5b4bed 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/menu_upgrade.png and b/2.sdk/project/K01/usr/static/menu_upgrade.png differ
index c930ad6..eff2cb4 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/menu_version.png and b/2.sdk/project/K01/usr/static/menu_version.png differ
index 9ca1011..593dbb0 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/menu_volume.png and b/2.sdk/project/K01/usr/static/menu_volume.png differ
index e4f7053..64401c2 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/menu_watch_switch.png and b/2.sdk/project/K01/usr/static/menu_watch_switch.png differ
index c360fde..36ac2fc 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/mpsignal1.png and b/2.sdk/project/K01/usr/static/mpsignal1.png differ
index 3342a22..d01eee4 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/mpsignal2.png and b/2.sdk/project/K01/usr/static/mpsignal2.png differ
index c17b197..be41a01 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/mpsignal3.png and b/2.sdk/project/K01/usr/static/mpsignal3.png differ
index b74b40e..74fcfcd 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/mpsignal4.png and b/2.sdk/project/K01/usr/static/mpsignal4.png differ
index 37d7d8f..2c1d381 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/mpsignal5.png and b/2.sdk/project/K01/usr/static/mpsignal5.png differ
index 0aa18c7..416aa33 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/off_icon.png and b/2.sdk/project/K01/usr/static/off_icon.png differ
index 22c723f..50aedb2 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/phnone_nine_icon.png and b/2.sdk/project/K01/usr/static/phnone_nine_icon.png differ
index 6b102c9..78244e2 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/phone_seven_icon.png and b/2.sdk/project/K01/usr/static/phone_seven_icon.png differ
index 507efb2..0c68dc9 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/play.png and b/2.sdk/project/K01/usr/static/play.png differ
index 0aca766..0c05af3 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/poweroff_icon.png and b/2.sdk/project/K01/usr/static/poweroff_icon.png differ
index 2cfe1b3..e7a58ce 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/pp_friend01.png and b/2.sdk/project/K01/usr/static/pp_friend01.png differ
index e48840b..72ee28e 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/pp_friend02.png and b/2.sdk/project/K01/usr/static/pp_friend02.png differ
index 43c42dc..6afe183 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/pp_friend03.png and b/2.sdk/project/K01/usr/static/pp_friend03.png differ
index c43c4aa..663cfcd 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/pp_friend04.png and b/2.sdk/project/K01/usr/static/pp_friend04.png differ
index ba93fc1..1b8140d 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/reduce_btn.png and b/2.sdk/project/K01/usr/static/reduce_btn.png differ
index 8b63239..6bf2cca 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/setting_power_restart.png and b/2.sdk/project/K01/usr/static/setting_power_restart.png differ
index c1e6161..359d37b 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/setting_poweroff.png and b/2.sdk/project/K01/usr/static/setting_poweroff.png differ
index 6593ff2..16457c6 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/setting_poweroff_bg.png and b/2.sdk/project/K01/usr/static/setting_poweroff_bg.png differ
index 028b3e1..6b656e6 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/stopwatch_play.png and b/2.sdk/project/K01/usr/static/stopwatch_play.png differ
index c5d7083..753f4b1 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/stopwatch_reset.png and b/2.sdk/project/K01/usr/static/stopwatch_reset.png differ
index f4100c7..88c0114 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/stopwatch_stop.png and b/2.sdk/project/K01/usr/static/stopwatch_stop.png differ
index a5d13a3..a298450 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/time_down.png and b/2.sdk/project/K01/usr/static/time_down.png differ
index 227e30d..e80880d 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/time_finish.png and b/2.sdk/project/K01/usr/static/time_finish.png differ
index 3c7d2bb..40f50b9 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/time_up.png and b/2.sdk/project/K01/usr/static/time_up.png differ
index f5a9284..113b82b 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/time_up1.png and b/2.sdk/project/K01/usr/static/time_up1.png differ
index 1e1edf0..209085d 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/time_up2.png and b/2.sdk/project/K01/usr/static/time_up2.png differ
index 40559aa..7b840a6 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/ui_setting.png and b/2.sdk/project/K01/usr/static/ui_setting.png differ
index ba111eb..7a9d002 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/up_show_step.png and b/2.sdk/project/K01/usr/static/up_show_step.png differ
index 8f33d01..fabc9d4 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/update.png and b/2.sdk/project/K01/usr/static/update.png differ
index ad10398..ce3548e 100644 (file)
Binary files a/2.sdk/project/K01/usr/static/vbat_0.png and b/2.sdk/project/K01/usr/static/vbat_0.png differ
diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/versions.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/versions.py
new file mode 100644 (file)
index 0000000..4fb3b88
--- /dev/null
@@ -0,0 +1,2 @@
+Version="V1.0" 
+Build_Time="2023-12-23 17:47:35" 
diff --git a/2.sdk/project/S6/sdk/services/microPython/ports/quectel/core/versions.py b/2.sdk/project/S6/sdk/services/microPython/ports/quectel/core/versions.py
new file mode 100644 (file)
index 0000000..1e1e9ef
--- /dev/null
@@ -0,0 +1,2 @@
+Version="K5_V1.0" 
+Build_Time="2023-11-24 16:27:16"