Browse Source

fix:修改exvib1库的描述以及8000的errdump的demo修改

mw 4 months ago
parent
commit
037b27934a

+ 1 - 1
module/Air8000/demo/errDump/auto_dump_udp_srv.lua

@@ -25,7 +25,7 @@ local function test_user_log()
         sys.waitUntil("IP_READY", 1000)
     end
     -- 下面演示自动发送异常日志到自建udp服务器,如果是系统异常日志,则会在重启后自动上报,如果是用户写入调试日志,则周期性上报。
-    errDump.config(true,600,nil,nil,"112.125.89.8",47250)
+    errDump.config(true,600,nil,nil,"112.125.89.8",47816)
     while true do
         sys.wait(15000)
         -- 上报用户调试日志

+ 7 - 12
module/Air8000/demo/errDump/errdump_read.lua

@@ -28,31 +28,26 @@ local function test_user_log()
         sys.publish("ERRDUMP_DATA_SEND_UART", err_buff:toStr(0, err_buff:used()))
         -- 将读取到的系统异常日志通过"SEND_DATA_REQ"消息publish给tcp发送出去
         sys.publish("SEND_DATA_REQ", err_buff:toStr(0, err_buff:used()))
-    end
-    --手动读取的话需要手动删除日志,否则下次读取会继续读取上次的日志
-    --  errDump.dumpf返回值:true表示本次读取前并没有写入数据,false反之,在删除日志前,最好再读一下确保没有新的数据写入了
-    new_flag = errDump.dump(err_buff, errDump.TYPE_SYS)
-    if not new_flag then
-        log.info("没有新数据了,删除系统错误日志")
+        --手动读取的话需要手动删除日志,否则下次读取会继续读取上次的日志
+        log.info("读取完系统错误日志,删除系统错误日志")
         errDump.dump(nil, errDump.TYPE_SYS, true)
     end
     -- 开机读取完系统异常日志后循环读取用户调试日志
     while true do
         local new_flag = errDump.dump(err_buff, errDump.TYPE_USR)
-        if new_flag then
+        if err_buff:used() > 0 then
             log.info("errBuff", err_buff:toStr(0, err_buff:used()))
             -- 将数据data通过"ERRDUMP_DATA_SEND_UART"消息publish给串口发送出去
             sys.publish("ERRDUMP_DATA_SEND_UART", err_buff:toStr(0, err_buff:used()))
             -- 将读取到的用户调试日志通过"SEND_DATA_REQ"消息publish给tcp发送出去
             sys.publish("SEND_DATA_REQ", err_buff:toStr(0, err_buff:used()))
-        end
-        new_flag = errDump.dump(err_buff, errDump.TYPE_USR)
-        if not new_flag then
-            log.info("没有新数据了,删除用户调试日志")
+            --手动读取的话需要手动删除日志,否则下次读取会继续读取上次的日志
+            log.info("读取完用户调试日志,删除用户调试日志")
             errDump.dump(nil, errDump.TYPE_USR, true)
         end
         sys.wait(15000)
-        errDump.record("测试一下用户的调试日志记录功能") --写入用户的调试日志,注意最大只有4KB,超过部分新的覆盖旧的
+        --写入用户的调试日志测试,注意最大只有4KB,超过部分新的覆盖旧的
+        errDump.record("测试一下用户的调试日志记录功能")
     end
 end
 

+ 1 - 1
module/Air8000/demo/errDump/errdump_tcp/tcp_client_main.lua

@@ -24,7 +24,7 @@ local tcp_client_sender = require "tcp_client_sender"
 -- 点击 打开TCP 按钮,会创建一个TCP server
 -- 将server的地址和端口赋值给下面这两个变量
 local SERVER_ADDR = "112.125.89.8"
-local SERVER_PORT = 48481
+local SERVER_PORT = 47305
 
 -- tcp_client_main的任务名
 local TASK_NAME = tcp_client_sender.TASK_NAME

