K01:
authordxy15521469561 <1731678236@qq.com>
Thu, 4 Jul 2024 09:32:26 +0000 (17:32 +0800)
committerdxy15521469561 <1731678236@qq.com>
Thu, 4 Jul 2024 09:32:26 +0000 (17:32 +0800)
关闭和开启播放TTS按钮图片增加

2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ai.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk-ZY/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py
2.sdk-ZY/project/K01/usr/static/AI/ai_result_can_bt.png [deleted file]

index fb401e6..639dae6 100644 (file)
@@ -168,7 +168,7 @@ al_talk_end_screen_icon1 = lv.img(AI_talk_end_bt_screen)
 al_talk_end_screen_icon1.set_size(26,26)
 al_talk_end_screen_icon1.set_pos(10,5)
 al_talk_end_screen_icon1.add_flag(lv.obj.FLAG.CLICKABLE)
-al_talk_end_screen_icon1.set_src("U:/static/AI/ai_result_can_bt.png")
+al_talk_end_screen_icon1.set_src("U:/static/AI/ai_result_can_start.png")
 al_talk_end_screen_icon1.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 al_talk_end_screen_cancel_bt = lv.label(AI_talk_end_bt_screen)
@@ -714,6 +714,8 @@ class AIScreen(Screen):#AI_GUI
         self.hard_flag_next = 0
         self.hard_flag_prev = 0
         self.scroll_timer_count = 0
+        self.play_flag = 0
+        self.play_flag_init = 0
         AI_screen.add_event_cb(lambda e: EventMesh.callback_wrapper(self.button_cb(e,1)),
                                       lv.EVENT.GESTURE, None)
         
@@ -796,6 +798,17 @@ class AIScreen(Screen):#AI_GUI
         self.tts_time_outcount = 0
 
     def talk_end_cancel_cb(self,e):#对话结束已经播放音频取消继续对话按钮
+        if self.play_flag == 1:
+            self.play_flag = 0
+            self.aud.stopPlayStream()
+            self.aud.stopAll()
+            print("talk_end_cancel_cb stop()\r\n")
+            EventMesh.publish("publish_message_event_ui",{"func":self.upload_img,"data":0})
+        else:
+            self.play_flag = 1
+            print("talk_end_cancel_cb start()\r\n")
+            EventMesh.publish("publish_message_event_ui",{"func":self.upload_img,"data":1})
+        return
         self.Close()
         self.AI_label_answer = ""
         AI_no_net_screen.add_flag(lv.obj.FLAG.HIDDEN) #隐藏
@@ -805,7 +818,11 @@ class AIScreen(Screen):#AI_GUI
         AI_talk_end_screen.add_flag(lv.obj.FLAG.HIDDEN) #
         AI_not_listen_text_screen.add_flag(lv.obj.FLAG.HIDDEN) #
         AI_talk_screen.clear_flag(lv.obj.FLAG.HIDDEN) #
-        
+    def upload_img(self,msg):
+        if msg == 1:
+            al_talk_end_screen_icon1.set_src("U:/static/AI/ai_result_can_start.png")
+        else:
+            al_talk_end_screen_icon1.set_src("U:/static/AI/ai_result_can_stop.png")
         
     def talk_end_continue_cb(self,e):#连接超时确定按钮回调或者继续对话按钮
         self.Close()
@@ -1049,7 +1066,7 @@ class AIScreen(Screen):#AI_GUI
     def ai_talk_end(self):#语言识别完 思考结束显示最后的文本和音频数据
         
         
-
+        self.play_flag = 1
         self.AI_label_answer = ""
         AI_end_screen_list_screen.scroll_to(0, 0, lv.ANIM.OFF)
         AI_label.set_pos(5, 10)
@@ -1078,6 +1095,7 @@ class AIScreen(Screen):#AI_GUI
         AI_talk_screen.add_flag(lv.obj.FLAG.HIDDEN) #
         AI_not_listen_text_screen.add_flag(lv.obj.FLAG.HIDDEN) #
         AI_talk_end_screen.clear_flag(lv.obj.FLAG.HIDDEN) #
+        al_talk_end_screen_icon1.set_src("U:/static/AI/ai_result_can_start.png")
         AI_end_screen_list_screen2.add_flag(lv.obj.FLAG.HIDDEN) #隐藏2
         AI_end_screen_list_screen.clear_flag(lv.obj.FLAG.HIDDEN) #
 
