V3版本

Last updated: ... / Reads: 147 Edit

1.1 版本说明

文档版本号SDK 版本发布日期更新内容
v3.0.0.1v3.0.0.12023.3.17升级算法,发布新版本
v3.0.1.0v3.0.1.02023.5.15新增识别并返回图片接口AutoDetectWithPic 优化识别时获取图片的逻辑
v3.0.1.1v3.0.1.12023.5.29修改sn校验接口;修复deleted字段缺失,自动新增不生效的问题
v3.0.1.2v3.0.1.22023.6.1新增批量配图接口
v3.0.2.0v3.0.2.02023.6.291.新增重新打开摄像头接口:ReopenCamera
2.新增上传单条数据接口:UploadSingleData
3.新增上传数据库接口:UploadDatabase
4.新增根据plul列表下载数据接口:DownloadDatabase
5.新增根据时间下载最新数据接口:DownloadDatabaseAuto
6.新增接口:SetFeedBackMixed,用于区分混称或非混称商品
7.新增接口:GetDownloadDatabaseSize获取当前需要自动同步数据的数量
8.新增接口:GetCropPoint,获取不规则裁剪秤盘设定的坐标
v3.0.2.1v3.0.2.12023.07.191.新增网络请求超时错误码:-4028
2.优化上传单条商品数据接口 UploadSingleData,并新增错误码:-4012
3.新增配置文件检测

1.2 文档概述

此文档用于说明元芒数字(WM)i 识别(AceKG)系统(简称 WmAceKG) Windows 系统接口开发使用,集成相关软件包,以实现相关功能的接口说明文档

1.3 术语定义及说明

  1. 术语说明
  • DLL:集成在 Windows 端的软件包;

  • 商品ID:用来唯一标识商品信息,可以是商品条码plu、商品code、商品id等,但在接口中要统一使用。

  1. 本文中所有传输内容无特殊说明均使用 ANSI 编码;

  2. 本文中的 DLL 适用于操作系统 Windows 7以上的版本,支持 32 或 64 位操作系统

二、 调用方法说明

2.1 集成方法说明

  1. 将压缩包内所有 DLL 放在程序可执行目录下即可

  2. 客户端加载WmAceKG-x86.dll (32位)

  3. 加载DLL中的函数即可

