关于扫描仪集成的方案
本想着能在社区抄一把,没想到找不到相关集成的案例,研究了花了不少时间,在此发表一波,代码以及方案设计在附件,特别鸣谢武星老师指导
首先扫描仪不同于打印机等工具,能直接通过其ip找到并调用其服务。接手时没有方案,没有扫描仪调用sdk,客户只提供扫描仪,剩余都是公司在与同事商量,给意见与建议下完成。前期拟定方案为上图所示;
首先是找到产商找到扫描仪驱动与sdk(电商销售平台找售后,售后给厂商联系方式,获取所需文档,驱动,以及sdk使用支持)
考虑到sdk中并没有远程调用扫描仪方法,初定由外部技术集成sdk,提供接口供公司项目调用(调用会启动扫描仪进行扫描,服务内部将扫描到文件自动上传回苍穹并获取返回的文件路径,将返回路径返回给调用方)。此处使用到springboot集成
其中springboot集成扫描仪sdk(将所需jar以及资源文件集成到springboot)以及外部项目访问苍穹文件服务集成(社区里有很多集成案例)并不难,在此就不具体叙述,附件中代码以及注释很全。
集成完成后就是将服务打成exe文件给客户使用,其中涉及将环境参数以及驱动安装等
重点讲讲其中遇到很棘手的问题;其一是扫描仪sdk在集成后第一次访问服务接口可以成功扫描并返回文件路径,但是在之后的调用就会卡住无法扫描,现场同事也帮忙查看原因,无法解决,找到产商的工程师也无法解决,最后发现自己写的测试用例中每次启动都能成功扫描,但扫描后程序结束,由此想到关于线程的问题,最终定位到问题,扫描仪打开后只能由同一条线程调用,这也是项目中使用到的线程池并且池子中只有一条线程的原因(springboot提供服务,会有多条线程处理调用,导致每次调用sdk的线程不是同一条);第二个大问题在打包jar的时候文件目录发生改变以至于sdk所需要的资源文件无法找到,这个问题也困扰了我很长时间,最后在java -jar 后加重载jar的指令(-reload),成功解决问题
希望这篇文章能给您带来帮助,如果有什么疑问也可以直接找到我
扫描仪方案设计定稿.docx(1.33MB)
scanner-server3.rar(2.41MB)
推荐阅读