TransferScale.dll传输动态库调用及函数说明 C/C++、C#
一、秤列表文件 ScaleAddress.ini（ASCII格式），放置在主程序目录下，以便DLL文件读取，调用传输接口完成后，可通过读取相应秤的RESULT的值.
    FixScaleList 这个节点中的信息仅供特殊情况下使用，一般不使用。   
    [FixScaleList]
    是否强制下发到固定的秤列表，0停用，1启用
    ForceSendToFixScaleList=0
    强制下发的固定秤号列表，如需同时下发到1号秤、3号秤、5号秤，则ScaleNoList=1,3,5
    ScaleNoList=
   
   system 这个节点中用于指定通讯时商品数据格式
   [system]
   PluName2Flag=0    #默认使用会员价

    以下是以秤号为节点的地址及端口信息
    [1]
    NAME=1号秤
    IP=192.168.1.11
    PORT=3001
    RESULT=
    
    [2]
    NAME=2号秤
    IP=192.168.1.12
    PORT=3001
    RESULT=
    
    节点名称 为 秤号 1~255
    NAME为秤的描述，可选
    IP  为秤的IP地址，必须
    PORT为秤的通讯端口，必须
    RESULT为当前调用相应秤的返回结果：
        0,成功
        1,连接中
        2,下发、回收、删除中
        3,文件打开失败
        4,连接失败
        5,传输失败
        6,域名解析失败
        7,无注册信息
        8,密码错误
        9,超时
        10,通讯异常
        11,人为中止
        其它,未知错误


二、接口函数说明
每个函数均列出了C/C++和C#的函数声明！
1,c/c++ int  __stdcall TestCallFun(int a, int b, char*s);
  C#    [DllImport("TransferScale.dll", EntryPoint = "TestCallFun", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Winapi)]
         public static extern int TestCallFun(int a, int b, string c);
  函数描述: 测试函数，仅用于程序调试时验证接口调用是否正确！
  调用后，程序会显示一个对话框，内容格式为: a=%d,b=%d,a+b=%d,%s.
  参数说明: 无
  返回值:   0

2,c/c++ void __stdcall TestShowForm();
  C#    [DllImport("TransferScale.dll", EntryPoint = "TestShowForm", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Winapi)]
        public static extern void TestShowForm();
  函数描述: 测试函数，显示传输窗口，仅用于程序调试时验证接口调用是否正确！
  参数说明: 无
  返回值:   无

---------------------------------------------------------------------------------------------------
为了调试方便，以下3个函数（3~5）的三个函数均有一个带传入参数提示确认的函数副本：
   RecvDataFromScale  对应副本： RecvDataFromScale_Test
   SendDataToScale    对应副本： SendDataToScale_Test
   DeleteDataFromScale对应副本： DeleteDataFromScale_Test

正式使用请使用以下函数。
---------------------------------------------------------------------------------------------------
3,void __stdcall DoNotShowTransferDialog();
  C#    [DllImport("TransferScale.dll", EntryPoint = "DoNotShowTransferDialog", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Winapi)]
        public static extern void DoNotShowTransferDialog();
  函数描述: 仅在客户程序独立的后台传输程序，为了避免在传输时弹出窗口时使用，其它情况不建议使用。
            在调用以下涉及到传输的接口前调用，调用后直到程序退出，传输窗口均不再显示。
  参数说明: 无
  返回值:   无

4,void SetApplicationPath(char* ApplicationPath);
  C#    [DllImport("TransferScale.dll", EntryPoint = "SetApplicationPath", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Winapi)]
        public static extern void SetApplicationPath(string ApplicationPath);
  函数描述: 对于PB、VB这类开发工具，调试程序时，程序默认路径为开发工具的路径，而不是用户程序实际的路径，此时需通过此接口设置用户程序的路径。
  参数说明: 用户程序的实际路径，如 d:\huihong_scale\,注意最后一定要有"\"。
  返回值:   无

5,c/c++ int  __stdcall RecvDataFromScale(int ScaleNo, int DataType, int FromNo, int ToNo, char*DestFileName);
  C#    [DllImport("TransferScale.dll", EntryPoint = "RecvDataFromScale", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Winapi)]
        public static extern int RecvDataFromScale(int ScaleNo, int DataType, int FromNo, int ToNo, string DestFileName);
  函数描述: 回收秤内数据,每次调用仅支持一台秤
  参数说明:
    ScaleNo  ：秤号, 范围为1~256，对应秤地址端口配置列表文件中相应秤号节点数据
    DataType : 数据类型值, 
        操作员     对应数据类型值为 1204
        商品数据   对应数据类型值为 1207
        附加信息   对应数据类型值为 1209
        条码格式   对应数据类型值为 1214
        皮重值     对应数据类型值为 1215
        预置键     对应数据类型值为 1216
    FromNo，ToNo : 回收数据时的起始编号和结束编号，当两者都等于0时，回收全部数据.  
    DestFileName ：回收数据保存的目标文件
  返回值:
    0：成功 , 其它值失败 或 用户中止.

