德卡T10讀卡器 讀取身份證號碼和身份證UID

這個簡單的測試項目,界面上有個timer控件,設計的是3秒執行一下讀取身份證的動做,目前想到的是這種循環方式,德卡T10這個機子,身份證放上去,不會自動去執行讀取的操做。ide

1.界面測試

2.界面的代碼 Form1.cs 以下ui

 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 以下spa

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
相關文章
相關標籤/搜索