1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/wibim-luat-jt808

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
shkmng.lua 2 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
wibim.zhao@gmail.com Отправлено 15.02.2020 09:44 4ce2b11
--[[
模块名称: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)

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/wibim-luat-jt808.git
git@api.gitlife.ru:oschina-mirror/wibim-luat-jt808.git
oschina-mirror
wibim-luat-jt808
wibim-luat-jt808
master