在我们成千上万的项目里经常有这样的需求:现场装了工业照相机,需要在中心软件上对照相机进行拍照,并且将照片通过GPRS网络回传到中心软件上并显示。由于照片数据量大(几十到几百K),且连续性强,所以对网络的稳定性就提出了更高的要求,一旦传输出现丢包、错包,导致照片生成失败。
针对于以上的情况,我们设计了一套拍照、取照片机制,即使在较差的网络环境下,依然能保证较高取照片成功率,具体如下。
工业照相机拍照的流程,如下图:
取照片过程及成功率保障手段如下:
1、拍照后,首先返回照片大小及分包数量,用于检查照片包是否完整,如下图。
拍照命令下发一段时间未收到回应的话(时间间隔可设置),此次拍照失败。
2、回传数据包的中有包序号,用于区分数据,如下图。
为了提高速度,回传数据不重发,不需回应。中心软件不断的接收照片数据包并且对每包数据进行校验,如果间隔一段时间(时间间隔可设置)没有收到数据包或者检查到最后一包数据,开始进行查漏补缺。
3、查漏补缺
此步骤用于弥补回传中缺失的数据,上位机会根据第一步的分包大小及第二步收到的包序号集合进行对比,补招缺失的数据包,如下图所示:
补招时每个数据包做多重试多次(次数可根据现场情况调整),如果仍然不能取回,则认为网络条件太差,停止补招,取照片失败。
生成照片
将接收到的照片数据包按照包号顺序组合在一起,生成.jpg格式图片保存到本地指定的文件夹内,并且将本地的照片转换为数据流,存在指定的数据库表内,以便客户查看使用。
工业照相机取照片机制解析更多详情登陆唐山平升网站:www.data86.com