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(); } }