1.1 版本说明
文档版本号 | SDK 版本 | 发布日期 | 更新内容 |
---|---|---|---|
v3.0.0.1 | v3.0.0.1 | 2023.3.17 | 升级算法,发布新版本 |
v3.0.1.0 | v3.0.1.0 | 2023.5.15 | 新增识别并返回图片接口AutoDetectWithPic 优化识别时获取图片的逻辑 |
v3.0.1.1 | v3.0.1.1 | 2023.5.29 | 修改sn校验接口;修复deleted字段缺失,自动新增不生效的问题 |
v3.0.1.2 | v3.0.1.2 | 2023.6.1 | 新增批量配图接口 |
v3.0.2.0 | v3.0.2.0 | 2023.6.29 | 1.新增重新打开摄像头接口:ReopenCamera 2.新增上传单条数据接口:UploadSingleData 3.新增上传数据库接口:UploadDatabase 4.新增根据plul列表下载数据接口:DownloadDatabase 5.新增根据时间下载最新数据接口:DownloadDatabaseAuto 6.新增接口:SetFeedBackMixed,用于区分混称或非混称商品 7.新增接口:GetDownloadDatabaseSize获取当前需要自动同步数据的数量 8.新增接口:GetCropPoint,获取不规则裁剪秤盘设定的坐标 |
v3.0.2.1 | v3.0.2.1 | 2023.07.19 | 1.新增网络请求超时错误码:-4028 2.优化上传单条商品数据接口 UploadSingleData,并新增错误码:-4012 3.新增配置文件检测 |
1.2 文档概述
此文档用于说明元芒数字(WM)i 识别(AceKG)系统(简称 WmAceKG) Windows 系统接口开发使用,集成相关软件包,以实现相关功能的接口说明文档
1.3 术语定义及说明
- 术语说明
-
DLL:集成在 Windows 端的软件包;
-
商品ID:用来唯一标识商品信息,可以是商品条码plu、商品code、商品id等,但在接口中要统一使用。
-
本文中所有传输内容无特殊说明均使用 ANSI 编码;
-
本文中的 DLL 适用于操作系统 Windows 7以上的版本,支持 32 或 64 位操作系统
二、 调用方法说明
2.1 集成方法说明
-
将压缩包内所有 DLL 放在程序可执行目录下即可
-
客户端加载WmAceKG-x86.dll (32位)
-
加载DLL中的函数即可
2.2 接口调用流程描述
- 初始化dll接口:Init
- 设备初次使用,注册 pos 机:initpos
- 设置摄像头序号 SetCameraId
- 获取秤盘裁剪坐标 GetScaleSetting 如果为空 进入第 5 否则进入第 7
- 首先调用 GetScaleBitmap 获得一张原图 根据原图裁剪左上角 xy 坐标 和 长宽
- 设置秤盘裁剪坐标 SaveScaleSetting
- 调用AutoDetect 接口(其他说明放到对应的接口中了)
- 用户做出选择后,调用setFeedBack 接口,优化算法
2.3 接口时序图
三、 接口说明
所有接口皆返回错误码 不为 0 的情况皆是错误
具体业务返回值都在参数里面 作为引用传递 最后修改传入参数为最终结果
3.1 Init ( 初始化 )
-
使用场景:初始化dll所需参数
-
函数原型:在使用dll时(在程序最开始的时候首先调用此接口),先完成初始化,再调用其他接口
Init()
-
返回值: 0 代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int Init();
3.2 InitPos (注册 POS 接口 )
-
使用场景:初始化识别所需要的内容,以及验证sncode是否正确,该接口需要连接互联网。注册成功后则无需再次调用。
-
(注):posCode:3-30位,不可重复
-
函数原型:
InitPos(char* tenant,char* posCode,char* snNo)
-
请求参数:
请求参数 必填 类型 描述 tenant Y char* 租户代码,线上申请后邮件发送 posCode Y char* pos机的编号,可自己编辑,一旦对应不可更改 snNo Y char* sdk 码必填 -
返回值: 0 代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int InitPos(StringBuilder tenant, StringBuilder posCode, StringBuilder snNo); // 关于这几个参数 请咨询运维人员 StringBuilder tenant = new StringBuilder("demo"); StringBuilder posCode = new StringBuilder("zyx"); StringBuilder snNo = new StringBuilder("123"); InitPos(tenant, posCode, snNo);
3.3 SetCameraId (初始化摄像头-设置开启摄像头id)
-
使用场景:由于设备可能有多个摄像头,提前设定好具体是哪个摄像头,默认是 0 。
-
(注):当close()之后,都必须再次调用此接口。
-
函数原型:
SetCameraId (int num)
-
参数说明:
请求参数 必填 类型 描述 num Y int 摄像头序号,一般从0开始 -
返回值: 0 代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int SetCameraId(int num); SetCameraId(0);
3.4 GetScaleBitmap (初始化秤盘信息-获取全景照片)
-
使用场景:AI识别的是秤盘上的物品,需要提前标定好秤盘的位置,在标定秤盘位置前,获取全景照片准备开始标定(裁剪)秤盘。**!!注意:调用之前,请设置摄像头序号。**如果未设置裁剪坐标 ,不会返回裁剪后的cropPath,只会返回原图路径。如果设置了裁剪坐标,原图和裁剪后的图都会返回
-
函数原型
SetCameraId (int num)
-
参数说明
请求参数 必填 类型 描述 rawPath Y char* 原图路径 该值为引用传递 调用后会修改成最终结果 cropPath Y char* 裁剪后的图片路径 该值为引用传递 调用后会修改成最终结果 -
返回值:0代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int GetScaleBitmap(StringBuilder path1, StringBuilder path2); // 原图路径 StringBuilder path1 = new StringBuilder( 128 ); // 裁剪后的图片路径 StringBuilder path2 = new StringBuilder( 128 ); int code = GetScaleBitmap(path1, path2);
3.5 SaveScaleSetting (初始化秤盘信息-标定秤盘并保存坐标信息)
-
使用场景:AI识别的是秤盘上的物品,在识别商品时,AI只识别标定内的物品,该接口用来传递秤盘位置信息。秤盘必须为矩形,推荐宽高比例为4:3,比例为4:3的时识别的精度最高,识别最准。默认像素为640*480,所以x+width <640 y+height <480 并且 x!=0,y!=0。
-
函数原型:
SaveScaleSetting (int x,int y,int width,int height);
-
参数说明:
请求参数 必填 类型 描述 x Y int 左上角 x 坐标值 y Y int 左上角 y 坐标值 width Y int 宽度 height Y int 高度 -
返回值:0 代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int SaveScaleSetting(int x, int y, int width, int height); SaveScaleSetting( 1 , 1 , 512 , 384 );
3.6 GetScaleSetting (判断秤盘是否已标定)
-
使用场景:AI识别的是秤盘上的物品,在识别商品时,会提前判断本次秤盘是否已被标定,如果没有被标定,请重新初始化秤盘。
-
函数原型:
GetScaleSetting(int& x,int& y,int& width,int& height);
-
参数说明
请求参数 必填 类型 描述 x Y int& 左上角 x 坐标值 该值为引用传递 调用后会修改成最终结果 y Y int& 左上角 y 坐标值 该值为引用传递 调用后会修改成最终结果 width Y int& 宽度 该值为引用传递 调用后会修改成最终结果 height Y int& 高度 该值为引用传递 调用后会修改成最终结果 -
返回值:0 代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int GetScaleSetting(ref int x, ref int y, ref int width, ref int height); int x = 0 ; int y = 0 ; int width = 0 ; int height = 0 ; int code = GetScaleSetting(ref x, ref y, ref width, ref height);
3.7_1 AutoDetect (商品识别)
-
使用场景:开始识别商品,调用此接口;建议在重量触发时,秤盘稳定读数且读数>30g后调用
-
注:与AutoDetectWithPic接口,除是否有识别图片返回之外,无其他区别,依据需求对接一个即可。
-
函数原型:
AutoDetect(char* productcode, char* sessionId)
-
参数说明
请求参数 必填 类型 描述 Productcode Y char* 最匹配的商品代码 用逗号分割 该值为引用传递 调用后会修改成最终结果 sessionId Y char* 打称记录的 id 该 id 随机生成 该值为引用传递 调用后会修改成最终结果 -
返回值: 0 代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int AutoDetect(StringBuilder productcode, StringBuilder sessionId); // 商品代码 StringBuilder productCodes = new StringBuilder( 500 ); StringBuilder sessionId = new StringBuilder( 20 ); AutoDetect(productCodes, sessionId);
3.7_2 AutoDetectWithPic(商品识别并返回识别的图像)
-
使用场景:开始识别商品,调用此接口;建议在重量触发时,秤盘稳定读数且读数>30g后调用,
-
函数原型:
AutoDetectWithPic(char* productcodes, char* sessionId,char *path);
-
请求参数:
请求参数** 必填 类型 描述 Productcode Y char* 最匹配的商品代码 用逗号分割 该值为引用传递 调用后会修改成最终结果 sessionId Y char* 打称记录的 id 该 id 随机生成 该值为引用传递 调用后会修改成最终结果 path Y char 识别的商品图像 该值为引用传递 调用后会修改成最终结果 -
返回值:0代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int AutoDetectWithPic(StringBuilder productcode, StringBuilder sessionId,StringBuilder path); // 商品代码 StringBuilder productCodes = new StringBuilder(500); StringBuilder sessionId = new StringBuilder(20); StringBuilder path = new StringBuilder(128); AutoDetectWithPic(productCodes, sessionId,path);
3.8_1 SetFeedBack (保存识别结果)
-
使用场景:识别后传入选中结果(正确商品的code)和是否选中(hit),调用此接口,用于优化算法。
-
关于hit字段详解:第一次使用dll 里面是没有任何商品信息的这个时候你调用AutoDetect会返回你一个空字符串你需要自己搜索一个商品 然后使用保存函数 hit=false再次使用AutoDetect这个时候 会把你上次保存的商品代码返回因为本次识别,已经将商品对应的代码返回 所以使用保存函数的时候 hit=true 总结:商品代码AutoDetect只返回一个正确结果就是true,其他都为false
-
函数原型:
SetFeedBack (const char* code, char* sessionId, bool hit,char* productName)
-
参数说明
请求参数 必填 类型 描述 code Y const char* 选择的商品代码 sessionId Y char* 打称记录 Id hit Y bool 是否命中 productName Y char* 商品名称 -
返回值:0代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int SetFeedBack(byte[] code, StringBuilder sessionId,bool hit,byte[] productName); SetFeedBack(System.Text.Encoding.UTF8.GetBytes("00174"), sessionId, false,System.Text.Encoding.UTF8.GetBytes("FF散称商品"));
3.8_2 SetFeedBackMixed(保存识别结果)
-
使用场景:使用方式与setfeedback相同,接口新增了mixed参数,用于在使用混称方案时,区分混称和非混称商品,来做识别优化。
-
函数原型
SetFeedBackMixed (const char* code, char* sessionId, bool hit,char* productName,bool mixed)
-
参数说明
请求参数 必填 类型 描述 code Y const char* 选择的商品代码 sessionId Y char* 打称记录 Id hit Y bool 是否命中 productName Y char* 商品名称 mixed N bool 是否为混称商品 -
返回值:0代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int SetFeedBack(byte[] code, StringBuilder sessionId,bool hit,byte[] productName,bool mixed); SetFeedBack(System.Text.Encoding.UTF8.GetBytes("00174"), sessionId, false,System.Text.Encoding.UTF8.GetBytes("FF散称商品"),false);
3.9 SetNoRecommend(删除商品学习结果)
-
使用场景:删除商品学习结果
-
函数原型
SetNoRecommend (const char* code)
-
参数说明
请求参数 必填 类型 描述 code Y const char* 商品代码 ---------- -------- ------------ -------- -
返回值: 0 代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int SetNoRecommend(byte[] code); SetNoRecommend(System.Text.Encoding.UTF8.GetBytes("00174"));
3.10 ImportData(导入学习数据)
-
使用场景:如果拥有另一台机器已经学习完毕 可以使用该函数将学习数据导入。导入之后必须重启程序导入的文件名不能带有中文字符
-
函数原型:
ImportData(char* path);
-
参数说明:
请求参数 必填 类型 描述 path Y const char* 导入的文件路径 -
返回值: 0代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int ImportData(StringBuilder path); StringBuilder path = new StringBuilder(20); path = "/xxxx"; ImportData(path);
3.11 ExportData(导出学习数据)
-
使用场景:如果该机器已经学习完毕 可以使用该函数将学习数据导出
-
函数原型:
ExportData(char* path);
-
参数说明:
请求参数 必填 类型 描述 path Y const char* 导出的文件路径 该值为引用传递 调用后会修改成最终结果 -
返回值: 0代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int ExportData(StringBuilder path); StringBuilder path = new StringBuilder(20); ExportData(path);
3.12 Close (关闭资源)
-
使用场景:程序退出时请使用该函数释放资源.调用此函数后,进程没有退出,若需要再次使用dll的接口,需重新进行初始化流程
-
备用函数 : 为了防止部分语言自带函数Close() 提供一个备选函数WMrelease() 供使用
-
函数原型:
Close()
-
返回值: 0代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int Close(); Close();
3.13 UnBindPos (解绑POS)
-
使用场景:解绑SN码
-
函数原型:
UnBindPos(char* tenant, char* snNo);
-
参数说明
请求参数 必填 类型 描述 tenant y char* 租户 snNo y char* 注册码 -
返回值:0代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int UnBindPos(StringBuilder tenant, StringBuilder snNo); UnBindPos(new StringBuilder("demo"),new StringBuilder("123"));
3.14 ClearTrainedData (清空学习记录)
-
使用场景:清空学习记录.使用此函数后,需要重启程序
-
函数原型:
ClearTrainedData();
-
返回值: 0代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int ClearTrainedData(); ClearTrainedData();
**3.15 SelectByName(**自动配图)
-
使用场景:自动匹配商品图片
-
注: 网络不好会导致配图时间延长,断网无法匹配
-
函数原型:
SelectByName(char* name, char* code, char* image)
-
参数说明:
请求参数 必填 类型 描述 name Y char* 商品名字(类型为UTF-8) code Y char* 商品对应的plu image Y char* 返回商品图片对应的URL -
返回值: 0代表成功,其他代表失败
-
调用示例
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int SelectByName(byte[] name, byte[] code, byte[] image);
3.16 FreshChangeError(图片纠错)
-
使用场景:识别的时候出现多个结果,想要删除不想看到的结果,使识别更精确时使用此功能
-
注: 谨慎使用,可能会导致其他商品识别不准
-
函数原型:
FreshChangeError(const char* code)
-
参数说明:
请求参数 必填 类型 描述 code Y char* 商品plu -
返回值: 0代表成功,其他代表失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int FreshChangeError(byte[] name);
3.17 SnCodeVerification(校验sn码)
-
使用场景:获取sn码的状态,校验是否与本机绑定的一致。
-
函数原型:
SnCodeVerification(char* snNo)
-
参数说明:
请求参数 必填 类型 描述 code Y char* sn码 -
返回值: 0代表成功,其他代表失败
-
调用示例
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int SnCodeVerification(byte[] name);
**3.18 Probation(**试用接口)
-
使用场景:在未注册的情况下试用sdk,试用期为15天
-
函数原型:
Probation()
-
返回值: 0代表成功,其他代表失败
-
调用示例
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int Probation();
**3.19 PreLearning(**预学习)
-
使用场景:对指定文件中的商品进行预学习,实现不学习即可识别商品。
-
说明:此功能只是作为方便上手操作使用,由于秤盘不同,预学习的结果并不一定保证100%准确。
-
函数原型:
PreLearning(char* path)
-
参数说明:
请求参数 必填 类型 描述 path Y char* 商品列表文件路径 -
返回值: 0代表成功,其他代表失败
-
文件格式
{"productList":[{"productName":"苹果","productNumber":"123"},{"productName":"香 蕉","productNumber":"456"}]}
-
调用示例
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int PreLearning(byte[] path);
3.20 LrregularScaleSetting(标定秤盘位置信息,支持不规则裁剪秤盘)
-
使用场景: AI识别的是秤盘上的物品,在识别商品时, AI只识别标定内的物品,该接口用来传递秤 盘位置信息,需要传入4个坐标点的位置信息。
-
注:相较于SaveScaleSetting接口,不再强制要求识别区域为规则矩形
-
函数原型:
int LrregularScaleSetting(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
-
参数说明:
请求参数 必填 类型 描述 x1 Y int 点位1 x坐标值 y1 Y int 点位1 y 坐标值 x2 Y int 点位2 x坐标值 y2 Y int 点位2 y 坐标值 x3 Y int 点位3 x坐标值 y3 Y int 点位3 y 坐标值 x4 Y int 点位4 x坐标值 y4 Y int 点位4 y 坐标值 -
返回值: 0代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int LrregularScaleSetting(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4); SaveScaleSetting(1, 1, 10, 200,400,50,300,400);
3.21 BatchMatchImages(批量匹配商品的图片)
-
使用场景:支持批量请求配图接口,需要本地提前准备一份配图商品文件,该文件可以是txt或json 类型。
-
注: 网络不好会导致配图时间延长,超时时间为30s,但断网无法进行匹配商品图片。
-
函数原型:
int BatchMatchImages(char* inPath, char* outPath);
-
参数说明:
请求参数 必填 类型 描述 inpath Y char* 商品列表文件路径 outpath Y char* 匹配结果列表文件路径 -
返回值: 0代表成功,其他代表失败
-
注:本地配图商品文件内容如下
-
inpath:
{"productList":[{"productName":"苹果","productNumber":"123"},{"productName":"香 蕉","productNumber":"456"}]}
-
outpath:
{"productList":[{"productName":"苹果","productNumber":"123","matchProductUrl":"http://standard-product-picture- test.oss-cn-beijing.aliyuncs.com/wmsaas-prod/苹果 .jpg"},{"productName":"香 蕉","productNumber":"456","matchProductUrl":"http://standard-product-picture- test.oss-cn-beijing.aliyuncs.com/wmsaas-prod/香蕉 .jpg"}]}
-
-
调用示例
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int BatchMatchImages(byte[] inPath,byte[] outPath);
3.22 UploadSingleData(上传单条数据)
-
使用场景:识别完成后,本次识别结果需要上传时,调用该接口
-
函数原型:
int UploadSingleData(char* code, char* client, char* sessionId)
-
参数说明:
请求参数 必填 类型 描述 code Y char* 商品code client Y char* 客户名称 sessionId Y char* 识别返回sessionId -
返回值: 0代表成功,其他代表失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int UploadSingleData(byte[] code,byte[] client, byte[] sessionId);
**3.23 UploadDatabase(**上传数据库)
-
使用场景:将本地数据库文件上传到云端
-
函数原型:
int UploadDatabase(char* client)
-
参数说明:
请求参数 必填 类型 描述 client Y char* 客户名称 -
返回值: 0代表成功,其他代表失败
-
调用示例
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int UploadDatabase(byte[] client);
3.24 DownloadDatabase(指定plu下载云端学习数据)
-
使用场景:从指定的plu列表中,下载云端学习数据
-
函数原型:
int DownloadDatabase(char* client, char* path)
-
参数说明:
请求参数 必填 类型 描述 client Y char* 客户名称 path Y char* plu列表文件路径 -
返回值: 0代表成功,其他代表失败
-
注:plu列表文件使用txt格式即可,plu之间用逗号分割即可(不能用中文字符),例: 1001,1002
-
调用示例
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int DownloadDatabase(char* client, char* path);
**3.25 DownloadDatabaseAuto(**根据时间戳下载最新学习数据)
-
使用场景:云端根据上次下载时间判断,本次自动下载最新的学习数据
-
函数原型:
int DownloadDatabaseAuto(char* client)
-
参数说明:
请求参数 必填 类型 描述 client Y char* 客户名称 -
返回值: 0代表成功,其他代表失败
-
调用示例
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int DownloadDatabaseAuto(byte[] client);
**3.26 GetDownloadDatabaseSize(**获取从云端下载数据的数量)
-
使用场景:根据时间戳下载最新学习数据前调用此接口,获取本次从云端下载数据的数量
-
函数原型:
int GetDownloadDatabaseSize(char* client,int &size)
-
参数说明:
请求参数 必填 类型 描述 client Y char* 客户名称 size Y int& 数据大小,该值为引用传递,会在接口内部修改参数的值 -
返回值: 0代表成功,其他代表失败
-
调用示例
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int GetDownloadDatabaseSize(byte[] client,ref int size);
3.27 ReopenCamera(重新打开摄像头)
-
使用场景:针对反馈的摄像头设备问题,提供重新打开接口。
-
函数原型:
int ret = ReopenCamera (int num)
-
参数说明:
请求参数 必填 类型 描述 num Y int 摄像头序号, 一般从 0 开始 -
返回值: 0代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int ReopenCamera(int num); ReopenCamera(0);
3.28 GetCropPoint(获取不规则裁剪秤盘设定的坐标)
-
使用场景:获取不规则裁剪接口(LrregularScaleSetting)标定的坐标。
-
注:坐标会按照逆时针排序的方式返回。
-
函数原型:
int GetCropPoint(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);
-
参数说明:
请求参数 必填 类型 描述 x1 Y int 点位1 x坐标值 该值为引用传递 调用后会修改成最终结果 y1 Y int 点位1 y 坐标值 该值为引用传递 调用后会修改成最终结果 x2 Y int 点位2 x坐标值 该值为引用传递 调用后会修改成最终结果 y2 Y int 点位2 y 坐标值 该值为引用传递 调用后会修改成最终结果 x3 Y int 点位3 x坐标值 该值为引用传递 调用后会修改成最终结果 y3 Y int 点位3 y 坐标值 该值为引用传递 调用后会修改成最终结果 x4 Y int 点位4 x坐标值 该值为引用传递 调用后会修改成最终结果 y4 Y int 点位4 y 坐标值 该值为引用传递 调用后会修改成最终结果 -
返回值: 0代表成功 其他皆为失败
-
调用示例:
[DllImport(NativeLibrary, CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)] private unsafe extern static int GetCropPoint(ref int x1, ref int y1,ref int x2, ref int y2,ref int x3, ref int y3,ref int x4, ref int y4); int x1 = 0; int y1 = 0; int x2 = 0; int y2 = 0; int x3 = 0; int y3 = 0; int x4 = 0; int y4 = 0; int code = GetCropPoint(ref x1, ref y1, ref x2, ref y2,ref x3, ref y3,ref x4, ref y4);
附录 1:商品识别返回错误码
错误 码 | 描述 | 解决方案 |
---|---|---|
0 | 成功 | |
-1002 | 正在导入学习资料 | 导入学习资料时请要使用识别和学习功能,并在导 入完成后重新启动程序 |
-1003 | 初始化未完成 | 检查是否成功调用Init函数 |
-1004 | 学习资料为空 | 请检查识别是否成功 |
-2001 | 验证失败 | 检查是否成功调用InitPos函数 |
-2002 | 读取图片失败 | 检查摄像头设备是否正常 |
-2003 | 摄像头打开失败 | 检查摄像头连接是否正常,系统自带相机是否能打 开 |
-2004 | 商品记录未找到 | 检查是否成功调用AutoDetect函数 |
-2005 | sessionId未找到 | 检查是否成功调用AutoDetect函数 |
-2006 | 初始化pos失败 | 检查执行目录是否有dev.ini 如果存在联系运维人员 |
-2007 | 打开文件失败 | 检查传入传入路径是否正确 |
-2008 | 保存坐标,像素长宽失败 | 默认像素为640*480 请确认x+w <640 y+h<480 |
-2009 | 没有设置摄像头剪辑坐标 | 请使用SaveScaleSetting函数保存下坐标 |
-2010 | 坐标参数有值小于或等于0 | 坐标参数应大于0 |
-2011 | 坐标参数有值大于或等于640 | 默认像素为640*480 请确认 |
-2012 | 坐标参数有值大于或等于480 | 默认像素为640*480 请确认 |
-3001 | 该名称没有匹配到照片 | 请检查名称是否合理 |
-3002 | 请求照片失败 | 请检查传入的名字是否合法 |
-3003 | 读取文件失败 | 请检查传入的文件路径是否正确,查看传入文件的 格式是否正确 |
-4001 | snCode没有找到 | snCode没有找到 |
-4002 | poscode错误,该posCode已绑 定其他mac地址 | 该posCode已绑定其他mac地址,请更换posCode |
-4003 | mac地址错误,该设备已被绑定 | 该设备的mac地址已被绑定,请解绑后再绑定 |
-4004 | 租户没找到 | tenantCode没有找到 |
-4005 | snCode没有绑定设备 | snCode并未绑定 |
-4006 | 解绑失败 | 该pos现在的mac地址和服务器记录的mac地址不 一致 无法解绑 |
-4007 | sn错误,该sn码已绑定其他设备 | 该sn码已绑定其他设备,请更换sn码 |
-4012 | 任务繁忙 | 该客户上传的向量数据正在处理,请稍后重试 |
-4028 | 网络请求超时 | 检测一下设备网络状态 |
附录 2:用例说明
定义个布尔变量,当重量小于 10g 的时候,该变量为 false,
当重量有变化大于 30g 的时候且同时该变量为 false,进行识别,并把该变量设置为 true
附录 3:配置文件参数说明
1.openSync
此参数位局域网同步控制参数, 0为关闭局域网同步, 1为开启局域网同步,如果两台机器都开启了局域 网同步, A机器再次学习后的数据会同步到B机器上。
2.saveImage
1为保存识别图片, 0 为不保存识别图片
注:每次重新初始化dll,都会对之前的识别图像进行清理,不会积存。
3.driveAi
这个参数为识别时使用的物理驱动, 1.为使用GPU,0为使用cpu
4.dataLevel
此参数为学习数据存储上限, 1为30000 ,2为50000,其他为100000
5.mixed
这个参数为是否使用混称方案,启用混称方案时会对数据库进行划分,针对混称和非混称的数据,做不 同上限的储存。