基于 Qt Quick+websocket 的Web扫描仪驱动开发
核心需求
- 在浏览器中点击扫描按钮,驱动扫描仪进行扫描,接收图片保存到ftp指定路径。
- 支持扫描仪参数设置
- 出现异常时可重置恢复
- 支持单次扫描接收单张或多张图像
解决方案
- 使用Qt 开发基于 TWAIN 的扫描仪应用(Web扫描服务),通过 websocket 与浏览器实时通信。
- 浏览器网页上点击扫描按钮,自动检测扫描服务是否启动,可打开已安装的 Web扫描服务应用。
- 进入扫描页面时自动连接扫描服务,断开后自动重连。
- 应用默认最小化到托盘。
- 使用 Inno Setup 进行安装包制作。
遇到的坑
- C++ 编译、QtCreator 慢。
- QML 与 C++ 通信,通过
engine.rootContext()->setContextProperty()
注入qml, 在 qml中通过Connections {target: scanner... onXXSignal
接收C++信号。 - TWAIN 协议,状态控制1-7、接收多图像(可撤销)
- 更换电脑安装无法启动(无报错,通过
qInstallMessageHandler()
将日志输出到文件,看到报错原因为:qml相关组件未安装。方案:使用 windeployqt 获取动态库时添加 --qmldir 参数) - 乱码 … …