工作中偶尔需要使用扫码枪进行扫码到电脑上,但是手头又没有扫码枪,跟老板说买一把,老板觉得这东西不常用。于是想着是否可以利用手机扫码功能…到微信小程序里搜索“扫码枪”,发现里面有一个叫“超级扫码枪”的小程序,当看完它实现的功能,瞬间想起“贫穷限制了你的想象力”这句话。下面是关于超级扫码枪的介绍:
超级扫码枪是一款通过小程序扫码(条形码,二维码)后,实时发送到电脑(PC)的轻应用。适用于扫商品包装上的条形码或二维码、扫快递单号、扫发票二维码等等。
我就在琢磨它的实现原理,我自己是否也可以实现它的功能。再者说,一款软件有它的优点自然也有它的缺点,我要实现该软件的基本功能就得比它更简单、更安全、更易使用。于是,立项,开干!!!
需求
实现手机变扫码枪,调用手机摄像头扫码后实时发送到电脑(PC)的文本框内。
任务解析
- 首先要想电脑(PC)端怎么模拟键盘录入信息
- 其次手机端怎么调用摄像头并扫码
- 最后手机端要把扫码结果发送到电脑(PC)端
实战
- 电脑(PC)端写个Java客户端Swing程序,并利用Robot模拟键盘录入。Java客户端的实现借鉴了两个项目:
https://gitee.com/wmazh/easytodo
https://gitee.com/s2689763871_admin/sftptool - 手机端写个H5页面调用手机摄像头并扫码【注意:用html5-qrcode 要求web服务器必须https协议访问,如果不是的话,是不能使用webRTC的,也就没有获取摄像头的权限了。】
使用了这个前端类库:https://github.com/mebjas/html5-qrcode
这是H5的示例:https://github.com/mebjas/html5-qrcode/tree/master/examples/html5
结合它提供的线上实例:https://blog.minhazav.dev/research/html5-qrcode.html - 电脑(PC)端起WebSocket服务,手机端连接该服务并实时发送消息【该方案的局限性,手机端和电脑端必须在一个wifi下才可以进行通讯发送消息】
演示效果
资源链接
项目源码地址:https://gitee.com/zkool/h5-barcode-gun
电脑(PC)端下载地址:H5扫码枪 V1.0 · zkool/h5-barcode-gun
视频介绍地址:https://www.bilibili.com/video/BV1CH4y1L78Z