From: azao <821478748@qq.com> Date: Wed, 29 Oct 2025 06:28:51 +0000 (+0800) Subject: 按需修改日程提醒,单次/响两次隔五分钟/响三次隔五分钟 X-Git-Url: http://git.snicker.com.cn/css/static/gitweb.css?a=commitdiff_plain;h=3895c980732e5148213b461dcede12ad0fe62f3a;p=mirrors%2FASR1603_G5.git 按需修改日程提醒,单次/响两次隔五分钟/响三次隔五分钟 --- diff --git a/2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/ai_alarm.py b/2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/ai_alarm.py index da0cd5d5..4e1baaef 100644 --- a/2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/ai_alarm.py +++ b/2.sdk/project/7PIN_1_5/sdk/services/microPython/ports/quectel/core/ai_alarm.py @@ -840,14 +840,29 @@ class schedule(Abstract): self.is_schedule = 0 self.old_minute = 0 self.schedule_play_count = 0 - self.schedule_play_count_tmp=0 EventMesh.subscribe("AI_schedule_open",self.AI_schedule_open)# EventMesh.subscribe("set_schedule_info",self.set_schedule_info)# EventMesh.subscribe("clear_shcheude_flag",self.clear_shcheude_flag) self.schedule_play_timer = osTimer() - self.base_sentence = "" + self.timer_flag = 0#定时器开启状态 self.schedul_timer_default = 60*5 #默认5分钟提醒一次日程 + # 分别存储所有日程的定时器:key=日程ID,value=当前活跃的定时器 + self.schedule_list = dict() + + + + def add_schedule(self,remind_times,name,descrip,current_round =1): + #添加新日程,remind_times为提醒次数(2/3,name为日程名字,descrip为播报内容 + schedule_id = name + self.schedule_list[schedule_id] ={ + "total_times" : remind_times,#总提醒次数 + "current_round" : current_round,#当前轮次 + "descrip" : descrip#播报内容 + } + print("已添加日程 {},将提醒 {} 次(间隔5分钟)".format(schedule_id,remind_times)) + return schedule_id + def set_schedule_info(self,event=None,msg=None): print("msg:{}".format(msg)) self.schedule_array=msg @@ -899,6 +914,7 @@ class schedule(Abstract): date_day = int(date.split("-")[2]) set_hour = int(((alarm["time"]).split(':'))[0]) set_min = int(((alarm["time"]).split(':'))[1]) + repeat = alarm["repeat"] time_tuple = utime.localtime()#获取当前日期&时间的元组 year_now = time_tuple[0] @@ -927,24 +943,25 @@ class schedule(Abstract): break if self.is_schedule == 1: #需要执行闹钟响铃声 - self.schedule_array.pop(current_index) + # self.schedule_array.pop(current_index) alarm_TTS_str = alarm_tts_info["description"] AringTimes = alarm_tts_info["repeat"] - self.base_sentence = "" - self.base_sentence = "{}".format(alarm_TTS_str) + name = alarm_tts_info["title"] if AringTimes == 0: AringTimes = 1 - repeat_sentence = (self.base_sentence + ",") * AringTimes # 重复5次并加逗号分隔 + repeat_sentence = (alarm_TTS_str + ",") # 重复5次并加逗号分隔 final_sentence = repeat_sentence.rstrip(",") final_sentence = "日程提醒: " + final_sentence - self.schedule_play_timer.stop() self.schedule_play_count = AringTimes - self.schedule_play_count_tmp=1 EventMesh.publish("play_tts",[final_sentence,1]) #播放tts闹钟文本内容 + self.schedule_array.pop(current_index) EventMesh.publish("set_storage_config",["schedule",self.schedule_array])#读取闹钟数组 + # print("正在判断是否重复:{}".format(AringTimes)) if AringTimes > 1: #只有次数大于2才开定时器播放重复的内容 - self.schedule_play_timer.start(self.schedul_timer_default*1000,0,self.shchedu_play_repeat_timer) - + self.add_schedule(AringTimes,name,alarm_TTS_str) + if self.timer_flag == 0: + self.schedule_play_timer.start(self.schedul_timer_default*1000,1,self.shchedu_play_repeat_timer) + self.timer_flag = 1 print("日程:{} self.schedule_array :{}".format(final_sentence,self.schedule_array)) #循环播放定时器 @@ -953,26 +970,41 @@ class schedule(Abstract): if self.schedule_array == []: print("清除日程clear_shcheude_flag!!!!!!!!!!{}".format(self.schedule_play_count)) self.schedule_play_timer.stop() + self.timer_flag = 0 self.schedule_play_count=0 - self.schedule_play_count_tmp=0 - self.base_sentence="" pass + def shchedu_play_repeat_timer(self,*argc): - print("播放日程提醒定时器{} {} self.base_sentence:{}".format(self.schedule_play_count,self.schedule_play_count_tmp,self.base_sentence)) - if self.schedule_play_count <= 1 or self.schedule_array == None or self.schedule_array == []: - self.schedule_play_count=0 - self.schedule_play_count_tmp=0 - return - if len(self.base_sentence) != 0: - repeat_sentence = (self.base_sentence + ",") * self.schedule_play_count # 重复5次并加逗号分隔 - final_sentence = repeat_sentence.rstrip(",") #截掉最后一个逗号 - EventMesh.publish("play_tts",[final_sentence,1]) #播放tts闹钟文本内容 - self.schedule_play_count_tmp+=1 - if self.schedule_play_count_tmp >= self.schedule_play_count: - self.schedule_play_count=0 - self.schedule_play_count_tmp=0 - return - self.schedule_play_timer.start(self.schedul_timer_default*1000,0,self.shchedu_play_repeat_timer) + #遍历字典键和值 + for key,value in self.schedule_list.items(): + print("日程 {} 第 {} 次提醒!".format(key,value["current_round"])) + print("播放日程提醒定时器{}".format(self.schedule_play_count)) + #判断是否已经播放完毕 + if value["current_round"] >= value["total_times"]: + print("进入日程33333!!!!!") + # 所有轮次完成,从存储中删除该日程 + if key in self.schedule_list: + del self.schedule_list[key] + print("日程 {} 所有提醒完成".format(key)) + return + #次数小于等于1,不需要重复 + if value["total_times"] <= 1 : + print("进入日程11111!!!!!") + # 所有轮次完成,从存储中删除该日程 + if key in self.schedule_list: + del self.schedule_list[key] + return + if value["current_round"] != None: + print("进入日程22222!!!!!") + value["current_round"] += 1 + final_sentence = "日程提醒: " + value["descrip"] + print("再次播报日程") + EventMesh.publish("play_tts",[final_sentence,1]) #播放tts闹钟文本内容 + if self.schedule_list is False:#当字典为空 + self.schedule_play_timer.stop() + self.timer_flag = 0 + print("字典为空,清除定时器") +