Просмотр исходного кода

fix: 解决airtalk 整机演示代码返回后,再次进入的异常

梁健 6 месяцев назад
Родитель
Сommit
832759fdad

+ 10 - 1
module/Air8000/project/整机开发板出厂工程/user/extalk.lua

@@ -51,6 +51,7 @@ local SUCC = "success"
 local g_state = SP_T_NO_READY   -- 设备状态
 local g_mqttc = nil             -- mqtt客户端
 local g_local_id                -- 本机ID
+local g_stask_start = false                -- 本机ID
 local g_remote_id               -- 对端ID
 local g_s_type                  -- 对讲的模式,字符串形式
 local g_s_topic                 -- 对讲用的topic
@@ -374,7 +375,7 @@ local function mqtt_cb(mqttc, event, topic, payload)
         extalk.speech_off(false, true)
         g_state = SP_T_NO_READY
     elseif event == "error" then
-        log.error("MQTT错误发生")
+        log.error("MQTT错误发生",topic,payload)
     end
 end
 
@@ -400,6 +401,12 @@ end
 
 -- MQTT任务主循环
 local function airtalk_mqtt_task()
+    if g_stask_start  then
+        log.info("airtalk task 已经初始化了")
+        return true
+    end
+    
+    g_stask_start = true
     local msg, online = nil, false
     
     -- 初始化本地ID
@@ -491,6 +498,7 @@ end
 
 -- 模块初始化
 function extalk.setup(extalk_configs)
+
     if not extalk_configs or type(extalk_configs) ~= "table" then
         log.error("AirTalk配置必须为table类型")
         return false
@@ -524,6 +532,7 @@ end
 
 -- 开始对讲
 function extalk.start(id)
+
     if g_state ~= SP_T_IDLE then
         log.warn("正在对讲无法开始,当前状态:", g_state)
         return false

+ 14 - 23
module/Air8000/project/整机开发板出厂工程/user/talk.lua

@@ -155,31 +155,22 @@ function talk.run()
         else
             if current_page == "main" then
                 lcd.clear(_G.bkcolor) 
-                if  speech_topic  == nil then
-                    lcd.drawStr(0, 80, "所有要对讲的设备,要保持在线")
-                    lcd.drawStr(0, 100, "方案介绍:airtalk.luatos.com")
-                    lcd.drawStr(0, 120, "平台端网址:airtalk.openluat.com/talk/")
-                    lcd.drawStr(0, 140, "本机ID:" .. local_id)
-                    lcd.showImage(32, 250, "/luadb/input_topic.jpg")
-                    lcd.showImage(32, 300, "/luadb/broadcast.jpg")
-                    lcd.showImage(104, 400, "/luadb/stop.jpg")
-                    
-                else
-                    -- lcd.drawStr(0, 80, "对端ID:"..speech_topic )
-                    lcd.drawStr(0, 100, "方案介绍:airtalk.luatos.com")
-                    lcd.drawStr(0, 120, "平台端网址:airtalk.openluat.com/talk/")
-                    lcd.drawStr(0, 140, "所有要对讲的设备,要保持在线")
-                    lcd.drawStr(0, 160, talk_state)
-                    lcd.drawStr(0, 180, "事件:" .. event)
-                    lcd.drawStr(0, 200, "本机ID:" .. local_id)
-                    lcd.drawQrcode(185, 148, "https://airtalk.openluat.com/talk/", 82)
-                    lcd.drawStr(185, 242, "扫码进入网页端",0x0000)
-                    -- 显示输入法入口按钮
+                if  speech_topic   then
                     lcd.showImage(175, 300, "/luadb/datacall.jpg")
-                    lcd.showImage(32, 300, "/luadb/broadcast.jpg")
-                    lcd.showImage(104, 400, "/luadb/stop.jpg")
-                    lcd.showImage(0, 448, "/luadb/Lbottom.jpg")
                 end
+                lcd.drawStr(0, 100, "方案介绍:airtalk.luatos.com")
+                lcd.drawStr(0, 120, "平台端网址:airtalk.openluat.com/talk/")
+                lcd.drawStr(0, 140, "所有要对讲的设备,要保持在线")
+                lcd.drawStr(0, 160, talk_state)
+                lcd.drawStr(0, 180, "事件:" .. event)
+                lcd.drawStr(0, 200, "本机ID:" .. local_id)
+                lcd.drawQrcode(185, 148, "https://airtalk.openluat.com/talk/", 82)
+                lcd.drawStr(185, 242, "扫码进入网页端",0x0000)
+                -- 显示输入法入口按钮
+                
+                lcd.showImage(32, 300, "/luadb/broadcast.jpg")
+                lcd.showImage(104, 400, "/luadb/stop.jpg")
+                lcd.showImage(0, 448, "/luadb/Lbottom.jpg")
                 
                 -- 显示通讯录按钮 (位置x10,y250)
                 lcd.showImage(175, 250, "/luadb/addresslist.jpg")