8 Star 26 Fork 14

wibim / luat-jt808

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
shkmng.lua 2.00 KB
一键复制 编辑 原始数据 按行查看 历史
wibim 提交于 2020-02-15 14:44 . 第一次上代码
--[[
模块名称:shkmng
模块功能:震动传感器中断处理
模块最后修改时间:2017.08.25
]]
module(...,package.seeall)
local function print(...)
_G.print("[--zbb--shkmng",...)
end
local tick = 0
--[[
函数名:timerfnc
功能 :1S中定时回调函数
参数 :无
返回值:无
]]
local function timerfnc()
tick = tick+1
end
local tshkapp =
{
["GPSMOD_OPN_GPS"] = {flg={},idx=0,cnt=_G.GPSMOD_OPN_GPS_VALIDSHK_CNT,freq=_G.GPSMOD_OPN_GPS_VALIDSHK_FREQ},
["LONGPSMOD"] = {flg={},idx=0,cnt=_G.LONGPSMOD_VALIDSHK_CNT,freq=_G.LONGPSMOD_VALIDSHK_FREQ},
["SHKCNT"] = {flg={},idx=0,cnt=_G.SHKCNT_VALIDSHK_CNT,freq=_G.SHKCNT_VALIDSHK_FREQ},
}
local function reset(name)
local i
for i=1,tshkapp[name].cnt do
tshkapp[name].flg[i] = 0
end
tshkapp[name].idx = 0
end
local function shkprint(name,suffix)
local str,i = ""
for i=1,tshkapp[name].cnt do
str = str..","..tshkapp[name].flg[i]
end
print("shkprint fnc",name..suffix,str)
end
--[[
函数名:fnc
功能 :根据震动条件判断是否满足正当要求,然后抛出相应消息
参数 :无
返回值:无
]]
local function fnc()
local k,v
for k,v in pairs(tshkapp) do
shkprint(k,"1")
--print("fnc",k,v.idx,v.cnt,tick,v.flg[v.idx],v.freq)
if v.idx==0 then
v.flg[1] = tick
v.idx = 1
elseif v.idx<v.cnt then
dt = (tick-v.flg[v.idx])
if (dt>v.freq) and (dt<(v.freq*2)) then
v.idx = v.idx+1
if v.idx==v.cnt then
v.idx = 1
v.flg[v.cnt-1] = tick
sys.publish(k.."_VALIDSHK_IND")
print(k.."_VALIDSHK_IND")
else
v.flg[v.idx] = tick
end
elseif dt>=(v.freq*2) then
reset(k)
end
elseif v.cnt == 1 then
sys.publish(k.."_VALIDSHK_IND")
print(k.."_VALIDSHK_IND CNT1")
end
shkprint(k,"2")
end
end
local function shkind()
print("shkind fnc-----------")
fnc()
return true
end
local function init()
local k,v
for k,v in pairs(tshkapp) do
reset(k)
end
end
init()
--注册消息的处理函数
sys.subscribe("DEV_SHK_IND",shkind)
sys.timerLoopStart(timerfnc,1000)
Lua
1
https://gitee.com/wibim/luat-jt808.git
git@gitee.com:wibim/luat-jt808.git
wibim
luat-jt808
luat-jt808
master

搜索帮助