@@ -1089,6 +1107,9 @@ class AIScreen(Screen):#AI_GUI
         pass
 
     def connect_timerout_popup(self,msg):#连接超时弹窗提示
+        EventMesh.publish("publish_message_event_ui",{"func":self.connect_timerout_popup_cb,"data":msg})
+        
+    def connect_timerout_popup_cb(self,msg):
         self.Close()
         AI_talk_screen.add_flag(lv.obj.FLAG.HIDDEN) #
         AI_no_net_screen.add_flag(lv.obj.FLAG.HIDDEN) #隐藏
@@ -1171,6 +1192,7 @@ class AIScreen(Screen):#AI_GUI
         AI_talk_screen.clear_flag(lv.obj.FLAG.HIDDEN) #
         pass
     def initialization(self):
+        self.play_flag = 1
         self.TTS_PRO_TYPE = 0
         AI_listen_screen.add_flag(lv.obj.FLAG.HIDDEN)
         AI_think_screen.add_flag(lv.obj.FLAG.HIDDEN) #先隐藏
@@ -1535,7 +1557,8 @@ class AIScreen(Screen):#AI_GUI
     def AI_client_tts_timer_cb(self,*argc):
         # EventMesh.publish("system_sleep_rest")#防止黑屏
         self.tts_time_count+=1
-        
+        if self.play_flag == 0:
+            return
         if self.TTS_PRO_TYPE == 1:
             #tts数据入队
             self.AI_client_tts_put_data()
@@ -1647,7 +1670,7 @@ class AIScreen(Screen):#AI_GUI
                     print("AI_client_tts_recv close!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\r\n")
                     break
                 try:
-                    print("AI_client_tts_recv :{}".format(len(recv_data)))
+                    # print("AI_client_tts_recv :{}".format(len(recv_data)))
                     #结束标志{"header":{"event":"EndSynthesis","msg":"success","status":20000000,"task_id":"ffd727e620000803280c5a6498d0e321"}}
                     if isinstance(recv_data, str):
                         print("AI_client_tts_recv:str recv_data:{}".format(recv_data))
@@ -1811,7 +1834,8 @@ class AIScreen(Screen):#AI_GUI
                                 self.websocket_connect_chat()
                             except Exception as e: #网络连接异常
                                 usys.print_exception(e)
-                        tmp = self.AI_client_chat.send(data[1])
+                        if self.AI_client_chat != None:
+                            tmp = self.AI_client_chat.send(data[1])
                         print("chat send_data:{} tmp:{}".format(len(data[1]),tmp))
                     if data[0] == self.AI_client_asr_num:
                         if isinstance(data[1], str):
@@ -1822,7 +1846,8 @@ class AIScreen(Screen):#AI_GUI
                             except Exception as e: #网络连接异常
                                 usys.print_exception(e)
                         print("asr send_data:{}".format(len(data[1])))
-                        self.AI_client_asr.send(data[1])
+                        if self.AI_client_asr != None:
+                            self.AI_client_asr.send(data[1])
                     if data[0] == self.AI_client_tts_num:
                         if self.AI_client_tts_isconnect == 0:
                             try:
@@ -1830,7 +1855,8 @@ class AIScreen(Screen):#AI_GUI
                             except Exception as e: #网络连接异常
                                 usys.print_exception(e)
                         print("tts send_data:{}".format((data[1])))
-                        self.AI_client_tts.send(data[1])
+                        if self.AI_client_tts != None:
+                            self.AI_client_tts.send(data[1])
                 except Exception as e:
                     print("DeviceInfo_queue_thread:ERROR:{}".format(e))
                     usys.print_exception(e)
@@ -1860,7 +1886,8 @@ class AIScreen(Screen):#AI_GUI
                             #self.AI_client_tts_start()
                             if self.AI_client_tts_isconnect == 1:
                                 try:
-                                    self.AI_client_tts.send(data[1])
+                                    if self.AI_client_tts != None:
+                                        self.AI_client_tts.send(data[1])
                                     break
                                 except Exception as e:
                                     usys.print_exception(e)    
@@ -1873,28 +1900,35 @@ class AIScreen(Screen):#AI_GUI
             try:
                 if 1: #self.audio_play_state == 0:
                     #print("AI_audio_queue_thread")
