最近完成了一个项目,流程如下图
1、平台
主要提供给运维人员/专班领导的后台,在相关功能模块中有例如终端设备的动态以及抓拍设备的编辑。其中,终端设备是工控程序的盒子,每个工控是唯一的,具有唯一标识clientId,添加的时候要根据工控盒子的自定义来管理它们,添加之后我们就可以在工控程序中推发消息/状态信息了。
2、工控
工控的系统环境为Linux(也因此在后续的测试中发现了海康SDK在windos和linux的差异化和一个在我看来比较严重的问题,后续我会说明并跟进的)。工控程序主要为平台和海康设备提供中间交互的一个程序,包括摄像头撤防布防,添加授权名单,以及控制道闸的升起等,而且也会定时的推送设备状态信息返回给平台,如有需要运维人员可以查看设备的在线状态及操作授权名单的是否成功。
3、海康设备
设备均为采购于海康威视,主要分为人脸识别门禁机和车辆识别摄像头,门禁机为DS-K1T6系,而摄像头多为DS-TCG系或IDS-2CD系列。门禁机主要提供在某某酒店的入口处,用于识别通行人是否为酒店工作人员,控制人员出入。而车辆识别摄像头主要提供给地下停车场,识别车辆是否非法。
4、出现的问题
在windows环境测试的时候删除人脸功能都是OK的,但部署在linux测试的时候发现删除人脸总会报错误码[23],即设备不支持。怎么可能设备不支持呢,明明是可以删除人脸的呀,那到底是哪里出现问题了呢。左思右想,先统一一下海康库文件的版本吧。然后发现还是报了错误码,这次不一样是[29]。怎么回事呢,又琢磨了一个上午测试好几遍还是没法解决,只能请海康的专家出手了。经过和专家间的交流,我们在代码中指定了加载海康SDK时对libcrypto和libssl文件的指定加载,一般没指定的话就会报异常错误码[29]。解决过后测试还是出现错误码[23],这次专家说可能是代码问题,我将部分相关代码截图发给他,专家看完然后说需要在删除人脸的请求中加"\r\n",且在url的长度+1。他解释说是URL后面带了其他信息,把内存后面的非URL数据传入进去了,经过测试最终成功,linux环境已经没问题了,感谢专家细心的帮助!