using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
namespace RFIDServicePlate
{
public class RFID
{
///
/// 连接多标签读写器设备
///
/// 多标签读写器连接类型,0为网口,1为USB口,2为串口,默认值 0;
/// 多标签读写器IP地址,连接类型不为0时会被忽略,默认值“192.168.0.222”
/// 多标签读写器端口,连接类型不为0时会被忽略,默认值 9909
/// 多标签读写器串口号,连接类型不为2时会被忽略
/// 多标签读写器串口波特率,连接类型不为2时会被忽略,默认值 38400
/// 多标签读写器串口帧结构,连接类型不为2时会被忽略,默认值 8E1
/// 0:成功;其他:失败
[DllImport("ReadRfid.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int InitRFIDConn(int optype, string ip, string port, string com, string rate, string opframe);
///
/// 初始化多标签读写器标签读写参数
///
/// 标签扇区号,默认值0
/// 标签数据块号,默认值2
/// 数据内容长度,默认值3
/// 标签验证长度,默认值4
/// 标签验证块号默认值1
/// 标签是否加密 默认值true
/// 0:成功;其他:失败
[DllImport("ReadRfid.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int InitRFIDTagConfig(int secno, int blkno, int BlkLen, int verifylen, int verifybklno, bool ifencrypt);
///
/// 读取多标签数据
///
/// 读取到的标签列表,Key(16字节)+Item(6字节)+Num(2字节
/// Key为标签ID,Item为菜品编号,Num 为菜品数量。
/// Num= 00时,代表拼盘的菜品为半份,读到多个标签时,标签信息之间用 @符号分隔
[DllImport("ReadRfid.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern string TryReadRFTag();
///
/// 写入多标签数据
/// Item为菜品编号,Num 为菜品数量。
/// Item不足6位时,前边补0至六位;Num= 00时,代表拼盘的菜品为半份。Num范围00-99。
///
/// 写入数据格式 Item(6字节)+Num(2字节)
/// 写卡结果
[DllImport("ReadRfid.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern string TryWriteRFTag(string Dishstr);
///
/// 释放非托管资源 ,关闭多标签连接
///
/// 0:释放成功;其它:释放失败
[DllImport("ReadRfid.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int Dis_pose();
}
}