+ 2 - 2
module/Air8000/demo/errDump/main.lua

@@ -66,11 +66,11 @@ require "netdrv_device"
 -- require "auto_dump_air_srv"
 
 --自动上报异常日志到自建UDP平台
-require "auto_dump_udp_srv"
+-- require "auto_dump_udp_srv"
 
 --手动读取异常日志并通过串口和TCP传输
 --加载手动读取异常日志模块
--- require "errdump_read"
+require "errdump_read"
 
 
 -- 用户代码已结束---------------------------------------------

+ 7 - 12
module/Air8101/demo/errdump/errdump_read.lua

@@ -28,31 +28,26 @@ local function test_user_log()
         sys.publish("ERRDUMP_DATA_SEND_UART", err_buff:toStr(0, err_buff:used()))
         -- 将读取到的系统异常日志通过"SEND_DATA_REQ"消息publish给tcp发送出去
         sys.publish("SEND_DATA_REQ", err_buff:toStr(0, err_buff:used()))
-    end
-    --手动读取的话需要手动删除日志,否则下次读取会继续读取上次的日志
-    --  errDump.dumpf返回值:true表示本次读取前并没有写入数据,false反之,在删除日志前,最好再读一下确保没有新的数据写入了
-    new_flag = errDump.dump(err_buff, errDump.TYPE_SYS)
-    if not new_flag then
-        log.info("没有新数据了,删除系统错误日志")
+        --手动读取的话需要手动删除日志,否则下次读取会继续读取上次的日志
+        log.info("读取完系统错误日志,删除系统错误日志")
         errDump.dump(nil, errDump.TYPE_SYS, true)
     end
     -- 开机读取完系统异常日志后循环读取用户调试日志
     while true do
         local new_flag = errDump.dump(err_buff, errDump.TYPE_USR)
-        if new_flag then
+        if err_buff:used() > 0 then
             log.info("errBuff", err_buff:toStr(0, err_buff:used()))
             -- 将数据data通过"ERRDUMP_DATA_SEND_UART"消息publish给串口发送出去
             sys.publish("ERRDUMP_DATA_SEND_UART", err_buff:toStr(0, err_buff:used()))
             -- 将读取到的用户调试日志通过"SEND_DATA_REQ"消息publish给tcp发送出去
             sys.publish("SEND_DATA_REQ", err_buff:toStr(0, err_buff:used()))
-        end
-        new_flag = errDump.dump(err_buff, errDump.TYPE_USR)
-        if not new_flag then
-            log.info("没有新数据了,删除用户调试日志")
+            --手动读取的话需要手动删除日志,否则下次读取会继续读取上次的日志
+            log.info("读取完用户调试日志,删除用户调试日志")
             errDump.dump(nil, errDump.TYPE_USR, true)
         end
         sys.wait(15000)
-        errDump.record("测试一下用户的调试日志记录功能") --写入用户的调试日志,注意最大只有4KB,超过部分新的覆盖旧的
+        --写入用户的调试日志测试,注意最大只有4KB,超过部分新的覆盖旧的
+        errDump.record("测试一下用户的调试日志记录功能")
     end
 end
 

+ 1 - 1
script/libs/exvib1.lua

@@ -12,9 +12,9 @@
 1. GPIO 中断检测:通过 GPIO 引脚检测震动传感器产生的脉冲信号
 2. 双重消抖机制:
   - io中断消抖  gpio.debounce()
-  - 脉冲内部消抖 (debounce_pulse)
 3. 时间窗口检测:在指定时间窗口(time_window)内统计脉冲数量
 4. 阈值触发:当脉冲数超过设定阈值(pulse_threshold)时触发回调
+5. 脉冲超时机制:在检测状态下,如果超过pulse_timeout时间没有新的脉冲,则提前结束当前检测周期并判断是否触发回调
 
 状态机工作流程:
 - IDLE状态:等待第一个有效脉冲