WPF—通过华视电子身份证识别仪读取身份证信息
标签:people soft car option += cdn rect int ref
1.源码
///
/// MainWindow.xaml 的交互逻辑
///
public partial class MainWindow : Window
{
int iPort;
int iRetUSB = 0, iRetCOM = 0;
static Hashtable hash = new Hashtable();//转JSON用
public BitmapSource ImgCur { get; set; }
public MainWindow()
{
for (iPort = 1001; iPort 1016; iPort++)
{
iRetUSB = CVRSDK.CVR_InitComm(iPort);
if (iRetUSB == 1)
{
break;
}
}
if (iRetUSB != 1)
{
for (iPort = 1; iPort 4; iPort++)
{
iRetCOM = CVRSDK.CVR_InitComm(iPort);
if (iRetCOM == 1)
{
break;
}
}
}
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
DispatcherTimer timer;
timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromMilliseconds(800);
timer.Tick += timer1_Tick;
timer.Start();
}
private void timer1_Tick(object sender, EventArgs e)
{
int authenticate = CVRSDK.CVR_Authenticate();
if (authenticate == 1)
{
int readContent = CVRSDK.CVR_Read_Content(4);
if (readContent == 1)
{
FillData();
}
}
}
private void FillData()
{
byte[] name = new byte[30];
int length = 30;
CVRSDK.GetPeopleName(ref name[0], ref length);
byte[] number = new byte[30];
length = 36;
CVRSDK.GetPeopleIDCode(ref number[0], ref length);
byte[] people = new byte[30];
length = 3;
CVRSDK.GetPeopleNation(ref people[0], ref length);
byte[] validtermOfStart = new byte[30];
length = 16;
CVRSDK.GetStartDate(ref validtermOfStart[0], ref length);
byte[] birthday = new byte[30];
length = 16;
CVRSDK.GetPeopleBirthday(ref birthday[0], ref length);
byte[] address = new byte[30];
length = 70;
CVRSDK.GetPeopleAddress(ref address[0], ref length);
byte[] validtermOfEnd = new byte[30];
length = 16;
CVRSDK.GetEndDate(ref validtermOfEnd[0], ref length);
byte[] signdate = new byte[30];
length = 30;
CVRSDK.GetDepartment(ref signdate[0], ref length);
byte[] sex = new byte[30];
length = 3;
CVRSDK.GetPeopleSex(ref sex[0], ref length);
byte[] samid = new byte[32];
CVRSDK.CVR_GetSAMID(ref samid[0]);
CurCard card = new CurCard();
card.Address = System.Text.Encoding.GetEncoding("GB2312").GetString(address).Replace("\0", "").Trim();
card.Sex = System.Text.Encoding.GetEncoding("GB2312").GetString(sex).Replace("\0", "").Trim();
card.BirthDay = System.Text.Encoding.GetEncoding("GB2312").GetString(birthday).Replace("\0", "").Trim();
card.Gov = System.Text.Encoding.GetEncoding("GB2312").GetString(signdate).Replace("\0", "").Trim();
card.IdentityId = System.Text.Encoding.GetEncoding("GB2312").GetString(number).Replace("\0", "").Trim();
card.Name = System.Text.Encoding.GetEncoding("GB2312").GetString(name).Replace("\0", "").Trim();
card.National = System.Text.Encoding.GetEncoding("GB2312").GetString(people).Replace("\0", "").Trim();
card.ValidDate = System.Text.Encoding.GetEncoding("GB2312").GetString(validtermOfStart).Replace("\0", "").Trim() + "-" + System.Text.Encoding.GetEncoding("GB2312").GetString(validtermOfEnd).Replace("\0", "").Trim();
card.ImgAdr = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "zp.bmp");
ImgCur = GetStreamBitmapSourceFromPath(card.ImgAdr);
//var A = card.Address + card.Sex + card.BirthDay + card.Gov + card.IdentityId + card.Name + card.National + card.ValidDate + card.ImgAdr;
hash.Add("Address", card.Address);
hash.Add("Sex", card.Sex);
hash.Add("BirthDay", card.BirthDay);
hash.Add("Gov", card.Gov);
hash.Add("IdentityId", card.IdentityId);
hash.Add("Name", card.Name);
hash.Add("National", card.National);
hash.Add("ValidDate", card.ValidDate);
hash.Add("ImgAdr", card.ImgAdr);
var A = JsonConvert.SerializeObject(hash);
MessageBox.Show(A);
}
public static BitmapSource GetStreamBitmapSourceFromPath(string path)
{
BitmapImage bitmapImage;
using (BinaryReader reader = new BinaryReader(File.Open(path, FileMode.Open)))
{
FileInfo fi = new FileInfo(path);
byte[] bytes = reader.ReadBytes((int)fi.Length);
reader.Close();
bitmapImage = new BitmapImage();
try
{
bitmapImage.BeginInit();
bitmapImage.StreamSource = new MemoryStream(bytes);
bitmapImage.EndInit();
}
catch
{
return null;
}
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
}
return bitmapImage;
}
}
public class CurCard
{
public string Address { get; set; }
public string Sex { get; set; }
public string BirthDay { get; set; }
public string Gov { get; set; }
public string IdentityId { get; set; }
public string Name { get; set; }
public string National { get; set; }
public string ValidDate { get; set; }
public string ImgAdr { get; set; }
}
2.读取的身份证信息转成了json,方便通过http传输,需要NuGet包引用 Newtonsoft.Json
3.SDk的下载链接,由于不支持DLL格式文件上传,下载下来解压放在根目录上即可。https://files-cdn.cnblogs.com/files/king10086/termb.zip
WPF—通过华视电子身份证识别仪读取身份证信息
标签:people soft car option += cdn rect int ref
原文地址:https://www.cnblogs.com/king10086/p/13177583.html
评论