-                    data = self.AI_audio_queue.get()
-                    
-                    #self.AI_client_tts_data_len=len(data)
-                    print("audio_queue:len:{},data{}".format(len(data[0]),data[1]))
-                    if len(data[0]) > 1:
-                        if self.TTS_PRO_TYPE == 0:
-                            
-                            self.AI_label_answer+=data[1]
-                            EventMesh.publish("publish_message_event_ui",{"func":self.ai_talk_end_show_text_cb,"data":0})
-                            # AI_label.set_text(self.AI_label_answer)
-                        try:
-                            
-                            tmp= self.aud.playStream(3, data[0])#播放音频流
-                            print("出:{},{}!!!".format(len(data[0]),self.AI_client_tts_data_len))
-                            if tmp != 0:
-                                print("2playStream:error tmp:{} data len:{}!!!!!!!!!!!!".format(tmp,len(data[0])))
-                            self.AI_client_tts_data_len -=len(data[0])
-                            mem = gc.mem_free()
-                            print('1剩余内存RAM:{} KB'.format(mem / 1024))
-                        except Exception as e:
-                            print("AI_audio_queue_thread:ERROR:")
-                            usys.print_exception(e)
+                    if self.play_flag == 1:
+                        self.play_flag_init = 1
+                        data = self.AI_audio_queue.get()
+                        
+                        #self.AI_client_tts_data_len=len(data)
+                        print("audio_queue:len:{},data{} self.play_flag:{}\r\n".format(len(data[0]),data[1],self.play_flag))
+                        if len(data[0]) > 1:
+                            if self.TTS_PRO_TYPE == 0:
+                                if self.play_flag == 1:
+                                    self.AI_label_answer+=data[1]
+                                    EventMesh.publish("publish_message_event_ui",{"func":self.ai_talk_end_show_text_cb,"data":0})
+                                # AI_label.set_text(self.AI_label_answer)
+                            try:
+                                if self.play_flag == 1:
+                                    tmp= self.aud.playStream(3, data[0])#播放音频流
+                                    print("出:{},{}!!!".format(len(data[0]),self.AI_client_tts_data_len))
+                                    if tmp != 0:
+                                        print("2playStream:error tmp:{} data len:{}!!!!!!!!!!!!".format(tmp,len(data[0])))
+                                    self.AI_client_tts_data_len -=len(data[0])
+                                    mem = gc.mem_free()
+                                    print('1剩余内存RAM:{} KB'.format(mem / 1024))
+                            except Exception as e:
+                                print("AI_audio_queue_thread:ERROR:")
+                                usys.print_exception(e)
+                    else:
+                        if self.play_flag_init == 1:
+                            self.play_flag_init = 0
+                            self.aud.stopPlayStream()
+                        utime.sleep_ms(2)
             except Exception as e:
                 print("AI_audio_queue_thread:ERROR:")
                 usys.print_exception(e)
index 26abde9..fd384fd 100644 (file)
@@ -2011,14 +2011,15 @@ class LocationManager(Abstract):
         old_step = 0
         step = 0
         step = EventMesh.publish("get_old_step_value")
-        if step != 0:
+        if step != None:
             tmp_data  = EventMesh.publish("get_storage_config","old_step_new")
             if tmp_data != None:
                 old_step = tmp_data
             if old_step !=  step:
                 EventMesh.publish("set_storage_config",["old_step",step])
                 EventMesh.publish("set_storage_config",["old_step_new",step])
-                
+        else:
+            step = 0  
         old_step = step
         # step = str(EventMesh.publish(constants.EVENT.GET_STEP)[0])
         #翻转次数
index cb8a7d6..b37f265 100644 (file)
@@ -1134,7 +1134,7 @@ class RestartScreen(Screen):
         if code == lv.EVENT.RELEASED:
             value_slider = screen_slider_1.get_value()
             # print("RELEASED save_choice1111111!!!!!!",total_len,value_slider,state_on)
-            if total_len < 100-12:
+            if total_len < 100-15:
                 screen_slider_1.set_value(10, False)
                 screen_slider_img.set_pos(10,60)
                 screen_slider_1.set_style_bg_color(lv.color_make(0x00,0x00,0x00), lv.PART.INDICATOR|lv.STATE.DEFAULT)
diff --git a/2.sdk-ZY/project/K01/usr/static/AI/ai_result_can_bt.png b/2.sdk-ZY/project/K01/usr/static/AI/ai_result_can_bt.png
deleted file mode 100644 (file)
index 8dbd751..0000000
Binary files a/2.sdk-ZY/project/K01/usr/static/AI/ai_result_can_bt.png and /dev/null differ