39 lines
1.3 KiB
Lua
39 lines
1.3 KiB
Lua
|
|
--- 模块功能:扫码.
|
|||
|
|
-- 支持二维码、条形码扫描
|
|||
|
|
-- @module scanCode
|
|||
|
|
-- @author openLuat
|
|||
|
|
-- @license MIT
|
|||
|
|
-- @copyright openLuat
|
|||
|
|
-- @release 2018.9.19
|
|||
|
|
|
|||
|
|
require"sys"
|
|||
|
|
module(..., package.seeall)
|
|||
|
|
|
|||
|
|
local sCbFnc
|
|||
|
|
|
|||
|
|
--- 设置扫码请求
|
|||
|
|
-- @function cbFnc 扫码返回或者超时未返回的回调函数,回调函数的调用形式为:
|
|||
|
|
-- cbFnc(result,type,str)
|
|||
|
|
-- result:true或者false,true表示扫码成功,false表示超时失败
|
|||
|
|
-- type:string或者nil类型,result为true时,表示扫码类型;result为false时,为nil;支持QR-Code和CODE-128
|
|||
|
|
-- str:string或者nil类型,result为true时,表示扫码结果的字符串;result为false时,为nil
|
|||
|
|
-- @number[opt=10000] timeout 设置请求后,等待扫码结果返回的超时时间,单位毫秒,默认为10秒
|
|||
|
|
-- @usage
|
|||
|
|
-- scanCode.request(cbFnc)
|
|||
|
|
-- scanCode.request(cbFnc,5000)
|
|||
|
|
function request(cbFnc,timeout)
|
|||
|
|
sCbFnc = cbFnc
|
|||
|
|
sys.timerStart(sCbFnc,timeout or 10000,false)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local function zbarMsg(msg)
|
|||
|
|
--log.info("scanCode.zbarMsg",msg.result,sys.timerIsActive(sCbFnc,false))
|
|||
|
|
if msg.result and sys.timerIsActive(sCbFnc,false) then
|
|||
|
|
sys.timerStop(sCbFnc,false)
|
|||
|
|
sCbFnc(true,msg.type,msg.data)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
--注册core上报的rtos.MSG_ZBAR消息的处理函数
|
|||
|
|
rtos.on(rtos.MSG_ZBAR,zbarMsg)
|