2.2 接口调用流程描述

  1. 初始化dll接口:Init
  2. 设备初次使用,注册 pos 机:initpos
  3. 设置摄像头序号 SetCameraId
  4. 获取秤盘裁剪坐标 GetScaleSetting 如果为空 进入第 5 否则进入第 7
  5. 首先调用 GetScaleBitmap 获得一张原图 根据原图裁剪左上角 xy 坐标 和 长宽
  6. 设置秤盘裁剪坐标 SaveScaleSetting
  7. 调用AutoDetect 接口(其他说明放到对应的接口中了)
  8. 用户做出选择后,调用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)
    
  • 请求参数:

    请求参数必填类型描述
    tenantYchar*租户代码,线上申请后邮件发送
    posCodeYchar*pos机的编号,可自己编辑,一旦对应不可更改
    snNoYchar*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)
    
  • 参数说明:

    请求参数必填类型描述
    numYint摄像头序号,一般从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)
    
  • 参数说明

    请求参数必填类型描述
    rawPathYchar*原图路径 该值为引用传递 调用后会修改成最终结果
    cropPathYchar*裁剪后的图片路径 该值为引用传递 调用后会修改成最终结果
  • 返回值: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);
    
  • 参数说明:

    请求参数必填类型描述
    xYint左上角 x 坐标值
    yYint左上角 y 坐标值
    widthYint宽度
    heightYint高度
  • 返回值: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);
    
  • 参数说明

    请求参数必填类型描述
    xYint&左上角 x 坐标值 该值为引用传递 调用后会修改成最终结果
    yYint&左上角 y 坐标值 该值为引用传递 调用后会修改成最终结果
    widthYint&宽度 该值为引用传递 调用后会修改成最终结果
    heightYint&高度 该值为引用传递 调用后会修改成最终结果
  • 返回值: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)
    
  • 参数说明

    请求参数必填类型描述
    ProductcodeYchar*最匹配的商品代码 用逗号分割 该值为引用传递 调用后会修改成最终结果
    sessionIdYchar*打称记录的 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);
    
  • 请求参数:

    请求参数**必填类型描述
    ProductcodeYchar*最匹配的商品代码 用逗号分割 该值为引用传递 调用后会修改成最终结果
    sessionIdYchar*打称记录的 id 该 id 随机生成 该值为引用传递 调用后会修改成最终结果
    pathYchar识别的商品图像 该值为引用传递 调用后会修改成最终结果
  • 返回值: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)
    
  • 参数说明

    请求参数必填类型描述
    codeYconst char*选择的商品代码
    sessionIdYchar*打称记录 Id
    hitYbool是否命中
    productNameYchar*商品名称
  • 返回值: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)
    
  • 参数说明

    请求参数必填类型描述
    codeYconst char*选择的商品代码
    sessionIdYchar*打称记录 Id
    hitYbool是否命中
    productNameYchar*商品名称
    mixedNbool是否为混称商品
  • 返回值: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)
    
  • 参数说明

    请求参数必填类型描述
    codeYconst 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);
    
  • 参数说明:

    请求参数必填类型描述
    pathYconst 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);
    
  • 参数说明:

    请求参数必填类型描述
    pathYconst 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);
    
  • 参数说明

    请求参数必填类型描述
    tenantychar*租户
    snNoychar*注册码
  • 返回值: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)
    
  • 参数说明:

    请求参数必填类型描述
    nameYchar*商品名字(类型为UTF-8)
    codeYchar*商品对应的plu
    imageYchar*返回商品图片对应的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)
    
  • 参数说明:

    请求参数必填类型描述
    codeYchar*商品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)
    
  • 参数说明:

    请求参数必填类型描述
    codeYchar*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)
    
  • 参数说明:

    请求参数必填类型描述
    pathYchar*商品列表文件路径
  • 返回值: 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);
    
  • 参数说明:

    请求参数必填类型描述
    x1Yint点位1 x坐标值
    y1Yint点位1 y 坐标值
    x2Yint点位2 x坐标值
    y2Yint点位2 y 坐标值
    x3Yint点位3 x坐标值
    y3Yint点位3 y 坐标值
    x4Yint点位4 x坐标值
    y4Yint点位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);
    
  • 参数说明:

    请求参数必填类型描述
    inpathYchar*商品列表文件路径
    outpathYchar*匹配结果列表文件路径
  • 返回值: 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)
    
  • 参数说明:

    请求参数必填类型描述
    codeYchar*商品code
    clientYchar*客户名称
    sessionIdYchar*识别返回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)
    
  • 参数说明:

    请求参数必填类型描述
    clientYchar*客户名称
  • 返回值: 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)
    
  • 参数说明:

    请求参数必填类型描述
    clientYchar*客户名称
    pathYchar*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)
    
  • 参数说明:

    请求参数必填类型描述
    clientYchar*客户名称
  • 返回值: 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)
    
  • 参数说明:

    请求参数必填类型描述
    clientYchar*客户名称
    sizeYint&数据大小,该值为引用传递,会在接口内部修改参数的值
  • 返回值: 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)  
    
  • 参数说明:

    请求参数必填类型描述
    numYint摄像头序号, 一般从 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);
    
  • 参数说明:

    请求参数必填类型描述
    x1Yint点位1 x坐标值 该值为引用传递 调用后会修改成最终结果
    y1Yint点位1 y 坐标值 该值为引用传递 调用后会修改成最终结果
    x2Yint点位2 x坐标值 该值为引用传递 调用后会修改成最终结果
    y2Yint点位2 y 坐标值 该值为引用传递 调用后会修改成最终结果
    x3Yint点位3 x坐标值 该值为引用传递 调用后会修改成最终结果
    y3Yint点位3 y 坐标值 该值为引用传递 调用后会修改成最终结果
    x4Yint点位4 x坐标值 该值为引用传递 调用后会修改成最终结果
    y4Yint点位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函数
-2005sessionId未找到检查是否成功调用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读取文件失败请检查传入的文件路径是否正确,查看传入文件的 格式是否正确
-4001snCode没有找到snCode没有找到
-4002poscode错误,该posCode已绑 定其他mac地址该posCode已绑定其他mac地址,请更换posCode
-4003mac地址错误,该设备已被绑定该设备的mac地址已被绑定,请解绑后再绑定
-4004租户没找到tenantCode没有找到
-4005snCode没有绑定设备snCode并未绑定
-4006解绑失败该pos现在的mac地址和服务器记录的mac地址不 一致 无法解绑
-4007sn错误,该sn码已绑定其他设备该sn码已绑定其他设备,请更换sn码
-4012任务繁忙该客户上传的向量数据正在处理,请稍后重试
-4028网络请求超时检测一下设备网络状态

附录 2:用例说明

**1.**有重量变化即识别

定义个布尔变量,当重量小于 10g 的时候,该变量为 false,

当重量有变化大于 30g 的时候且同时该变量为 false,进行识别,并把该变量设置为 true

附录 3:配置文件参数说明

配置文件dev.ini(无特殊解释的不用去修改)

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

这个参数为是否使用混称方案,启用混称方案时会对数据库进行划分,针对混称和非混称的数据,做不 同上限的储存。


Comments

Make a comment