118 lines
5.3 KiB
C#
118 lines
5.3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
|
|
namespace HL_FristAidPlatform_ReadCard
|
|
{
|
|
public class ReadIdCardHelper
|
|
{
|
|
#region DllImport
|
|
|
|
[DllImport("sdtapi.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]
|
|
private static extern int InitComm(int iPort);//初始化
|
|
|
|
[DllImport("sdtapi.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]
|
|
|
|
private static extern int CloseComm();//关闭端口
|
|
|
|
[DllImport("sdtapi.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]
|
|
private static extern int Authenticate();//卡认证
|
|
|
|
[DllImport("sdtapi.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Winapi)]
|
|
private static extern int ReadBaseInfos([MarshalAs(UnmanagedType.LPStr)]
|
|
StringBuilder Name, [MarshalAs(UnmanagedType.LPStr)]
|
|
StringBuilder Gender, [MarshalAs(UnmanagedType.LPStr)]
|
|
StringBuilder Folk, [MarshalAs(UnmanagedType.LPStr)]
|
|
StringBuilder BirthDay, [MarshalAs(UnmanagedType.LPStr)]
|
|
StringBuilder Code, [MarshalAs(UnmanagedType.LPStr)]
|
|
StringBuilder Address, [MarshalAs(UnmanagedType.LPStr)]
|
|
StringBuilder Agency, [MarshalAs(UnmanagedType.LPStr)]
|
|
StringBuilder ExpireStart, [MarshalAs(UnmanagedType.LPStr)]
|
|
StringBuilder ExpireEnd);
|
|
[DllImport("sdtapi.dll")]//读取数据,推荐使用
|
|
private static extern int Routon_BeepLED(bool BeepON, bool LEDON, int duration);
|
|
|
|
/// <summary>
|
|
/// 获取当前电脑的系统盘符
|
|
/// </summary>
|
|
private static string DiskCharacter = Environment.GetEnvironmentVariable("systemdrive");
|
|
|
|
/// <summary>
|
|
/// 系统配置文件总路径
|
|
/// 在登录界面打开时判断是否存在,不存在则创建
|
|
/// </summary>
|
|
private static string SystemProfilePath = DiskCharacter + @"\App\急危重症区域信息管理平台\";
|
|
/// <summary>
|
|
/// 图片路径
|
|
/// </summary>
|
|
private static string _imageDirPath = SystemProfilePath + "CardImg";
|
|
#endregion
|
|
|
|
static public int readCard(ref IDCardData idCardMessage)
|
|
{
|
|
if (!Directory.Exists(_imageDirPath))
|
|
{
|
|
Directory.CreateDirectory(_imageDirPath);
|
|
}
|
|
StringBuilder Name = new StringBuilder(31); // 姓名
|
|
StringBuilder Gender = new StringBuilder(3); // 性别
|
|
StringBuilder Folk = new StringBuilder(10); // 民族
|
|
StringBuilder BirthDay = new StringBuilder(9); // 生日
|
|
StringBuilder Code = new StringBuilder(19); // 证件号
|
|
StringBuilder Address = new StringBuilder(71); // 家庭地址
|
|
StringBuilder Agency = new StringBuilder(31); // 签发机关
|
|
StringBuilder ExpireStart = new StringBuilder(9); // 有效期起始日期
|
|
StringBuilder ExpireEnd = new StringBuilder(9); // 有效期截止日期
|
|
//打开端口
|
|
int intOpenRet = InitComm(1001);
|
|
if (intOpenRet != 1)
|
|
{
|
|
Console.WriteLine("阅读机具未连接");
|
|
Routon_BeepLED(false, false, 2000);
|
|
return 1;
|
|
}
|
|
//卡认证
|
|
int intReadRet = Authenticate();
|
|
if (intReadRet != 1)
|
|
{
|
|
Console.WriteLine("卡认证失败");
|
|
Routon_BeepLED(false, false, 2000);
|
|
CloseComm();
|
|
return 2;
|
|
}
|
|
//读卡
|
|
int intReadBaseInfosRet = ReadBaseInfos(Name, Gender, Folk, BirthDay, Code, Address, Agency, ExpireStart, ExpireEnd);
|
|
if (intReadBaseInfosRet != 1)
|
|
{
|
|
Console.WriteLine("读卡失败");
|
|
Routon_BeepLED(false, false, 2000);
|
|
CloseComm();
|
|
return 3;
|
|
}
|
|
idCardMessage = new IDCardData();
|
|
idCardMessage.IDCardNo = Code.ToString().Trim();
|
|
idCardMessage.Name = Name.ToString().Trim();
|
|
idCardMessage.Sex = Gender.ToString().Trim();
|
|
idCardMessage.Nation = Folk.ToString().Trim();
|
|
idCardMessage.Born = BirthDay.ToString().Substring(0, 4) + "/" + BirthDay.ToString().Substring(4, 2) + "/" + BirthDay.ToString().Substring(6, 2);
|
|
idCardMessage.Address = Address.ToString().Trim();
|
|
idCardMessage.GrantDept = Agency.ToString().Trim();
|
|
idCardMessage.UserLifeBegin = ExpireStart.ToString().Trim();
|
|
idCardMessage.UserLifeEnd = ExpireEnd.ToString().Trim();
|
|
Image img = Image.FromFile(Directory.GetCurrentDirectory() + "\\photo.bmp");
|
|
Image bmp = new Bitmap(img);
|
|
img.Dispose();
|
|
idCardMessage.image = bmp;
|
|
File.Delete(Directory.GetCurrentDirectory() + "\\photo.bmp");
|
|
Routon_BeepLED(true, true, 2000);
|
|
CloseComm();
|
|
return 0;
|
|
}
|
|
}
|
|
}
|