6,c/c++ int  __stdcall SendDataToScale(char* ScaleNoList, int DataType, char* DataFileName,int DataFormat);      
  C#    [DllImport("TransferScale.dll", EntryPoint = "SendDataToScale", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Winapi)]
        public static extern int  SendDataToScale(string ScaleNoList, int DataType, string DataFileName,int DataFormat);
  函数描述:
  参数说明:
    ScaleNoList ：秤号列表 , 每个秤号的范围为1~256，对应秤地址端口配置列表文件中相应秤号节点数据，相邻秤号之间用半角逗号","分隔，如 1,2,3 
    DataType : 数据类型值, 
        商品数据   对应数据类型值为 1207 , 支持 文本格式 和 二进制格式 的数据文件
        附加信息   对应数据类型值为 1209 , 支持 文本格式 和 二进制格式 的数据文件
        预置键     对应数据类型值为 1216 , 支持 文本格式 和 二进制格式 的数据文件
        秤时间校准 对应数据类型值为 1238 , 支持 文本格式 和 二进制格式 的数据文件，（校时时，DataFileName为空字符串即可。）
        条码格式   对应数据类型值为 1214 , 支持 文本格式 和 二进制格式 的数据文件

       --------------------以下仅支持二进制格式 的数据文件--------------------
         操作员     对应数据类型值为 1204 
         皮重值     对应数据类型值为 1215
         图片       对应数据类型值为 1217
         密码       对应数据类型值为 1218
         公有追溯码 对应数据类型值为 1832
         私有追溯码 对应数据类型值为 1837
         内存数据   对应数据类型值为 1999
    DataFileName : 准备下发的数据文件名(全路径).
         内码数据文本文件数据行示例 及 说明

         A,商品数据文本行
 -------------------- -------------------- -------------------- --------------------
         商品数据中启用5个会员价，即PluName2Flag=0时的数据行格式
 -------------------- -------------------- -------------------- --------------------
     文本行数据项组成：商品编号,货号,部门号,组号,第一品名,第一单价,第二单价,会员价1,会员价2,会员价3,会员价4,会员价5,第一标签号,第二标签号,第三标签号,第一图片号,第2图片号,第3图片号,商品类型,固定重量,条码号,皮重号,计数商品单位,是否打印包装日期,包装日期类型,包装日期偏移量,包装绝对日期,是否打印保质日期,保质日期类型,保质日期偏移量,保质绝对日期,是否打印推荐日期,推荐日期类型,推荐日期偏移量,推荐绝对日期,附加信息号,营养表号,特价开始日期,特价结束日期,特价,是否允许改价,是否允许打折,是否允许特价,是否打印追溯码,计重单位,第二品名
 -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------
      示例数据: 112233,0000123456789,2,3,苹果,123.45,234.56,120.01,120.02,120.03,120.04,120.05,11,22,33,1,2,3,1,322,9,0,个/只,1,1,0,2018-6-5 12:21:23,1,1,111,2018-6-6 15:45:47,1,1,222,2018-6-7 11:22:33,112233,0,2018-5-25 12:23:45,2018-5-25 12:23:45,0,1,0,1,0,0,apple

            商品编号    1~99999999
            货号        <=13个字节
            部门号      0~99999999 (一般填0）
            组号        0~99999999 (一般填0）
            第一品名    <=28个宽字节（中英文均算1个字）
            第一单价    0~9999.99
            第二单价    0~9999.99 (一般填0）

            会员价1     0~9999.99 (没有会员价则填0）
            会员价2     0~9999.99 (没有会员价则填0）
            会员价3     0~9999.99 (没有会员价则填0）
            会员价4     0~9999.99 (没有会员价则填0）
            会员价5     0~9999.99 (没有会员价则填0）

            第一标签号  0~99 (一般填0）
            第二标签号  0~99 (一般填0）
            第三标签号  0~99 (一般填0）
            第一图片号  0~99 (一般填0）
            第2图片号   0~99 (一般填0）
            第3图片号   0~99 (一般填0）
            商品类型    0：计重，1：计数
            固定重量    0~99999 (一般填0）
            条码号      0~99 (一般填0）
            皮重号      0~99 (如没有，则填0）

            计数商品单位      <=4个宽字节（中英文均算1个字）
            是否打印包装日期  0：不打印，1：打印          （一般正常情况下选择 1：打印 ）
            包装日期类型      0：系统时间，1：绝对日期  （一般正常情况下选择 0：系统时间）
            包装日期偏移量    -999~999
            包装绝对日期      yyyy-mm-dd hh:nn:ss
            是否打印保质日期  0：不打印，1：打印         （一般正常情况下选择 1：打印 ）
            保质日期类型      0：保质天数，1：绝对日期 （一般正常情况下选择 0：保质天数）
            保质日期偏移量    0~999
            保质绝对日期      yyyy-mm-dd hh:nn:ss
            是否打印推荐日期  0：不打印，1：打印       （一般正常情况下选择 1：打印 ）
            推荐日期类型      0：推荐天数，1：绝对日期（一般正常情况下选择 0：推荐天数）
            推荐日期偏移量    0~999
            推荐绝对日期      yyyy-mm-dd hh:nn:ss
            附加信息号        0~99999999 (如没有，则填0）
            营养表号          0~99 (如没有，则填0）
            特价开始日期      yyyy-mm-dd hh:nn:ss
            特价结束日期      yyyy-mm-dd hh:nn:ss

            特价              0~9999.99
            是否允许改价      0：不允许，1：允许 (一般填1允许，如果商品数据管理中有此选项，则由用户决定）
            是否打折          0：不允许，1：允许  (一般填1允许，如果商品数据管理中有此选项，则由用户决定）
            是否特价          0：不允许，1：允许 (一般填1允许，如果商品数据管理中有此选项，则由用户决定）
            是否打印追溯码    0：不允许，1：允许 (一般填1允许，如果商品数据管理中有此选项，则由用户决定）
            计重商品计价单位标识    0: 元/kg；1: 元/g；2: 元/100g;  3: 元/500g
            第二品名          <=150个宽字节（中英文均算1个字）

         B,附加信息数据文本行
         文本行数据项组成：附加信息号,附加信息内容
            附加信息内容长度<=150个宽字节（中英文均算1个字），换行符用 [<br>] 表示,分段符用 [<pr>] 表示,计算长度时也是按1个字计算,
            示例数据：     123456,第一段aa[<br>]bb[<br>]cc[<br>]dd[<pr>][<pr>]第三段aaa33test[<pr>]天44天下雨[<br>]难受

         C,预置键文本行
          0,1,1,0,123,apple
          0,1,2,0,128,香梨
          依次是  层（0:第1层，1：第2层）,行号(1~7)，列号(1800/1810秤 1~4, 1811秤 1~11),  固定为0，表示商品预置键， 商品编码(PLU号),   商品名称(可空)
          如：0,1,2,0,128,香梨
　　　　　表示：第1层，第1行，第2列，PLU预置键，PLU号128，品名：香梨
         D,条码格式文本行
          1,1,0,0,0,0,0,21PPPPPBBBBBC

          依次是：条码格式编号（1~99）
                       条码类型（0~6，0：EAN8；1：EAN13；2：ITF25；3：CODE128；4：EAN13+5；5：UPC-A；6：QR）
                       数量移位（0~3；0：不移位，1~3表示左移1~3位）
                       单价移位（0~2；0：不移位，1~2表示右移1~2位）
                       货号移位（0~8；0：不移位，1~8表示右移1~8位）
                       重量移位（0~2；0：不移位，1~2表示右移1~2位）
                       总价移位（0~2；0：不移位，1~2表示右移1~2位）
                       条码的文本格式内容，其中P表示PLU号，A表示货号，U表示单价，Q表示净含量，B表示总价；W表示组号；K表示部门号；S表示秤号；O表示操作员号；D表示当前日期；N表示流水号；Z表示追溯码；QR格式条码时，1310表示回车换行
        
    DataFormat   : 准备下发的数据文件的格式,0表示文本, 1表示二进制文件(仅限辉宏自主开发的程序使用). 
返回值:
    0：成功 , 其它值失败 或 用户中止.

7,c/c++ int  __stdcall DeleteDataFromScale(char* ScaleNoList, int DataType, int FromNo, int ToNo);      
  C#    [DllImport("TransferScale.dll", EntryPoint = "DeleteDataFromScale", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Winapi)]
         public static extern int  DeleteDataFromScale(string ScaleNoList, int DataType, int FromNo, int ToNo);
函数描述:
参数说明:
    ScaleNoList ：秤号列表 , 每个秤号的范围为1~256，对应秤地址端口配置列表文件中相应秤号节点数据，相邻秤号之间用半角逗号","分隔，如 1,2,3 
    DataType : 数据类型值, 
       操作员     对应数据类型值为 1204 , 支持单个删除及全部批量删除
       商品数据   对应数据类型值为 1207 , 支持单个删除及全部批量删除
       附加信息   对应数据类型值为 1209 , 支持单个删除及全部批量删除
       条码格式   对应数据类型值为 1214 , 支持单个删除及全部批量删除
       皮重值     对应数据类型值为 1215 , 支持单个删除及全部批量删除
       预置键     对应数据类型值为 1216 , 仅支全部批量删除
       图片       对应数据类型值为 1217 , 仅支全部批量删除
       密码       对应数据类型值为 1218 , 支持单个删除及全部批量删除
       公有追溯码 对应数据类型值为 1832 , 仅支全部批量删除
       公有追溯码 对应数据类型值为 1837 , 仅支全部批量删除
    FromNo，ToNo : 删除数据时的起始编号和结束编号，当两者都等于0时，删除全部数据.  
返回值:
    0：成功 , 其它值失败 或 用户中止.
