C#:二代身份证阅读机具接口封装(四)华视电子

同系列文章:

源代码:
ChinaVisionReader.cs

/* ----------------------------------------------------------
 * 文件名称:ChinaVisionReader.cs
 * 
 * 作者:秦建辉
 * 
 * 微信:splashcn
 * 
 * 博客:http://www.firstsolver.com/wordpress/
 * 
 * 开发环境:
 *      Visual Studio V2015
 *      .NET Framework 4 Client Profile
 *      
 * 版本历史:
 *      V1.0    2016年06月29日
 *              华视电子二代身份证阅读器接口
------------------------------------------------------------ */
using System.Runtime.InteropServices;

namespace Com.FirstSolver.CardReader
{
    /// <summary>
    /// 公司名称:深圳华视电子读写设备有限公司
    /// 官方网址:http://www.chinaidcard.com/
    /// 产品名称:台式居民身份证阅读机具
    /// 产品型号:CVR-100U 
    /// </summary>
    public class ChinaVisionReader : IDCardReader
    {
        /// <summary>
        /// 自动检测身份证读卡器并初始化
        /// </summary>
        /// <returns>
        ///     true:成功
        ///     false:失败
        /// </returns>
        protected override bool Initialize()
        {
            for (int i = 1001; i <= 1016; i++)
            {
                if (CVR_InitComm(i) == 1)
                {
                    InnerPort = i;
                    return true;
                }
            }

            return false;
        }

        /// <summary>
        /// 关闭读卡器
        /// </summary>
        /// <returns>
        ///     0:成功
        ///     -1:失败
        /// </returns>
        protected override int CloseComm()
        {
            if (CVR_CloseComm() == 1) return 0; else return -1;
        }

        /// <summary>
        /// 验证卡
        /// </summary>
        /// <returns>
        ///     0:验卡成功
        ///     -1:验卡失败
        /// </returns>
        protected override int Authenticate()
        {
            if (CVR_Authenticate() == 1) return 0; else return -1;
        }

        /// <summary>
        /// 读卡基本信息
        /// </summary>
        /// <returns>
        ///     0:读卡成功,卡片不带指纹数据
        ///     1:读卡成功,卡片带指纹数据
        ///     -1:读卡失败
        /// </returns>
        protected override int ReadContent()
        {
            if (CVR_Read_Content(4) == 1) return 0; else return -1;
        }

        #region DLLIMPORT
        [DllImport("termb.dll", CharSet = CharSet.Auto, SetLastError = false)]
        public static extern int CVR_InitComm(int Port);

        [DllImport("termb.dll", CharSet = CharSet.Auto, SetLastError = false)]
        public static extern int CVR_Authenticate();

        [DllImport("termb.dll", CharSet = CharSet.Auto, SetLastError = false)]
        public static extern int CVR_Read_Content(int Active);

        [DllImport("termb.dll", CharSet = CharSet.Auto, SetLastError = false)]
        public static extern int CVR_CloseComm();
        #endregion
    }
}

Comments are closed.