You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

231 lines
5.3 KiB

3 years ago
using System.Text;
namespace EC.AutoWeightServer.IfManager.FingerPrint
{
/// <summary>
/// 暂时只测试了 USB 接口
/// </summary>
public class FingerPrintManager
{
//连接参数
private readonly FingerPrintParam _fpParam;
//通讯句柄
private int _handle;
//返回码
private int _ret;
public FingerPrintManager()
{
_fpParam = new FpUsbParam();
}
public FingerPrintManager(FingerPrintParam fpParam)
{
_fpParam = fpParam;
}
#region Start & Stop Server
/// <summary>
/// 开启服务
/// </summary>
/// <returns></returns>
public bool StartServer()
{
_ret = TesoLiveSDK.TcCreateHDL(_fpParam.Port, _fpParam.NPort, _fpParam.NRidx, _fpParam.NSped);
_handle = _ret;
return _ret >= 0;
}
/// <summary>
/// 停止服务
/// </summary>
/// <returns></returns>
public bool StopServer()
{
if (!IsConnected())
return true;
_ret = TesoLiveSDK.TcDeleteHDL(_handle);
if (_ret < 0)
return false;
_handle = -1;
return true;
}
#endregion Start & Stop Server
#region Tool Methods
/// <summary>
/// 获取设备内核号
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public bool GetDevKerNel(ref string data)
{
if (!IsConnected())
return false;
var builder = new StringBuilder();
_ret = TesoLiveSDK.TcGetDevVsin(_handle, builder);
data = _ret >= 0 ? builder.ToString() : string.Empty;
return _ret >= 0;
}
/// <summary>
/// 获取设备序列号
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public bool GetDevSn(ref string data)
{
if (!IsConnected())
return false;
var builder = new StringBuilder();
_ret = TesoLiveSDK.TcReadDevSn(_handle, builder);
data = _ret >= 0 ? builder.ToString() : string.Empty;
return _ret >= 0;
}
/// <summary>
/// 注册窗体默认开启
/// </summary>
/// <param name="able"></param>
/// <returns></returns>
public bool SetRegBoxAble(bool able)
{
if (!IsConnected())
return false;
var nIdx = 16;//#define T_SHOWREG 16 弹出注册窗体
var nVal = able ? 1 : 0;
_ret = TesoLiveSDK.TcExtnEntry(_handle, 0, nIdx, nVal, null);
return _ret >= 0;
}
/// <summary>
/// 认证窗体默认关闭
/// </summary>
/// <param name="able"></param>
/// <returns></returns>
public bool SetVerBoxAble(bool able)
{
if (!IsConnected())
return false;
var nIdx = 17;//#define T_SHOWVER 17 弹出认证窗体
var nVal = able ? 1 : 0;
_ret = TesoLiveSDK.TcExtnEntry(_handle, 0, nIdx, nVal, null);
return _ret >= 0;
}
/// <summary>
/// 控制设备上的 LED 闪灯和 BUZZER 蜂鸣,声光同时提示
/// </summary>
/// <param name="mode">0=短嘀,1=长嘀,2=嘀嘀</param>
/// <returns></returns>
public bool SetBeepLight(int mode)
{
if (!IsConnected())
return false;
mode %= 3;
_ret = TesoLiveSDK.TcBeepLight(_handle, mode);
return _ret >= 0;
}
/// <summary>
/// 设置注册窗口等待时间
/// </summary>
/// <param name="msTime">超时量默认 30000</param>
/// <returns></returns>
public bool SetRegTime(int msTime)
{
if (!IsConnected())
return false;
var nIdx = 6;//#define T_REGTMOT 6 注册 ms 超时量=30000
_ret = TesoLiveSDK.TcExtnEntry(_handle, 0, nIdx, msTime, null);
return _ret >= 0;
}
/// <summary>
/// 设置认证窗口等待时间
/// </summary>
/// <param name="msTime">超时量默认 18000</param>
/// <returns></returns>
public bool SetVerTime(int msTime)
{
if (!IsConnected())
return false;
var nIdx = 7;//#define T_VERTMOT 7 认证 ms 超时量=18000
_ret = TesoLiveSDK.TcExtnEntry(_handle, 0, nIdx, msTime, null);
return _ret >= 0;
}
/// <summary>
/// 获取指纹模板
/// </summary>
/// <param name="regFp"></param>
/// <returns></returns>
public bool GetRegFingerPrint(ref string regFp)
{
if (!IsConnected())
return false;
var builder = new byte[513];
_ret = TesoLiveSDK.TcDoTemplet(_handle, builder);
regFp = Encoding.ASCII.GetString(builder).Trim('\0');
return _ret >= 0;
}
/// <summary>
/// 获取指纹特征
/// </summary>
/// <param name="verFp"></param>
/// <returns></returns>
public bool GetVerFingerPrint(ref string verFp)
{
if (!IsConnected())
return false;
var builder = new byte[513];
_ret = TesoLiveSDK.TcDoFeature(_handle, builder);
verFp = Encoding.ASCII.GetString(builder).Trim('\0');
return _ret >= 0;
}
/// <summary>
/// 对比指纹模板和特征
/// </summary>
/// <param name="regFp"></param>
/// <param name="verFp"></param>
/// <returns></returns>
public bool MatchFingerPrint(string regFp, string verFp)
{
if (!IsConnected())
return false;
if (string.IsNullOrEmpty(regFp) || string.IsNullOrEmpty(verFp))
return false;
_ret = TesoLiveSDK.TcSafeMatch(_handle, verFp, regFp);
return _ret >= 0;
}
/// <summary>
/// 判断设备是否连接
/// </summary>
/// <returns></returns>
public bool IsConnected()
{
var builder = new StringBuilder();
_ret = TesoLiveSDK.TcReadDevSn(_handle, builder);
return _ret >= 0;
}
/// <summary>
/// 返回函数运行返回码
/// </summary>
/// <returns>返回码</returns>
public int GetResultCode()
{
return _ret;
}
#endregion Tool Methods
}
}