From: dxy15521469561 <1731678236@qq.com> Date: Fri, 5 Jan 2024 11:54:16 +0000 (+0800) Subject: D15: X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=810d772962c68b841bd887422c5a0230bd3d9f8b;p=mirrors%2FASR1603_G5.git D15: 需求更改 --- diff --git a/2.sdk/Helios_SDK/services/microPython/lib/lvgl/src/hal/lv_hal_indev.h b/2.sdk/Helios_SDK/services/microPython/lib/lvgl/src/hal/lv_hal_indev.h index 2d96330b..1601d9c2 100644 --- a/2.sdk/Helios_SDK/services/microPython/lib/lvgl/src/hal/lv_hal_indev.h +++ b/2.sdk/Helios_SDK/services/microPython/lib/lvgl/src/hal/lv_hal_indev.h @@ -41,6 +41,10 @@ extern "C" { #define LV_INDEV_DEF_X_SLIDING_SPEED 100 #endif +#if PROJECT_NAME_G5_K5 +#define LV_INDEV_DEF_X_SLIDING_SPEED 100 +#endif + /*Long press time in milliseconds. *Time to send `LV_EVENT_LONG_PRESSSED`)*/ #define LV_INDEV_DEF_LONG_PRESS_TIME 400 diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py index 7284fe90..2ea56eac 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/protocol.py @@ -1785,14 +1785,17 @@ class SCREEN_SHOWProtoCol(ProtoCol): count = 3 for i in range(count): if i == 0: - screen_school_data = lst[0] - EventMesh.publish("set_schoolname", screen_school_data)# + if len(str(lst[0])) != 0: + screen_school_data = lst[0] + EventMesh.publish("set_schoolname", screen_school_data)# elif i == 1: - screen_class_data = lst[1] - EventMesh.publish("set_classname", screen_class_data)# + if len(str(lst[1])) != 0: + screen_class_data = lst[1] + EventMesh.publish("set_classname", screen_class_data)# else: - screen_fullname_data= lst[2] - EventMesh.publish("set_fullname", screen_fullname_data)# + if len(str(lst[2])) != 0: + screen_fullname_data= lst[2] + EventMesh.publish("set_fullname", screen_fullname_data)# EventMesh.publish("update_screen_show")#更新开屏显示 diff --git a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py index 2a319278..ef4a72bc 100644 --- a/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py +++ b/2.sdk/project/C06S/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py @@ -791,18 +791,27 @@ class WatchFace3(): pass school=EventMesh.publish("get_schoolname") if school != None: - watchface3_school_label.set_text(str(school)) + if len(str(school)) != 0: + watchface3_school_label.set_text(str(school)) + else: + watchface3_school_label.set_text(' ') else: watchface3_school_label.set_text(' ') class_name = EventMesh.publish("get_classname") if class_name != None: - watchface3_class_label.set_text(str(class_name)) + if len(str(class_name)) != 0: + watchface3_class_label.set_text(str(class_name)) + else: + watchface3_class_label.set_text(' ') else: watchface3_class_label.set_text(' ') fullname = EventMesh.publish("get_fullname") if fullname != None: - watchface3_fullname_label.set_text(str(fullname)) + if len(str(fullname)) != 0: + watchface3_fullname_label.set_text(str(fullname)) + else: + watchface3_fullname_label.set_text(' ') else: watchface3_fullname_label.set_text(' ') diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/EventMesh.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/EventMesh.py index 3eeb250e..193be7b0 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/EventMesh.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/EventMesh.py @@ -3,7 +3,7 @@ import usys import versions import ql_fs -model = "D10_" +model = "D15_" # model = "G10W_DT_YBX_" diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py index e87b7312..922a2f8c 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/btn_device_ec800m.py @@ -197,7 +197,8 @@ if EventMesh.model == "D10_" : 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_wechat_state", self.get_wechat_state)#获取微聊状态 + EventMesh.subscribe("set_wechat_state", self.set_wechat_state)#设置微聊状态 EventMesh.subscribe("get_power_on_state", self.get_power_on_state)#获取开机标识 @@ -1142,7 +1143,6 @@ if EventMesh.model == "D10_" : 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:#电话通话中 或者呼叫中挂断中断 @@ -1197,11 +1197,11 @@ if EventMesh.model == "D10_" : 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: - + EventMesh.publish("close_hr_sop2")# # 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) @@ -1228,12 +1228,23 @@ if EventMesh.model == "D10_" : # 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) + # self.pwk_timer1.start(3000,0,self.power_off_audio_cb) + EventMesh.publish("close_hr_sop2")# + # EventMesh.debug_log("power_off_audio_cb") + self.aud.stop() + 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) elif msg == 3: flag = EventMesh.publish("get_call_state") if flag != 0:#电话呼叫中 self.call_state = 0 voiceCall.callEnd() + EventMesh.publish("close_hr_sop2")# + self.aud.stop() 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) @@ -1246,6 +1257,7 @@ if EventMesh.model == "D10_" : if flag != 0:#电话呼叫中 self.call_state = 0 voiceCall.callEnd() + EventMesh.publish("close_hr_sop2")# EventMesh.publish("stop_led_timer")#设置参数 self.power_off = 1 ret = 0 @@ -1280,7 +1292,12 @@ if EventMesh.model == "D10_" : 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)#不需要关机铃声 + + EventMesh.publish("close_hr_sop2")# + 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) + # self.pwk_timer1.start(3000,0,self.power_off_no_audio_cb)#不需要关机铃声 def fun(self,*argc): self.aud.stopPlayStream() @@ -1300,6 +1317,7 @@ if EventMesh.model == "D10_" : power_state = 0 # print("power_state",power_state) if power_state <= 0: + self.aud.stop() 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) @@ -1313,6 +1331,7 @@ if EventMesh.model == "D10_" : def power_off_audio_cb(self, msg): # EventMesh.debug_log("power_off_audio_cb") + self.aud.stop() 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) @@ -1691,10 +1710,12 @@ if EventMesh.model == "D10_" : pass else: EventMesh.publish("close_timer_all")# + EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_WHITE,10,5,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) else:#未插卡 EventMesh.publish("close_timer_all")# + 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) @@ -1995,6 +2016,8 @@ if EventMesh.model == "D10_" : self.press_btn = 0 def get_wechat_state(self, event, msg): return self.press_btn + def set_wechat_state(self, event, msg): + self.press_btn = msg def send_wechat_record(self, event, msg): #发送录音文件 if self.press_btn == 1: @@ -2044,6 +2067,9 @@ if EventMesh.model == "D10_" : # fd.readinto(buf) # senddata = [self.countdown_old,buf] # EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata) + else: + self.press_btn = 0 + def play_wechat_last_amr(self, event, msg):#播放微聊最后一条语音文件 @@ -2175,11 +2201,12 @@ if EventMesh.model == "D10_" : self.sosKey_timer = osTimer() self.sosKey_count = 0 self.sosKey_press = 0 + self.sosKey_long_press = 0 self.wechatKey_press_count = 0 self.timeSeconOld = 0 - self.wechat_state = 1 #按下录音时的状态 + self.wechat_state = 0 #按下录音时的状态 self.sosKey_press_count = 0 @@ -2244,28 +2271,27 @@ if EventMesh.model == "D10_" : 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 + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 - if open_power != None: - if open_power == 0: + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: 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.WeChatKey_status = self.wechatKey.read_level() if self.sosKey_status != 0 and self.WeChatKey_status != 0: if self.GPIO26_status == 0:#按下 + EventMesh.publish("close_wechat_btn_timer") if self.pwkey_press == 0 : self.aud.stop() #播放声音 # self.wechatKey_timeout_cb(0) @@ -2273,10 +2299,13 @@ if EventMesh.model == "D10_" : 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.sosKey_long_press = 0 self.wechatKey_press = 0 + self.wechat_state = 0 + self.wechatKey_press_count = 0 self.pwkey_press = 1 self.pwkey_count = 0 @@ -2286,6 +2315,17 @@ if EventMesh.model == "D10_" : def pwKey_press_cb(self, data): '''KEY2:联动屏幕右下角或返回键长按关机''' + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.pwkey_timer.stop() + self.pwkey_count = 0 + self.pwkey_press = 0 + self.led_state = 0 + self.pwKey_press_count=0 + return + self.GPIO26_status = self.extint.read_level() if self.pwkey_press == 1 : self.pwkey_count += 1 if self.pwkey_count > 5: @@ -2381,8 +2421,35 @@ if EventMesh.model == "D10_" : except Exception as e: usys.print_exception(e) + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.pwkey_timer.stop() + self.pwkey_count = 0 + self.pwkey_press = 0 + self.led_state = 0 + self.pwKey_press_count=0 + return if self.pwKey_press_count >= 1: self.pwKey_press_count = 0 + + # flag = EventMesh.publish("get_call_state") + # if flag != 2:#如果是电话拨出去或者不在打电话中都可以执行 + # EventMesh.publish("stop_led_timer")#设置参数 + # 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 == 0 or flag == 2:#在拨出去或者通话中就不播报入网成功的语音 + # if flag != 1:#在拨出去或者通话中就不播报入网成功的语音 + # EventMesh.publish("set_sim_mode")# + # EventMesh.publish("dialing_out_event")#电话呼叫中voiceCall.callEnd() + # EventMesh.debug_log("pwKey_timeout_cb:self.pwKey_press_count >= 1") flag = EventMesh.publish("get_call_state") if flag != 2: @@ -2404,12 +2471,9 @@ if EventMesh.model == "D10_" : 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: + if power_off != None and open_power != None: + if power_off == 1 or open_power == 0: return # self.sosKey_status = self.sosKey.read_level() self.sosKey_status = int(args[1]) @@ -2418,27 +2482,44 @@ if EventMesh.model == "D10_" : 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]:上升沿或下降沿 + # wechat_state = EventMesh.publish("get_wechat_state") + # EventMesh.debug_log('### key22_extint_cb {} {} self.GPIO22_status:{} {} {}'.format(wechat_state,args,self.WeChatKey_status,self.GPIO26_status,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短按事件 + EventMesh.publish("close_wechat_btn_timer") 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.wechat_state = 0 + self.wechatKey_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_press = 1 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:联动屏幕右下角或返回键长按关机''' + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.sosKey_timer.stop() + self.sosKey_count = 0 + self.sosKey_press = 0 + self.sosKey_long_press = 0 + self.sosKey_press_count = 0 + return + self.sosKey_status = self.sosKey.read_level() if self.sosKey_press == 1 : # if self.sosKey_count <= 2: # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音 @@ -2447,17 +2528,21 @@ if EventMesh.model == "D10_" : # 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 + if self.sosKey_long_press == 0: + self.sosKey_long_press = 1 + 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 + if self.sosKey_status == 1:#松开 + self.sosKey_count = 0 + self.sosKey_long_press = 0 + self.sosKey_press = 0 + self.sosKey_timer.stop() + return # EventMesh.debug_log("self.sosKey_count {}",self.sosKey_count) if self.sosKey_status == 1:#松开 @@ -2465,11 +2550,22 @@ if EventMesh.model == "D10_" : self.sosKey_timer.stop() self.sosKey_count = 0 self.sosKey_press = 0 + self.sosKey_long_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):# + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.sosKey_timer.stop() + self.sosKey_count = 0 + self.sosKey_press = 0 + self.sosKey_long_press = 0 + self.sosKey_press_count = 0 + return # EventMesh.debug_log("sosKey_press_count!!!!!!!!!!!!!! ",self.sosKey_press_count) flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备 fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识 @@ -2530,13 +2626,10 @@ if EventMesh.model == "D10_" : 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: + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: return fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识 if fall_down != None: @@ -2549,7 +2642,8 @@ if EventMesh.model == "D10_" : 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]:上升沿或下降沿 + + # EventMesh.debug_log('### wechatKey_extint_cb {} {} self.WeChatKey_status:{} {} {}'.format(wechat_state,args,self.sosKey_status,self.GPIO26_status,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: @@ -2559,14 +2653,19 @@ if EventMesh.model == "D10_" : self.pwkey_timer.stop() self.sosKey_timer.stop() self.sosKey_press_count = 0 + self.sosKey_long_press = 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.wechat_state = 0 self.wechatKey_timer.start(100, 1, self.publish_wechat_btn_event_cb) + else: + # EventMesh.debug_log('### wechatKey_extint_cb end') + EventMesh.publish("close_wechat_btn_timer") + def close_wechat_btn_timer(self,event,*argc): tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳 @@ -2579,7 +2678,9 @@ if EventMesh.model == "D10_" : self.wechatKey_timer.stop() self.wechatKey_count = 0 self.wechatKey_press = 0 + self.wechat_state = 0 self.wechatKey_press_count=0 + date_tmp = utime.localtime() time_tmp = utime.mktime(date_tmp) time_sec = tmp[1] @@ -2593,6 +2694,18 @@ if EventMesh.model == "D10_" : def wechatKey_press_cb(self,data): + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.wechatKey_timer.stop() + self.wechatKey_count = 0 + self.wechatKey_press = 0 + self.wechat_state = 0 + self.wechatKey_press_count=0 + return + self.WeChatKey_status = self.wechatKey.read_level() + # print("100ms self.WeChatKey_status",self.WeChatKey_status) wechat_time = 0 tmp = None time_sec = 0 @@ -2603,16 +2716,16 @@ if EventMesh.model == "D10_" : if self.wechatKey_press == 1 :#是否按下 tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳 self.wechatKey_count += 1 - if self.wechatKey_count >= 10: #长按1s进入微聊录音 + if self.wechatKey_count >= 15: #长按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开始录音 + if self.wechat_state == 0:#按下超过s开始录音 EventMesh.publish("start_wechat_record")#开始录音 - self.wechat_state = 0 + self.wechat_state = 1 else: self.wechat_state = 0 self.wechatKey_timer.stop() @@ -2623,7 +2736,7 @@ if EventMesh.model == "D10_" : return if self.WeChatKey_status == 0:#未松手超过15s啧停止录音 - if self.wechat_state == 0: + if self.wechat_state == 1: if tmp != None: if tmp[0] != 0: time_sec = tmp[1] @@ -2636,11 +2749,12 @@ if EventMesh.model == "D10_" : self.wechatKey_timer.stop() self.wechatKey_count = 0 self.wechatKey_press = 0 + self.wechat_state = 0 self.wechatKey_press_count=0 return else: if self.WeChatKey_status == 1: - if self.wechat_state == 0:#如果按下时长超过1s且小于长按的时间也认为是录微聊 + if self.wechat_state == 1:#如果按下时长超过1s且小于长按的时间也认为是录微聊 if tmp != None: if tmp[0] != 0: time_sec = tmp[1] @@ -2654,19 +2768,23 @@ if EventMesh.model == "D10_" : self.wechatKey_count = 0 self.wechatKey_press = 0 + self.wechat_state = 0 self.wechatKey_press_count=0 return else: self.wechatKey_timer.stop() self.wechatKey_count = 0 + self.wechat_state = 0 self.wechatKey_press = 0 self.wechatKey_press_count=0 + 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.wechat_state = 0 self.wechatKey_press_count+=1 self.wechatKey_timer.start(500, 0, self.publish_wechatKey_btn_event_cb)#松手超时1s判断 @@ -2674,6 +2792,16 @@ if EventMesh.model == "D10_" : EventMesh.publish("publish_message_event_btnInfo",{"func":self.wechatKey_timeout_cb,"data":0}) def wechatKey_timeout_cb(self,data):#微聊键 + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.wechatKey_timer.stop() + self.wechatKey_count = 0 + self.wechatKey_press = 0 + self.wechat_state = 0 + self.wechatKey_press_count=0 + return flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备 fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识 if self.wechatKey_press_count > 1:# 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 index 8790518d..cc5abada 100644 --- 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 @@ -1204,7 +1204,7 @@ if EventMesh.model == "D15_" : def open_power_on(self, event, msg): #msg 1 开机 2 关机 3 重启 4恢复出厂设置 5静音关机 EventMesh.publish("close_timer_all")# if msg == 1: - + EventMesh.publish("close_hr_sop2")# # 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) @@ -1231,12 +1231,23 @@ if EventMesh.model == "D15_" : # 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) + # self.pwk_timer1.start(3000,0,self.power_off_audio_cb) + EventMesh.publish("close_hr_sop2")# + # EventMesh.debug_log("power_off_audio_cb") + self.aud.stop() + 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) elif msg == 3: flag = EventMesh.publish("get_call_state") if flag != 0:#电话呼叫中 self.call_state = 0 voiceCall.callEnd() + EventMesh.publish("close_hr_sop2")# + self.aud.stop() 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) @@ -1249,6 +1260,7 @@ if EventMesh.model == "D15_" : if flag != 0:#电话呼叫中 self.call_state = 0 voiceCall.callEnd() + EventMesh.publish("close_hr_sop2")# EventMesh.publish("stop_led_timer")#设置参数 self.power_off = 1 ret = 0 @@ -1283,7 +1295,14 @@ if EventMesh.model == "D15_" : 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)#不需要关机铃声 + + EventMesh.publish("close_hr_sop2")# + 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) + # self.pwk_timer1.start(3000,0,self.power_off_no_audio_cb)#不需要关机铃声 + + def fun(self,*argc): self.aud.stopPlayStream() @@ -1303,6 +1322,7 @@ if EventMesh.model == "D15_" : power_state = 0 # print("power_state",power_state) if power_state <= 0: + self.aud.stop() 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) @@ -1316,6 +1336,7 @@ if EventMesh.model == "D15_" : def power_off_audio_cb(self, msg): # EventMesh.debug_log("power_off_audio_cb") + self.aud.stop() 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) @@ -1726,10 +1747,12 @@ if EventMesh.model == "D15_" : pass else: EventMesh.publish("close_timer_all")# + EventMesh.publish("set_led_time_arg",[1,2,10,led_mode.FLASH_LIGHT_WHITE,10,5,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) else:#未插卡 EventMesh.publish("close_timer_all")# + 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) @@ -2079,7 +2102,8 @@ if EventMesh.model == "D15_" : # fd.readinto(buf) # senddata = [self.countdown_old,buf] # EventMesh.publish(constants.PROTOCOL.TKS_SEND,senddata) - + else: + self.press_btn = 0 def play_wechat_last_amr(self, event, msg):#播放微聊最后一条语音文件 flag = EventMesh.publish("get_call_state") @@ -2196,7 +2220,7 @@ if EventMesh.model == "D15_" : 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 @@ -2215,14 +2239,13 @@ if EventMesh.model == "D15_" : self.wechatKey_press_count = 0 self.timeSeconOld = 0 - self.wechat_state = 1 #按下录音时的状态 + self.wechat_state = 0 #按下录音时的状态 self.sosKey_press_count = 0 - self.pwk_key = 0 - self.GPIO26_status = 1 + self.extint_22 = 0 self.GPIO22_status = 1 @@ -2248,6 +2271,8 @@ if EventMesh.model == "D15_" : self.pwkey_timer = osTimer() + self.pwk_key = 0 + self.GPIO26_status = 1 self.pwKey_press_count = 0 self.pwkey_count = 0 self.pwkey_press = 0 @@ -2311,26 +2336,15 @@ if EventMesh.model == "D15_" : 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.GPIO22, 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 + def key17_extint_cb(self,args):#call 1 open_power = EventMesh.publish("get_power_on_state")#获取开机标识 - if open_power != None: - if open_power == 0: + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: return fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识 flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备 @@ -2338,24 +2352,25 @@ if EventMesh.model == "D15_" : if fall_down != 0: return - self.KeyCall2_status = int(args[1]) + self.KeyCall1_status = int(args[1]) # EventMesh.txt_log('self.KeyCall2_level :{}'.format(args,self.KeyCall2_status,GPIO17_status)) - if self.KeyCall2_status == 0: - self.KeyCall2_status = 1 + if self.KeyCall1_status == 0: + self.KeyCall1_status = 1 else: - self.KeyCall2_status = 0 + self.KeyCall1_status = 0 pass self.WeChatKey_status = self.wechatKey.read_level() self.GPIO26_status = self.pwk_key26.read_level() - self.KeyCall1_status = self.extint_19.read_level() + self.KeyCall2_status = self.extint_19.read_level() self.sosKey_status = self.sosKey.read_level() - EventMesh.debug_log('key17_extint_cb1',args,self.KeyCall2_status,self.Keycall2_press,self.Keycall2_long_press) + # EventMesh.debug_log('key17_extint_cb1',args,self.KeyCall2_status,self.Keycall2_press,self.Keycall2_long_press) # EventMesh.debug_log('key17_extint_cb2',self.Keycall2_press) # args[0]:gpio号 args[1]:上升沿或下降沿 # EventMesh.debug_log('key17_extint_cb',args,self.KeyCall2_status,self.WeChatKey_status,self.GPIO26_status,self.KeyCall1_status,self.sosKey_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 : + 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:#按下 + EventMesh.publish("close_wechat_btn_timer") + if self.Keycall1_press == 0 : self.wechatKey_timer.stop() self.pwkey_timer.stop() self.sosKey_timer.stop() @@ -2375,24 +2390,36 @@ if EventMesh.model == "D15_" : self.wechatKey_count = 0 self.wechatKey_press = 0 self.wechatKey_press_count=0#微聊键 - - self.Keycall1_count = 0 - self.Keycall1_press = 0 - self.Keycall1_press_count = 0#call 1键 - self.Keycall1_long_press = 0 + self.wechat_state = 0 self.Keycall2_count = 0 - self.Keycall2_press = 1 + self.Keycall2_press = 0 + self.Keycall2_press_count = 0#call 2键 self.Keycall2_long_press = 0 - self.Keycall2_timer.start(200, 1, self.publish_call2key_btn_event_cb) - def call2Key_press_cb(self, data): + self.Keycall1_count = 0 + self.Keycall1_press = 1 + self.Keycall1_long_press = 0 + self.Keycall1_timer.start(100, 1, self.publish_call1key_btn_event_cb) + + def call1Key_press_cb(self, data): + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.Keycall1_timer.stop() + self.Keycall1_count = 0 + self.Keycall1_press = 0 + self.Keycall1_press_count+=1 + self.Keycall1_long_press = 0 + return '''KEY2:联动屏幕右下角或返回键长按关机''' - if self.Keycall2_press == 1 : - self.Keycall2_count += 1 - if self.Keycall2_count >= 10*3: #长按3s - if self.Keycall2_long_press == 0: - self.Keycall2_long_press = 1 + self.KeyCall1_status = self.extint_17.read_level() + if self.Keycall1_press == 1 : + self.Keycall1_count += 1 + if self.Keycall1_count >= 10*3: #长按3s + if self.Keycall1_long_press == 0: + self.Keycall1_long_press = 1 flag = EventMesh.publish("get_call_state")#获取通话状态 fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识 if fall_down != None: @@ -2402,38 +2429,48 @@ if EventMesh.model == "D15_" : EventMesh.publish("call_phonebook_num",1) return - if self.KeyCall2_status == 1: - self.Keycall2_count = 0 - self.Keycall2_press = 0 - self.Keycall2_press_count = 0 - self.Keycall2_long_press = 0 - self.Keycall2_timer.stop() + if self.KeyCall1_status == 1: + self.Keycall1_count = 0 + self.Keycall1_press = 0 + self.Keycall1_press_count = 0 + self.Keycall1_long_press = 0 + self.Keycall1_timer.stop() return - if self.KeyCall2_status == 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判断 + if self.KeyCall1_status == 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_call2Key_timeout_cb_do(self, *args, **kwargs): - EventMesh.publish("publish_message_event_btnInfo",{"func":self.call2Key_timeout_cb,"data":0}) + def publish_call1Key_timeout_cb_do(self, *args, **kwargs): + EventMesh.publish("publish_message_event_btnInfo",{"func":self.call1Key_timeout_cb,"data":0}) - def call2Key_timeout_cb(self, data):# + def call1Key_timeout_cb(self, data):# + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.Keycall1_timer.stop() + self.Keycall1_count = 0 + self.Keycall1_press = 0 + self.Keycall1_press_count+=1 + self.Keycall1_long_press = 0 + return flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备 fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识 # print("call2Key_timeout_cb",self.Keycall2_press_count,flag) - if self.Keycall2_press_count > 1:# + if self.Keycall1_press_count > 1:# if fall_down != None: if fall_down != 0 or flag != 0:#在打电话或者跌倒报警提醒中不允许按键触发 - self.Keycall2_press_count = 0 + self.Keycall1_press_count = 0 return - if self.Keycall2_press_count == 3:#心率血压测试 - self.Keycall2_press_count = 0 + if self.Keycall1_press_count == 3:#心率血压测试 + self.Keycall1_press_count = 0 call_state = EventMesh.publish("get_call_state") battery = EventMesh.publish("screen_get_battery") if call_state == None: @@ -2443,8 +2480,8 @@ if EventMesh.model == "D15_" : if battery[0] != "1":#在充电得时候 EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish("set_manual_measure_mode",1)# - elif self.Keycall2_press_count == 1:# - self.Keycall2_press_count = 0 + elif self.Keycall1_press_count == 1:# + self.Keycall1_press_count = 0 EventMesh.publish("stop_led_timer")#设置参数 call_state = EventMesh.publish("get_call_state") if call_state == 2:#电话拨进需要接听 @@ -2453,39 +2490,37 @@ if EventMesh.model == "D15_" : EventMesh.publish("play_cur_step_event")##播放当前步数 - self.Keycall2_press_count = 0 + self.Keycall1_press_count = 0 - def key19_extint_cb(self,args):#call 1 + def key19_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: + if power_off != None and open_power != None: + if power_off == 1 or 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: return - self.KeyCall1_status = int(args[1]) - if self.KeyCall1_status == 0: - self.KeyCall1_status = 1 + self.KeyCall2_status = int(args[1]) + if self.KeyCall2_status == 0: + self.KeyCall2_status = 1 else: - self.KeyCall1_status = 0 + self.KeyCall2_status = 0 pass self.WeChatKey_status = self.wechatKey.read_level() self.GPIO26_status = self.pwk_key26.read_level() - self.KeyCall2_status = self.extint_17.read_level() + self.KeyCall1_status = self.extint_17.read_level() self.sosKey_status = self.sosKey.read_level() # EventMesh.debug_log('key19_extint_cb ',args,self.KeyCall1_status,self.GPIO26_status,self.WeChatKey_status,self.sosKey_status,self.KeyCall2_status,self.GPIO26_status) # args[0]:gpio号 args[1]:上升沿或下降沿 # EventMesh.debug_log('self.KeyCall1_status :{}',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 : + 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:#按下 + EventMesh.publish("close_wechat_btn_timer") + if self.Keycall2_press == 0 : self.wechatKey_timer.stop() self.pwkey_timer.stop() self.sosKey_timer.stop() @@ -2505,24 +2540,37 @@ if EventMesh.model == "D15_" : self.wechatKey_count = 0 self.wechatKey_press = 0 self.wechatKey_press_count=0 + self.wechat_state = 0 + self.Keycall1_count = 0 + self.Keycall1_press = 0 + self.Keycall1_press_count = 0 + self.Keycall1_long_press = 0 + self.Keycall2_count = 0 - self.Keycall2_press = 0 - self.Keycall2_press_count = 0 + self.Keycall2_press = 1 self.Keycall2_long_press = 0 + self.Keycall2_timer.start(100, 1, self.publish_call2key_btn_event_cb) - self.Keycall1_count = 0 - self.Keycall1_press = 1 - self.Keycall1_long_press = 0 - self.Keycall1_timer.start(100, 1, self.publish_call1key_btn_event_cb) + def call2Key_press_cb(self, data): - def call1Key_press_cb(self, data): '''KEY2:联动屏幕右下角或返回键长按关机''' - if self.Keycall1_press == 1 : - self.Keycall1_count += 1 - if self.Keycall1_count >= 10*3: #长按3s - if self.Keycall1_long_press == 0: - self.Keycall1_long_press = 1 + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.Keycall2_timer.stop() + self.Keycall2_count = 0 + self.Keycall2_press = 0 + self.Keycall2_press_count=0 + self.Keycall2_long_press = 0 + return + self.KeyCall2_status = self.extint_19.read_level() + if self.Keycall2_press == 1 : + self.Keycall2_count += 1 + if self.Keycall2_count >= 10*3: #长按3s + if self.Keycall2_long_press == 0: + self.Keycall2_long_press = 1 flag = EventMesh.publish("get_call_state")#获取通话状态 fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识 if fall_down != None: @@ -2531,38 +2579,47 @@ if EventMesh.model == "D15_" : EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish("call_phonebook_num",2) return - if self.KeyCall1_status == 1:#松开 - self.Keycall1_count = 0 - self.Keycall1_press = 0 - self.Keycall1_press_count = 0 - self.Keycall1_long_press = 0 - self.Keycall1_timer.stop() + if self.KeyCall2_status == 1:#松开 + self.Keycall2_count = 0 + self.Keycall2_press = 0 + self.Keycall2_press_count = 0 + self.Keycall2_long_press = 0 + self.Keycall2_timer.stop() return - if self.KeyCall1_status == 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判断 + if self.KeyCall2_status == 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_call1Key_timeout_cb_do(self, *args, **kwargs): - EventMesh.publish("publish_message_event_btnInfo",{"func":self.call1Key_timeout_cb,"data":0}) + def publish_call2Key_timeout_cb_do(self, *args, **kwargs): + EventMesh.publish("publish_message_event_btnInfo",{"func":self.call2Key_timeout_cb,"data":0}) - def call1Key_timeout_cb(self, data):# + def call2Key_timeout_cb(self, data):# + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.Keycall2_timer.stop() + self.Keycall2_count = 0 + self.Keycall2_press = 0 + self.Keycall2_press_count=0 + return flag = EventMesh.publish("get_call_state")#获取通话状态 fall_down = EventMesh.publish("get_fall_down_state")#获取跌倒报警标识 # print("call1Key_timeout_cb",self.Keycall1_press_count,flag) - if self.Keycall1_press_count > 1:# + if self.Keycall2_press_count > 1:# if fall_down != None: if fall_down != 0 or flag != 0:#在打电话或者跌倒报警提醒中不允许按键触发 - self.Keycall1_press_count = 0 + self.Keycall2_press_count = 0 return - if self.Keycall1_press_count == 3:#测试体温 - self.Keycall1_press_count = 0 + if self.Keycall2_press_count == 3:#测试体温 + self.Keycall2_press_count = 0 call_state = EventMesh.publish("get_call_state") battery = EventMesh.publish("screen_get_battery") if call_state == None: @@ -2572,8 +2629,8 @@ if EventMesh.model == "D15_" : if battery[0] != "1":#在充电得时候 EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish("set_manual_measure_mode",3)#测量体温 - elif self.Keycall1_press_count == 1:# - self.Keycall1_press_count = 0 + elif self.Keycall2_press_count == 1:# + self.Keycall2_press_count = 0 EventMesh.publish("stop_led_timer")#设置参数 call_state = EventMesh.publish("get_call_state") if call_state == 2:#电话拨进需要接听 @@ -2581,20 +2638,16 @@ if EventMesh.model == "D15_" : return EventMesh.publish("play_battery_level_value")#播放当前电量 - self.Keycall1_press_count = 0 + self.Keycall2_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: + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: return flag = EventMesh.publish("get_call_state")#获取通话状态 fall_down = EventMesh.publish("get_fall_down_state")#获取跌倒报警标识 @@ -2615,8 +2668,8 @@ if EventMesh.model == "D15_" : # 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:#按下 + EventMesh.publish("close_wechat_btn_timer") if self.pwkey_press == 0 : self.aud.stop() #播放声音 self.wechatKey_timer.stop() @@ -2633,10 +2686,12 @@ if EventMesh.model == "D15_" : self.wechatKey_count = 0 self.wechatKey_press = 0 self.wechatKey_press_count=0 + self.wechat_state = 0 self.pwkey_press = 1 self.pwkey_count = 0 + self.led_state = 0 self.Keycall1_count = 0 self.Keycall1_press = 0 @@ -2655,7 +2710,19 @@ if EventMesh.model == "D15_" : def pwKey_press_cb(self, data): + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.pwkey_timer.stop() + self.pwkey_count = 0 + self.pwkey_press = 0 + self.led_state = 0 + self.pwKey_press_count=0 + return '''KEY2:联动屏幕右下角或返回键长按关机''' + self.GPIO26_status = self.pwk_key26.read_level() + if self.pwkey_press == 1 : self.pwkey_count += 1 if self.pwkey_count > 5: @@ -2751,11 +2818,37 @@ if EventMesh.model == "D15_" : except Exception as e: usys.print_exception(e) + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.pwkey_timer.stop() + self.pwkey_count = 0 + self.pwkey_press = 0 + self.led_state = 0 + self.pwKey_press_count=0 + return + 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")#设置参数 + # 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 == 0 or flag == 2:#在拨出去或者通话中就不播报入网成功的语音 + # if flag != 1:#在拨出去或者通话中就不播报入网成功的语音 + # EventMesh.publish("set_sim_mode")# + # EventMesh.publish("dialing_out_event")#电话呼叫中voiceCall.callEnd() + flag = EventMesh.publish("get_call_state") - if flag != 2:#如果是电话拨出去或者不在打电话中都可以执行 + if flag != 2: EventMesh.publish("stop_led_timer")#设置参数 EventMesh.publish("dialing_out_event")#电话呼叫中voiceCall.callEnd() @@ -2774,12 +2867,9 @@ if EventMesh.model == "D15_" : 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: + if power_off != None and open_power != None: + if power_off == 1 or open_power == 0: return self.sosKey_status = int(args[1]) if self.sosKey_status == 0: @@ -2797,6 +2887,7 @@ if EventMesh.model == "D15_" : 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")#关闭跌倒报警提醒事件 + EventMesh.publish("close_wechat_btn_timer") if self.sosKey_press == 0 : self.wechatKey_timer.stop() self.pwkey_timer.stop() @@ -2813,6 +2904,7 @@ if EventMesh.model == "D15_" : self.wechatKey_count = 0 self.wechatKey_press = 0 + self.wechat_state = 0 self.wechatKey_press_count=0#微聊键 @@ -2836,6 +2928,17 @@ if EventMesh.model == "D15_" : def sosKey_press_cb(self, data): '''KEY2:联动屏幕右下角或返回键长按关机''' + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.sosKey_timer.stop() + self.sosKey_count = 0 + self.sosKey_press = 0 + self.sosKey_long_press = 0 + self.sosKey_press_count = 0 + return + self.sosKey_status = self.sosKey.read_level() if self.sosKey_press == 1 : # if self.sosKey_count <= 2: # if EventMesh.publish(constants.EVENT.GET_CONNECT) == 1:#未联网不需要录音 @@ -2866,6 +2969,7 @@ if EventMesh.model == "D15_" : self.sosKey_timer.stop() self.sosKey_count = 0 self.sosKey_press = 0 + self.sosKey_long_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): @@ -2876,6 +2980,16 @@ if EventMesh.model == "D15_" : # 4、短按六次,播报IMEI号 # 5、短按十次,解绑APP,同时恢复出厂设置 def sosKey_timeout_cb(self, data):# + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.sosKey_timer.stop() + self.sosKey_count = 0 + self.sosKey_press = 0 + self.sosKey_long_press = 0 + self.sosKey_press_count = 0 + return if NEW_ENABLE == 1:#旧的按键定义 # EventMesh.debug_log("sosKey_press_count!!!!!!!!!!!!!! ",self.sosKey_press_count) flag = EventMesh.publish("get_call_state")#获取通话状态 @@ -3002,12 +3116,9 @@ if EventMesh.model == "D15_" : 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: + if power_off != None and open_power != None: + if power_off != 0 or open_power == 0: return fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识 if fall_down != None: @@ -3028,6 +3139,7 @@ if EventMesh.model == "D15_" : # 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() @@ -3042,12 +3154,13 @@ if EventMesh.model == "D15_" : self.pwkey_press = 0 self.pwkey_count = 0 + self.led_state = 0 self.pwKey_press_count=0 self.wechatKey_press = 1 self.led_state = 0 self.wechatKey_count = 0 - self.wechat_state = 1 + self.wechat_state = 0 self.Keycall1_count = 0 self.Keycall1_press = 0 @@ -3060,6 +3173,8 @@ if EventMesh.model == "D15_" : self.Keycall2_long_press = 0 self.wechatKey_timer.start(100, 1, self.publish_wechat_btn_event_cb) + else: + EventMesh.publish("close_wechat_btn_timer") def close_wechat_btn_timer(self,event,*argc): tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳 @@ -3073,6 +3188,7 @@ if EventMesh.model == "D15_" : self.wechatKey_count = 0 self.wechatKey_press = 0 self.wechatKey_press_count=0 + self.wechat_state = 0 date_tmp = utime.localtime() time_tmp = utime.mktime(date_tmp) time_sec = tmp[1] @@ -3086,6 +3202,17 @@ if EventMesh.model == "D15_" : def wechatKey_press_cb(self,data): + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.wechatKey_timer.stop() + self.wechatKey_count = 0 + self.wechatKey_press = 0 + self.wechat_state = 0 + self.wechatKey_press_count=0 + return + self.WeChatKey_status = self.wechatKey.read_level() wechat_time = 0 tmp = None time_sec = 0 @@ -3096,16 +3223,16 @@ if EventMesh.model == "D15_" : if self.wechatKey_press == 1 :#是否按下 tmp = EventMesh.publish("get_wechat_time")#获取微聊时间戳 self.wechatKey_count += 1 - if self.wechatKey_count >= 10: #长按1s进入微聊录音 + if self.wechatKey_count >= 15: #长按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开始录音 + if self.wechat_state == 0:#按下超过s开始录音 EventMesh.publish("start_wechat_record")#开始录音 - self.wechat_state = 0 + self.wechat_state = 1 else: self.wechat_state = 0 self.wechatKey_timer.stop() @@ -3116,7 +3243,7 @@ if EventMesh.model == "D15_" : return if self.WeChatKey_status == 0:#未松手超过15s啧停止录音 - if self.wechat_state == 0: + if self.wechat_state == 1: if tmp != None: if tmp[0] != 0: time_sec = tmp[1] @@ -3129,11 +3256,12 @@ if EventMesh.model == "D15_" : self.wechatKey_timer.stop() self.wechatKey_count = 0 self.wechatKey_press = 0 + self.wechat_state = 0 self.wechatKey_press_count=0 return else: if self.WeChatKey_status == 1: - if self.wechat_state == 0:#如果按下时长超过1s且小于长按的时间也认为是录微聊 + if self.wechat_state == 1:#如果按下时长超过1s且小于长按的时间也认为是录微聊 if tmp != None: if tmp[0] != 0: time_sec = tmp[1] @@ -3142,9 +3270,10 @@ if EventMesh.model == "D15_" : if wechat_time >= 15: wechat_time = 15 + EventMesh.publish("send_wechat_record",wechat_time)#发送录音文件内容 self.wechatKey_timer.stop() - + self.wechat_state = 0 self.wechatKey_count = 0 self.wechatKey_press = 0 self.wechatKey_press_count=0 @@ -3152,8 +3281,10 @@ if EventMesh.model == "D15_" : else: self.wechatKey_timer.stop() self.wechatKey_count = 0 + self.wechat_state = 0 self.wechatKey_press = 0 self.wechatKey_press_count = 0 + return if self.WeChatKey_status == 1:#松开 if self.wechatKey_count >= 1: #防抖100ms @@ -3161,6 +3292,7 @@ if EventMesh.model == "D15_" : self.wechatKey_timer.stop() self.wechatKey_count = 0 self.wechatKey_press = 0 + self.wechat_state = 0 self.wechatKey_press_count+=1 self.wechatKey_timer.start(500, 0, self.publish_wechatKey_btn_event_cb)#松手超时1s判断 @@ -3177,6 +3309,17 @@ if EventMesh.model == "D15_" : # 8、短按八次,拨打通信录号码八 def wechatKey_timeout_cb(self,data):#微聊键 + open_power = EventMesh.publish("get_power_on_state")#获取开机标识 + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power != None and open_power_off != None: + if open_power == 0 or open_power_off == 1: + self.wechatKey_timer.stop() + self.wechatKey_count = 0 + self.wechatKey_press = 0 + self.wechat_state = 0 + self.wechatKey_press_count=0 + return + if NEW_ENABLE == 1: #旧的按键定义微聊键 flag = EventMesh.publish("get_call_state")#在通话或者电话拨进 或者拨出不允许寻找设备 fall_down = EventMesh.publish("get_fall_down_state")#跌倒报警标识 diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py index d3c58fdc..fb5e3476 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py @@ -143,6 +143,12 @@ class PROTOCOL: RESET_SEND = "RESET_SEND" RESET_RECV = "RESET_RECV" + + REMIND_CH_SIT_SEND = "REMIND_CH_SIT_SEND" + REMIND_CH_SIT_RECV = "REMIND_CH_SIT_RECV" + + SCREEN_SHOW_SEND = "SCREEN_SHOW_SEND" + SCREEN_SHOW_RECV = "SCREEN_SHOW_RECV" class EVENT: diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py index 9dc73784..a1b19e0e 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/led.py @@ -291,7 +291,7 @@ class ledEventManager(Abstract):#灯事件 if get_hr_state == 1 or get_spo2_state == 1 or temp_state == 1 \ or bp_state == 1 or bg_state == 1: if self.working_led_mode != led_mode.HEALTH_LED_MODE:#如果不在亮微聊模式需要亮微聊模式 - # EventMesh.debug_log("set_hr_blood_led!!!!!!!!!!") + EventMesh.debug_log("set_hr_blood_led!!!!!!!!!!") str_buf = [1,2,10*70*2,led_mode.FLASH_LIGHT_RED_GREEN,10,5,led_mode.HEALTH_LED_MODE]#測量成功 self.timer_state = 0 self.timer.stop() @@ -299,7 +299,7 @@ class ledEventManager(Abstract):#灯事件 self.working_led_mode = led_mode.HEALTH_LED_MODE return else: - # EventMesh.debug_log("set_hr_blood_led stop!!!!!!!!!!") + EventMesh.debug_log("set_hr_blood_led stop!!!!!!!!!!") return else:# 0 2都认为其他模式灯亮 不是测试健康灯 self.working_led_mode = led_mode.OTHER_MEASURE_MODE @@ -539,6 +539,10 @@ class ledEventManager(Abstract):#灯事件 if open_power != None: if open_power == 0: return + open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 + if open_power_off != None: + if open_power_off == 1: + return usb_in = EventMesh.publish("get_usb")# open_power_off = EventMesh.publish("get_power_off_state")#获取开机标识 if open_power_off != None: diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py index e53695fd..52fa200d 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py @@ -146,6 +146,7 @@ def main_init(): app.append_manager(mgr.sosInfoCallManager()) app.append_manager(mgr.testSmsSetIPManager()) app.append_manager(mgr.deleteSmsManager()) + app.append_manager(mgr.schoolclassManager()) EventMesh.debug_log("init21:{}".format(utime.localtime())) @@ -200,6 +201,8 @@ def main_init(): pcr.add_support(protocol.SLEEPTIME_ProtoCol()) pcr.add_support(protocol.FACTORY_ProtoCol()) pcr.add_support(protocol.RESET_ProtoCol()) + pcr.add_support(protocol.REMIND_CH_SIT_ProtoCol()) + pcr.add_support(protocol.SCREEN_SHOWProtoCol()) sm = protocol.SockManager() sm.add_support_resolver(pcr) diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py index b9d60fd3..06bbb894 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py @@ -613,25 +613,31 @@ class sosInfoCallManager(Abstract): # EventMesh.debug_log("number:{} number_len :{}".format(number,len(number))) EventMesh.publish("set_sos_num",num) if len(number) == 1: - EventMesh.publish("set_callnumer_cb",number[0]) - EventMesh.debug_log("phone 1") + if len(number[0]) != 0: + EventMesh.publish("set_callnumer_cb",number[0]) + EventMesh.debug_log("phone 1") elif len(number) == 2: if num == 1 or num == 3: - EventMesh.debug_log("phone 2") - EventMesh.publish("set_callnumer_cb",number[1]) + if len(number[1]) != 0: + EventMesh.debug_log("phone 2") + EventMesh.publish("set_callnumer_cb",number[1]) elif num == 2: - EventMesh.debug_log("phone 3") - EventMesh.publish("set_callnumer_cb",number[0]) + if len(number[0]) != 0: + EventMesh.debug_log("phone 3") + EventMesh.publish("set_callnumer_cb",number[0]) elif len(number) == 3: if num == 1 or num == 4: - EventMesh.publish("set_callnumer_cb",number[1]) - EventMesh.debug_log("phone 4") + if len(number[1]) != 0: + EventMesh.publish("set_callnumer_cb",number[1]) + EventMesh.debug_log("phone 4") elif num == 2 or num == 5: - EventMesh.debug_log("phone 5") - EventMesh.publish("set_callnumer_cb",number[2]) + if len(number[2]) != 0: + EventMesh.debug_log("phone 5") + EventMesh.publish("set_callnumer_cb",number[2]) elif num == 3: - EventMesh.debug_log("phone 6") - EventMesh.publish("set_callnumer_cb",number[0]) + if len(number[0]) != 0: + EventMesh.debug_log("phone 6") + EventMesh.publish("set_callnumer_cb",number[0]) WL_timer = osTimer() def WL_timer_cb(*args): get_call = EventMesh.publish("get_call_state") @@ -2704,6 +2710,7 @@ class DeviceInfoManager(Abstract): def get_imei(self, topic, msg): if not self.imei: self.imei = modem.getDevImei() + # self.imei = "860132060128634" #860132060128634 return self.imei def get_cid(self, topic, msg): @@ -3376,7 +3383,7 @@ class AddrBookManager(Abstract): EventMesh.publish("dial_out_call_center_cb",None)#电话拨出去 else: EventMesh.publish("dial_out_call_center_cb",None)#电话拨出去 - EventMesh.debug_log("call_phonebook_one_call name:{} key_tmp:{} len:{}".format(name,key_tmp,len(self.read_phonebook))) + EventMesh.debug_log("call_phonebook_call name:{} msg:{}".format(len(self.read_phonebook),msg)) def call_phonebook_one_call(self, event, msg): name = '' @@ -4260,6 +4267,8 @@ class getSosFlagManager(Abstract):#设置sos EventMesh.subscribe("set_callnumer_cb", self.set_callnumer_cb)#延时回调 + EventMesh.subscribe("close_call_time",self.close_call_time) + EventMesh.subscribe("set_hangup_mode", self.set_hangup_mode) EventMesh.subscribe("get_hangup_mode", self.get_hangup_mode)#获取挂断方式 是对方挂断 还是手表按键主动挂断 @@ -4277,6 +4286,7 @@ class getSosFlagManager(Abstract):#设置sos if number != None: if len(number) > 0: + self.call_timer.stop() EventMesh.publish("save_phonename",number[0]) EventMesh.publish("save_phonenum",number[0]) EventMesh.publish("set_sos_num",0) @@ -4286,8 +4296,9 @@ class getSosFlagManager(Abstract):#设置sos EventMesh.publish("sos_out_call_center_cb",None)#电话拨出去 def set_callnumer_cb(self, event, msg): - self.callnumer = msg - self.call_timer.start(5000, 0, self.call_timer_cb)#延迟10S 继续拨打 + if self.sos_flag == 1: + self.callnumer = msg + self.call_timer.start(5000, 0, self.call_timer_cb)#延迟10S 继续拨打 def call_timer_cb(self, *args, **kwargs): if self.sos_flag == 1: @@ -4296,6 +4307,8 @@ class getSosFlagManager(Abstract):#设置sos phone_num = EventMesh.publish("get_phonenum") EventMesh.publish("sos_out_call_center_cb",phone_num)#电话拨出去 + def close_call_time(self, event, msg): + self.call_timer.stop() def get_sos_flag(self, event, msg): return self.sos_flag @@ -4923,3 +4936,67 @@ class ClockManager(Abstract): self.rtc.enable_alarm(0) +class schoolclassManager(Abstract):# + def __init__(self): + # ['火星情报局', '一年级二班', '柠檬茶'] + self.school_name = '' + self.class_name = '' + self.full_name = '' + tmp_data = EventMesh.publish("get_storage_config","school_name") + if tmp_data != None: + self.school_name = tmp_data + tmp_data = EventMesh.publish("get_storage_config","class_name") + if tmp_data != None: + self.class_name = tmp_data + tmp_data = EventMesh.publish("get_storage_config","full_name") + if tmp_data != None: + self.full_name = tmp_data + + + + def post_processor_after_instantiation(self): + EventMesh.subscribe("set_schoolname", self.set_school_name)# + EventMesh.subscribe("get_schoolname", self.get_school_name) + + EventMesh.subscribe("set_classname", self.set_classname)# + EventMesh.subscribe("get_classname", self.get_classname) + + EventMesh.subscribe("set_fullname", self.set_full_name)# + EventMesh.subscribe("get_fullname", self.get_full_name) + + def set_school_name(self, event, msg): + if msg != None: + if len(msg) != 0: + self.school_name = str(msg) + EventMesh.publish("set_storage_config",["school_name",str(msg)]) + + + def get_school_name(self, event, msg): + if self.school_name: + return self.school_name + else: + return None + + def set_classname(self, event, msg): + if msg != None: + if len(msg) != 0: + self.class_name = str(msg) + EventMesh.publish("set_storage_config",["class_name",str(msg)]) + + + def get_classname(self, event, msg): + if self.class_name: + return self.class_name + else: + return None + def set_full_name(self, event, msg): + if msg != None: + if len(msg) != 0: + self.full_name = str(msg) + EventMesh.publish("set_storage_config",["full_name",str(msg)]) + + def get_full_name(self, event, msg): + if self.full_name: + return self.full_name + else: + return None \ No newline at end of file diff --git a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py index 11970be2..9bbe2eb9 100644 --- a/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py +++ b/2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py @@ -2795,6 +2795,111 @@ class RESET_ProtoCol(ProtoCol):#重启 EventMesh.publish(constants.PROTOCOL.RESET_SEND) Power.powerRestart() +# 平台发送: +# [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_SIT,时间间隔(分钟),总开关(0为关,1为开),午间休息时段,晚间休息时段] +# 午间/晚间休息时段格式为:开始时间(hh:mm)-结束时间(hh:mm)-开关(0为关,1为开),例如 12:00-15:00-1。 +# 久坐默认值为20分钟。 +# 午间和晚间默认值,午间12:00-14:00,晚上20:00-07:00。 +# 实例: +# [XT*334588000000156*0026*REMIND_CH_SIT,20,0,12:00-15:00-1,20:00-07:00-1] +# 终端回复: +# [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_SIT] +# 实例:[XT*334588000000156*000E*REMIND_CH_SIT] +class REMIND_CH_SIT_ProtoCol(ProtoCol):#久坐提醒 + """ + 实例:[XT*334588000000156*0008*REMIND_CH_SIT] + 终端回复 + [XT*YYYYYYYYYYYYYYY*LEN*REMIND_CH_SIT] + 实例:[XT*334588000000156*0006*REMIND_CH_SIT] + """ + TYPE = "REMIND_CH_SIT" + + def send(self, event, msg): + send_data = EventMesh.publish("get_new_pid")+"*%s*000d*REMIND_CH_SIT"%(self.imei) + MD5_SIGN = self.pack_MD5_head(send_data) + data = "[%s%s]"%(str(MD5_SIGN),send_data) + EventMesh.debug_log("REMIND_CH_SIT:send:%s"%(data)) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data) + + def recv(self, event, msg): + + EventMesh.debug_log("REMIND_CH_SIT!!!!!!!!!") + # msg = msg[1:-1] + # msg_tmp = msg.decode('ascii') + # msg_data = msg_tmp.split(',') + # EventMesh.debug_log("WLKEY_ProtoCol".format(msg_data[1])) + # EventMesh.publish("set_storage_config",["WLKEY",msg_data[1]]) + + EventMesh.publish(constants.PROTOCOL.REMIND_CH_SIT_SEND) + +# 平台发送: +# [XT*YYYYYYYYYYYYYYY*LEN*SCREEN_SHOW,参数内容] +# 实例:[XT*334588000000156*0016*SCREEN_SHOW,00000000000] +# 参数内容用 unicode 编码呈现,设备收到后需解码。 +# 解码后的参数内容可能有多个参数,不同参数用逗号分隔,设备自己决定如何在屏幕中显示这些参数。比如 "SCREEN_SHOW,深圳第一中学,三年1班、张三" +# 终端回复: +# [XT*YYYYYYYYYYYYYYY*LEN*SCREEN_SHOW] +# 实例:[XT*334588000000156*000B*SCREEN_SHOW] + +class SCREEN_SHOWProtoCol(ProtoCol): + """开屏显示""" + TYPE = "SCREEN_SHOW" + def send(self, event, msg): + # [XT*334588000000156*0006*SILENCETIME2] + send_data = self.PID+"*%s*000B*SCREEN_SHOW"%(self.imei) + MD5_SIGN = self.pack_MD5_head(send_data) + data = "[%s%s]"%(str(MD5_SIGN),send_data) + # print("KEYBRD:data:%s"%(data)) + # print("KEYBRD!!!!!!!!!!!!!",msg) + # 通过socket发送到服务器端 + EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data) + + def recv(self, event, msg): + """ + @param event: + @param msg: 接收到的下行数据 + """ + msg = msg[1:-1] + msg_tmp = msg.decode('ascii') + msg_tmp = msg_tmp.split(',') + msg_tmp = msg_tmp[1:] + msg_tmp = msg_tmp[0] + print("screen_school_data msg",msg) + + j = 0 + i = 0 + videobook_old = {} + videobook_name_tmp = UnicodeHexStr_To_Utf8Str(msg_tmp) + lst = videobook_name_tmp.split(",") + print("lst data",lst) + + # 0 1 2 3 + screen_school_data = ""#学校 + screen_class_data = ""#班级 + screen_fullname_data = ""#姓名 + if len(lst) != 0: + count = len(lst) + if count > 3: + count = 3 + for i in range(count): + if i == 0: + screen_school_data = lst[0] + EventMesh.publish("set_schoolname", screen_school_data)# + elif i == 1: + screen_class_data = lst[1] + EventMesh.publish("set_classname", screen_class_data)# + else: + screen_fullname_data= lst[2] + EventMesh.publish("set_fullname", screen_fullname_data)# + + # EventMesh.publish("update_screen_show")#更新开屏显示 + + print("screen_school_data!!!:",screen_school_data,screen_class_data,screen_fullname_data) + + EventMesh.publish(constants.PROTOCOL.SCREEN_SHOW_SEND) + + class ProtoColResolver(object): def __init__(self): self.protocol_list = [] diff --git a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_main_menu.py b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_main_menu.py index f872d56b..2d5f3c4c 100644 --- a/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_main_menu.py +++ b/2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_main_menu.py @@ -511,7 +511,7 @@ class MainMenuScreen(Screen): self.menu_id = id def done_left_to_right(self): id = MainMenu2_til.get_tile_act().get_child(0).get_text() - print("done_left_to_right:ID{} menu_id{}".format(id,self.menu_id)) + # print("done_left_to_right:ID{} menu_id{}".format(id,self.menu_id)) if id == "0": MainMenu2_til.set_tile_id(MainMenu2_num-2,0,lv.ANIM.OFF) elif self.menu_id != '2' and id == '1': @@ -521,7 +521,7 @@ class MainMenuScreen(Screen): self.menu_id = id def done_right_to_left(self): id = MainMenu2_til.get_tile_act().get_child(0).get_text() - print("done_right_to_left:ID{} menu_id{}".format(id,self.menu_id)) + # print("done_right_to_left:ID{} menu_id{}".format(id,self.menu_id)) if id == "0": MainMenu2_til.set_tile_id(0,0,lv.ANIM.OFF) elif (self.menu_id != str(MainMenu2_num-2) ) and id == str(MainMenu2_num-1) :