zoukankan      html  css  js  c++  java
  • 德卡T10读卡器 读取身份证号码和身份证UID

    这个简单的测试项目,界面上有个timer控件,设计的是3秒执行一下读取身份证的动作,目前想到的是这种循环方式,德卡T10这个机子,身份证放上去,不会自动去执行读取的操作。

    1.界面

    2.界面的代码 Form1.cs 如下

     1 using System;
     2 using System.Collections.Generic;
     3 using System.ComponentModel;
     4 using System.Data;
     5 using System.Drawing;
     6 using System.Text;
     7 using System.Windows.Forms;
     8 using System.IO;
     9 using System.Threading;
    10 
    11 namespace IDCard
    12 {
    13     public partial class Form1 : Form
    14     {
    15         public static string StrCardNo = "1";   //记录下的 上次有效的身份证号
    16         public Form1()
    17         {
    18             InitializeComponent();
    19         }
    20 
    21         private void timer1_Tick(object sender, EventArgs e)
    22         {
    23             textBox8.Focus();
    24             PersonInfo person = new PersonInfo();
    25             int result = IDCard.GetCardInfo.getCardInfo(ref person);
    26             if (result < 0)//未读取到身份证
    27             {
    28                 return;
    29             }
    30             string strCardNoThis="";    //本次读取到的身份证号
    31             if (person.IdNumber == null)
    32             {
    33                 strCardNoThis = "";
    34             }
    35             else
    36             {
    37                 strCardNoThis = person.IdNumber;
    38                 //如果记录的上次的有效号和 本次的号 一样,处理掉 不用
    39                 if (StrCardNo.Equals(strCardNoThis))
    40                 {
    41                     return;
    42                 }
    43                 else  //如果和之前的不一样,赋值为最新
    44                 {
    45                     StrCardNo = strCardNoThis;
    46                     textBox8.Text = strCardNoThis;
    47                 }
    48             }
    49 
    50             //显示读取到的身份证UID
    51             if (person.UID == null || person.UID.Equals(""))
    52             {
    53                 textBox1.Text = "未读取到身份证UID";
    54             }
    55             else
    56             {
    57                 textBox1.Text = person.UID;
    58             }
    59         }
    60     }
    61 }
    View Code

    3.读取身份证逻辑代码 GetCardInfo.cs 如下

    using System;
    using System.Collections.Generic;
    //using System.Linq;
    using System.Text;
    using System.Runtime.InteropServices;
    using System.IO;
    using System.Drawing;
    
    namespace IDCard
    {
        public class GetCardInfo
        {
            #region 调用dll  dcrf32.dll放在bin/Debug文件夹下
    
            [DllImport("dcrf32.dll")]  
            private static extern int dc_init(Int16 port, int baud);  //初始化OK  
              
            [DllImport("dcrf32.dll")]  
            private static extern short dc_find_i_d(int icdev);// 查询身份证卡   
              
            [DllImport("dcrf32.dll")]  
            private static extern IntPtr dc_i_d_query_name(int idhandle);//身份证姓名 dc_i_d_query_sex  
      
            [DllImport("dcrf32.dll")]  
            private static extern IntPtr dc_i_d_query_sex(int idhandle);//性别  
              
            [DllImport("dcrf32.dll")]  
            private static extern IntPtr dc_i_d_query_nation(int idhandle);//民族  
              
            [DllImport("dcrf32.dll")]  
            private static extern IntPtr dc_i_d_query_birth(int idhandle);//出生年月  
              
            [DllImport("dcrf32.dll")]  
            private static extern IntPtr dc_i_d_query_address(int idhandle);//户籍地址  
              
            [DllImport("dcrf32.dll")]  
            private static extern IntPtr dc_i_d_query_id_number(int idhandle);//身份证号  
    
    
            [DllImport("dcrf32.dll")]
            private static extern short dc_get_idsnr_hex(int idhandle, [Out]byte[] data); //身份证的UID
    
    
            [DllImport("dcrf32.dll")]  
            private static extern IntPtr dc_i_d_query_department(int idhandle);//签发机关       
              
            [DllImport("dcrf32.dll")]  
            private static extern IntPtr dc_i_d_query_expire_day(int idhandle);//有效期限  
              
            [DllImport("dcrf32.dll")]  
            private static extern short dc_i_d_query_photo_bmp_buffer(int idhandle,  byte[] BmpBuffer, ref ulong BmpLength);//照片  
                                                            //unsigned char *  BmpBuffer  
    
            [DllImport("dcrf32.dll")]  
            private static extern int dc_start_i_d(int icdev);//开始读身份证卡操作 如果=-1表示失败,否则为身份证卡信息标识符。   
              
            [DllImport("dcrf32.dll")]  
            private static extern void dc_end_i_d(int idhandle);//结束读取身份证  
    
            [DllImport("dcrf32.dll")]
            private static extern short dc_reset(int idhandle, short msec);//射频复位 
    
            [DllImport("dcrf32.dll")]
            private static extern short dc_beep(int icdev, short msec);//设备蜂鸣
    
            [DllImport("dcrf32.dll")]
            private static extern short dc_exit(int idhandle);//关闭设备的通讯和释放资源
            
            #endregion  
    
            /// <summary>读取身份信息</summary>  
            /// <param name="person"></param>  
            /// <param name="ImgPath">图片存储路径</param>  
            /// <returns></returns>  
            public static int getCardInfo(ref PersonInfo person)  
            {  
                try  
                {  
                    int IcDev;//HANDLE icdev:通讯设备标识符  
                    IntPtr Mydev;  
                    int m_hId;//HANDLE idhandle:身份证卡信息标识符  
                    IcDev = dc_init(100, 9600);//①打开设备dc_init   
                    if (IcDev < 0)
                    {
                        return -1;
                    }
                    dc_reset(IcDev, 10);//射频复位 dayu 0 
                    int st = dc_find_i_d(IcDev);//②寻身份证 dc_find_i_d  若成功则为0;  
                    m_hId = dc_start_i_d(IcDev);//③读身份证 dc_start_i_d
                    if ((long)m_hId < 0)  
                    {
                        dc_exit(180);     //⑦关闭设备dc_exit
                        return -1;
                    }
                    #region 获取身份证信息
                    //Mydev = dc_i_d_query_name(m_hId);//姓名  
                    //person.Name = Marshal.PtrToStringAnsi(Mydev);  
      
                    //Mydev = dc_i_d_query_sex(m_hId);//性别  
                    //person.Sex = Marshal.PtrToStringAnsi(Mydev);  
      
                    //Mydev = dc_i_d_query_nation(m_hId);//民族  
                    //person.Nation = Marshal.PtrToStringAnsi(Mydev);  
      
                    //Mydev = dc_i_d_query_birth(m_hId);//出生日期  
                    //person.Birth = Marshal.PtrToStringAnsi(Mydev);  
      
                    //Mydev = dc_i_d_query_address(m_hId);//户籍地址  
                    //person.Address = Marshal.PtrToStringAnsi(Mydev);  
    
    
                    //Mydev = dc_i_d_query_department(m_hId);//签发机关  
                    //person.IdDepartment = Marshal.PtrToStringAnsi(Mydev);
    
                    //Mydev = dc_i_d_query_expire_day(m_hId);//有效期限  
                    //person.ExpireDay = Marshal.PtrToStringAnsi(Mydev);  
    
                    #endregion
    
                    byte[] rbuff = new byte[16];
                    short sT = dc_get_idsnr_hex(m_hId, rbuff);    //获取身份证UID
                    person.UID = System.Text.Encoding.Default.GetString(rbuff);
    
    
                    Mydev = dc_i_d_query_id_number(m_hId);//④获取身份证相应的信息 身份证号  
                    person.IdNumber = Marshal.PtrToStringAnsi(Mydev);
    
    
                    dc_beep(IcDev,10);  //蜂鸣声 提示声音
                    dc_end_i_d(m_hId);  //⑥关闭身份证标识 dc_end_i_d
                    dc_exit(IcDev);     //⑦关闭设备dc_exit
                }  
                catch (Exception ex)  
                {  
                    //throw ex;  
                    return -1;   
                }  
                return 1;  
            }
    
        }
    }
    View Code

    4.身份证信息类 PersonInfo.cs 如下

    using System;
    using System.Collections.Generic;
    //using System.Linq;
    using System.Text;
    using System.Drawing;
    
    namespace IDCard
    {
        public class PersonInfo
        {
            private string idNumber;
            /// <summary>身份证号</summary>  
            public string IdNumber
            {
                get { return idNumber; }
                set { idNumber = value; }
            }
    
            private string uid;
            //身份证UID
            public string UID 
            {
                get { return uid; }
                set { uid = value; }
            }
    
    
            #region 身份证其他信息
            //private string name;
            ///// <summary>姓名</summary>  
            //public string Name
            //{
            //    get { return name; }
            //    set { name = value; }
            //}
            //private string sex;
            ///// <summary>性别</summary>  
            //public string Sex
            //{
            //    get { return sex; }
            //    set { sex = value; }
            //}
            //private string nation;
            ///// <summary>民族</summary>  
            //public string Nation
            //{
            //    get { return nation; }
            //    set { nation = value; }
            //}
            //private string birth;
            ///// <summary>出生年月日</summary>  
            //public string Birth
            //{
            //    get { return birth; }
            //    set { birth = value; }
            //}
            //private string address;
            ///// <summary>户籍地址</summary>  
            //public string Address
            //{
            //    get { return address; }
            //    set { address = value; }
            //}
          
            //private string idDepartment;
            ///// <summary>签发机关</summary>  
            //public string IdDepartment
            //{
            //    get { return idDepartment; }
            //    set { idDepartment = value; }
            //}
            //private string expireDay;
            ///// <summary>有效期限</summary>  
            //public string ExpireDay
            //{
            //    get { return expireDay; }
            //    set { expireDay = value; }
            //}
            //private Image photo;
            ///// <summary>照片</summary>  
            //public Image Photo
            //{
            //    get { return photo; }
            //    set { photo = value; }
            //}  
            #endregion
    
        }
    }
    View Code
  • 相关阅读:
    php--有限继承
    面向对象三大特性(封装/继承/多态)
    定义文本溢出
    设计模式
    js数组sort方法
    鼠标移动事件
    单击事件
    数据类型转换与比较
    html主要笔记
    字符串常用的方法
  • 原文地址:https://www.cnblogs.com/surfacebook007/p/9316575.html
Copyright © 2011-2022 走看看