识别二维码

更新时间:2023-08-09 09:25:02

本文介绍智能摄像机(IPC)识别二维码配网的处理流程。二维码配网是 Wi-Fi 配网方式之一,指客户端先向云端获取设备配网信息,根据设备配网信息和客户端所连 Wi-Fi 信息生成二维码,IPC 设备通过扫描二维码提取 Wi-Fi 信息和配网信息,连接 Wi-Fi,并向云端激活的交互过程。

配网流程

识别二维码组件(app_user_qrcode)负责扫码业务的处理,对外提供扫码业务的启动和停止接口。扫码业务流程依次有以下几个环节:

  1. 先获取视频流。

  2. 通过 SDK 进行增强处理。

  3. 再通过调用 zbar 开源解析功能解析二维码。

  4. 判断解析结果:

    • 若解析成功,将结果通知到 event 模块向云端激活处理,并主动结束扫码流程。
    • 若解析失败,则重新获取视频流,直到解析成功或配网超时,被动退出扫码流程。
    客户端IPC云端获取 Token返回 Token根据注册 Token、Wi-Fi SSID、Wi-Fi 密码生成二维码将摄像头对准二维码取视频流,返回二维码提取注册 Token、Wi-Fi SSID、Wi-Fi 密码解析二维码连接热点注册激活轮询设备返回轮询结果则表示配网成功客户端IPC云端

客户端操作流程如下:

识别二维码

限制条件

设备的要求如下:

  • 设备从未配网激活时需要进行配网。
  • 设备被客户端移除后需要配网。
  • 设备被用户手动重置后需要配网。

工作原理

  • 扫码业务处理流程

    NO
    YES
    YES
    NO
    扫码线程启动
    获取视频流
    图像剪裁、放大、二值化等算法预处理
    zbar开源解析
    二维码解析成功?
    扫码任务状态为进行中
    将解析成功结果发送event模块处理
    扫码线程结束
  • 二维码解析后的配网信息依次包含 Wi-Fi SSID、Wi-Fi 密码 以及设备注册 Token。数据格式如下:

    {
        "p":"hi1234567",
        "s":"home_15",
        "t":"AYTWEpxSR66CVz"
    }
    
  • 设备根据 Wi-Fi SSID 和密码连接热点,此时设备才能访问外网。然后设备向云端发送 Token 请求激活。激活成功后,设备才能请求登录 MQTT 服务器。

开发指导

运行环境

关联组件

  • app_sys_msg:消息通信组件
  • app_sys_net:用于发送扫码配网控制消息
  • app_user_event:用于接收和执行扫码配网控制消息
  • app_user_video_capture:码流获取及回调扫码处理业务线程

应用接入二维码配网功能

  • 在业务层 app_user_event 模块的消息接收处理线程中,实现二维码配网控制消息的执行。

    • 当收到配网开始消息(E_TY_MSG_SYS_NET_CONFIG_START)时,调 ty_user_qrcode_start 启动扫码业务。
    • 当收到配网结束消息(E_TY_MSG_SYS_NET_CONFIG_STOP)时,调 ty_user_qrcode_stop 退出扫码业务。
  • 在通用层 app_sys_net 模块中,实现了 AP 启动回调和关闭回调,注册给底层 Wi-Fi 模组,通过回调来启动和停止二维码配网业务。

    • 启动回调(tkl_wifi_start_ap)中,首先配置热点参数,开启热点,然后发送配网开始消息给 event 模块,启动扫码业务。
    • 关闭回调(tkl_wifi_stop_ap)中,首先回收 AP 相关进程,然后发送配网结束消息给 event 模块,退出扫码业务。

API 说明

扫码业务启动

/**
 * @brief 二维码解析启动接口,在设备启动过程中调用,二维码解析完成调用 stop
 *
 * @return int
 */
int ty_user_qrcode_start();

扫码业务结束

/**
 * @brief 二维码解析停止接口,完成解析后调用
 *
 * @return int
 */
int ty_user_qrcode_stop();

常见问题

为什么无法识别二维码?

请检查:

  • 镜头是否干净。
  • 镜头聚焦是否清晰。
  • 获取 YUV 数据是否完整。
    可以通过本地保存 YUV 数据,通过手机扫一扫看能否识别。

为什么远或者近距离、特殊角度识别困难,或者无法识别?

  • 请确认镜头和焦距。
  • 请确认二维码识别是否开启增强服务。
  • 不同角度是否画面是否存在明显畸变。