using GRreader;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace HighWayIot.Rfid
{
public delegate void RecvIdentifyData(ushort iLen, byte[] pData, byte Antenna, UInt16 iDeviceId, string strId);
public enum G2MemBank
{
RESERVED = 0, //保留区
EPC = 1,
TID = 2,
USER = 3,
};
public enum CommType
{
RJ45 = 1, //网口
RS232 = 2, //com口
RS485 = 3, //485接口
};
public enum DeviceType
{
Mesnac_PKRK = 1, //软控物联网读写器一体机_GRUI160
Alien_9650 = 2, //Alien9650
ThingMagic_Vega = 3, //ThingMagic车载读写器
Mesnac_LD = 4, //软控磊德
Mesnac_GRUV100 = 5, //软控物联网车载读写器_GRUV100
Mesnac_GRUR445 = 6, //软控物联网四端口读写器
GzgDevice = 7, //干燥柜
ZlanIO_101 = 101, //卓岚IO
Moxa_E1212 = 102, //摩砂E1212
HwIo8 = 103, //海威
RFU620 = 620, //SICK 读写器
RFly_I160 = 160,//金瑞铭RFly-I160读写器
HWKC_81600 = 81600,//海威IO设备
Fuchs = 104
};
public enum WriteOrRead
{
Write = 1, //写
Read = 2, //读
};
///
/// 设备适配层接口
///
public interface IDeviceAdapter
{
event RecvIdentifyData RecvIdentifyDataEvent;
///
/// 设备初始化
///
/// true成功,false失败
/// 通讯类型 1,RJ45 2,串口。
/// 连接字符串 当iCommType为1时,pUrl格式“192.168.1.100:23”,为2时,pUrl格式为:“Com1:9600“
/// 详见DeviceType
bool Device_Init(CommType iCommType, string pUrl, DeviceType iDeviceType);
///
/// 设备初始化
///
/// true成功,false失败
/// 通讯类型 1,RJ45 2,串口。
/// 连接字符串 当iCommType为1时,pUrl格式“192.168.1.100:23”,为2时,pUrl格式为:“Com1:9600“
/// 详见DeviceType
bool Device_Init_Id(CommType iCommType, string pUrl, UInt16 iDeviceId);
///
/// 连接设备
///
/// true成功,false失败
bool Device_Connect();
///
/// 重新连接设备
///
/// true成功,false失败
bool Device_ReConnect();
///
/// 设备销毁
///
void Device_Destroy();
///
/// 设备状态
///
/// true正常,false异常
bool Device_GetState();
///
/// 根据天线号读取单个标签数据,只返回一条
/// //只有在天线号为0的时候可以读写其他区的数据
///
/// 实际读取到的长度,0为读取失败
/// 过滤数据区域 1,保留区 2,TID区 3,EPC区 4,USER区
/// 过滤写入起始偏移地址,单位byte
/// 过滤长度,单位byte
/// 过滤数据
/// 数据区哉 1,保留区 2,TID区 3,EPC区 4,USER区
/// 读取起始偏移地址,单位byte,必须为偶数。
/// 读取长度,单位byte,必须为偶数。
/// 读取数据存放区。
/// 天线号,0为本机,255为所有天线
UInt16 Device_Read(G2MemBank filterMembank, UInt16 filterWordPtr, UInt16 filterWordCnt, Byte[] filterData, G2MemBank Membank, UInt16 WordPtr, UInt16 WordCnt, ref Byte[] pReadData, byte Antenna);
///
/// 根据天线号写单个标签数据
/// //只有在天线号为0的时候可以写其他区的数据
///
/// 0,写失败 1,写入成功 2,写入和读取的不一致
/// 过滤数据区哉 1,保留区 2,TID区 3,EPC区 4,USER区
/// 过滤写入起始偏移地址,单位byte
/// 过滤写入长度,单位byte
/// 过滤数据
/// 数据区哉 1,保留区 2,TID区 3,EPC区 4,USER区
/// 写入起始偏移地址,单位byte,必须为偶数。
/// 写入长度,单位byte,必须为偶数。
/// 待写入的数据
/// 天线号,0为本机,255为所有天线
UInt16 Device_Write(G2MemBank filterMembank, UInt16 filterWordPtr, UInt16 filterWordCnt, Byte[] filterData,
G2MemBank Membank, UInt16 WordPtr, UInt16 WordCnt, Byte[] pWriteData, byte Antenna);
///
/// 根据天线号识别单个标签EPC数据,只返回一条
///
/// 识别的标签EPC长度,0为识别失败
/// 识别到的数据缓存区
/// 天线号,0为本机,255为所有天线
/// 超时时间,单位毫秒,识别到立即返回,未识别到等待超时返回
Byte Device_GetOneIdentifyData(ref Byte[] pReadData, Byte Antenna, UInt16 Timedout);
///
/// 根据天线号识别单个标签EPC数据,只返回一条
///
/// 识别的标签EPC长度,0为识别失败
/// 识别到的数据缓存区
/// 天线号,0为本机,255为所有天线
/// 超时时间,单位毫秒,统计时间内读到的次数,返回次数最多的一条
Byte Device_GetOneIdentifyData_Finish(ref Byte[] pReadData, Byte Antenna, UInt16 Timedout);
///
/// 根据天线号识别单个标签EPC数据,只返回一条
///
/// EPC数据,例"4A474730303130323332",为""时失败
/// 天线号,0为本机,255为所有天线
/// 超时时间,单位毫秒,识别到立即返回,未识别到等待超时返回
string Device_GetOneIdentifyData(Byte Antenna, UInt16 Timedout);
///
/// 根据天线号识别单个标签EPC数据,只返回一条
///
/// EPC数据,例"4A474730303130323332",为""时失败
/// 天线号,0为本机,255为所有天线
/// 超时时间,单位毫秒,统计时间内读到的次数,返回次数最多的一条
string Device_GetOneIdentifyData_Finish(Byte Antenna, UInt16 Timedout);
///
/// 开始工作,读写器为开始识别,其他设备待定义
///
/// true正常,false异常
/// 是否自动上报,1自动,0不自动,默认0
/// 过滤规则,默认为0无规则, 后续待定
bool Device_BeginIdentify();
///
/// 停止识别,读写器为停止识别,其他设备待定义
///
/// true正常,false异常
bool Device_StopIdentify();
///
/// 获取工作期间的所有数据
///
/// 实际读取到数据的总长度包括每组数据所占的字节,0为读取失败
/// 数据存放区,多组数据时格式为:1字节长度+天线号+每组数据...
/// 天线号,0为本机,255为读取所有天线
UInt16 Device_GetIdentifyData(ref Byte[] pReadData, Byte Antenna);
///
/// 设置天线收发功率
///
/// true为设置成功,false为设置失败
/// 识别到的数据缓存区
/// 天线号,0为本机,255为所有天线
/// Write为写,Read为读
bool Device_SetRf(int iDbi, Byte Antenna, WriteOrRead RorW);
///
/// 发送心跳报文
///
/// 1成功,2为通讯成功,设备未返回,3为发送失败
byte Device_SendHeartPack();
///
/// 获取自报数据
///
/// 总长度,0为失败
/// 获得的自报数据,格式为长度,数据,。。。。。。长度,数据,其中长度占一个字节
UInt16 Device_GetReportData(ref byte[] pReadData, Byte Antenna, UInt32 Timedout);
///
/// 四通道读写器按时间段读取数据
///
///
///
List Device_GetTagInfoList(DeviceType DeviceType,int time);
}
}