scanCode.lua 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. --- 模块功能:扫码.
  2. -- 支持二维码、条形码扫描
  3. -- @module scanCode
  4. -- @author openLuat
  5. -- @license MIT
  6. -- @copyright openLuat
  7. -- @release 2018.9.19
  8. require"sys"
  9. module(..., package.seeall)
  10. local sCbFnc
  11. --- 设置扫码请求
  12. -- @function cbFnc 扫码返回或者超时未返回的回调函数,回调函数的调用形式为:
  13. -- cbFnc(result,type,str)
  14. -- result:true或者false,true表示扫码成功,false表示超时失败
  15. -- type:string或者nil类型,result为true时,表示扫码类型;result为false时,为nil;支持QR-Code和CODE-128
  16. -- str:string或者nil类型,result为true时,表示扫码结果的字符串;result为false时,为nil
  17. -- @number[opt=10000] timeout 设置请求后,等待扫码结果返回的超时时间,单位毫秒,默认为10秒
  18. -- @usage
  19. -- scanCode.request(cbFnc)
  20. -- scanCode.request(cbFnc,5000)
  21. function request(cbFnc,timeout)
  22. sCbFnc = cbFnc
  23. sys.timerStart(sCbFnc,timeout or 10000,false)
  24. end
  25. local function zbarMsg(msg)
  26. --log.info("scanCode.zbarMsg",msg.result,sys.timerIsActive(sCbFnc,false))
  27. if msg.result and sys.timerIsActive(sCbFnc,false) then
  28. sys.timerStop(sCbFnc,false)
  29. sCbFnc(true,msg.type,msg.data)
  30. end
  31. end
  32. --注册core上报的rtos.MSG_ZBAR消息的处理函数
  33. rtos.on(rtos.MSG_ZBAR,zbarMsg)