using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Runtime.InteropServices; namespace ReadCard_ChangChunMI { public partial class frmReadCard_CC : Form { public string outParam=""; //初始化 [DllImport("HeaSecReadInfo.dll", EntryPoint = "Init", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)] public static extern int Init([MarshalAs(UnmanagedType.LPArray)] byte[] pInitInfo, [MarshalAs(UnmanagedType.LPArray)] byte[] pErrMsg); [DllImport("HeaSecReadInfo.dll", EntryPoint = "ReadCardBas", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)] public static extern int ReadCardBas([MarshalAs(UnmanagedType.LPArray)] byte[] pCardInfo, [MarshalAs(UnmanagedType.LPArray)] byte[] pBusiCardInfo); //社保卡-本地 [DllImport("SSCardDriver.dll", EntryPoint = "iReadCardBas", CharSet = CharSet.Ansi, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)] static extern int ReadCardBas(int iType, StringBuilder pOutInfo); //社保卡-异地1 [DllImport("SSCardDriver.dll", EntryPoint = "iReadCardBas_HSM_Step1", CharSet = CharSet.Ansi, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)] static extern int ReadCardBas_HSM_Step1(int iType, StringBuilder pOutInfo); //社保卡-异地2 [DllImport("SSCardDriver.dll", EntryPoint = "iReadCardBas_HSM_Step2", CharSet = CharSet.Ansi, ExactSpelling = false, CallingConvention = CallingConvention.StdCall)] static extern int ReadCardBas_HSM_Step2(StringBuilder pKey, StringBuilder pOutInfo); public int initCard() { int rtn = 0; try { rtb_Record.AppendText("医保读卡-initCard初始化-开始【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff") + "】" + "\n"); string str = "{\"IP\":\"ddjk.jlhs.gov.cn\",\"PORT\":20215,\"TIMEOUT\":60,\"LOG_PATH\":\"C:/neu_log/\",\"SFZ_DRIVER_TYPE\":1}"; byte[] input = System.Text.Encoding.Default.GetBytes(str); byte[] output = new byte[300]; rtn = Init(input, output); rtb_Record.AppendText("医保读卡-initCard初始化-结束【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff") + "】" + "\n"); } catch (Exception e) { rtn = -1; MessageBox.Show(e.Message); } return rtn; } public int readCard(out string Instr, out string outstr) { int rtn = 0; Instr = ""; outstr = ""; try { rtb_Record.AppendText("initCard初始化-开始【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff") + "】" + "\n"); if (initCard() != 0) { rtn = -1; return rtn; } rtb_Record.AppendText("initCard初始化-结束【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff") + "】" + "\n"); byte[] rin = new byte[500]; byte[] rout = new byte[500]; rtb_Record.AppendText("ReadCardBas读社保卡信息-开始【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff") + "】" + "\n"); if (ReadCardBas(rin, rout) != 0) { rtn = -1; MessageBox.Show(System.Text.Encoding.Default.GetString(rin)); return rtn; } rtb_Record.AppendText("ReadCardBas读社保卡信息-结束【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff") + "】" + "\n"); Instr = System.Text.Encoding.Default.GetString(rin); outstr = System.Text.Encoding.Default.GetString(rout); } catch (Exception e) { rtn = -1; MessageBox.Show(e.Message); } return rtn; } public int ReadCardBas(int iType, out string sOutInfo) { sOutInfo = ""; int rtn = -1; try { StringBuilder bOutInfo = new StringBuilder(1024); rtn = ReadCardBas(iType, bOutInfo); sOutInfo = bOutInfo.ToString(); return rtn; } catch (Exception ex) { sOutInfo = "ReadCardBas异常:" + ex.Message; return rtn; } finally { //Global.writeLog("调用社保卡ReadCardBas函数:", sDevInfo, sOutInfo); } } public int ReadCardBas_HSM_Step1(int iType, out string sOutInfo) { sOutInfo = ""; int rtn = -1; try { StringBuilder bOutInfo = new StringBuilder(4096); rtn = ReadCardBas_HSM_Step1(iType, bOutInfo); sOutInfo = bOutInfo.ToString(); return rtn; } catch (Exception ex) { sOutInfo = "ReadCardBas_HSM_Step1异常:" + ex.Message; return rtn; } finally { //writeLog("调用社保卡ReadCardBas_HSM_Step1函数:", iType + "|" + sDevInfo, sOutInfo); } } public int ReadCardBas_HSM_Step2(string pKey, out string sOutInfo) { sOutInfo = ""; int rtn = -1; try { StringBuilder bPKey = new StringBuilder(pKey); StringBuilder bOutInfo = new StringBuilder(1024); rtn = ReadCardBas_HSM_Step2(bPKey, bOutInfo); sOutInfo = bOutInfo.ToString(); return rtn; } catch (Exception ex) { sOutInfo = "ReadCardBas_HSM_Step2异常:" + ex.Message; return rtn; } finally { //writeLog("调用社保卡ReadCardBas_HSM_Step2函数:", pKey, sOutInfo); } } public frmReadCard_CC() { InitializeComponent(); } private void btnExit_Click(object sender, EventArgs e) { this.Close(); } private void AppendText(string type,string input,string output) { rtb_Record.AppendText(type + "【" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ffff") + "】" + "\n" + input + "\n" + output + "\n"); } private void btnRead_Click(object sender, EventArgs e) { string pCardinfo = ""; string pBusCardinfo = ""; rtb_Record.Text = ""; AppendText("ReadCardBas", "", ""); if (readCard(out pCardinfo, out pBusCardinfo) != 0) { outParam = "社保卡读卡异常ReadCardBas:" + pCardinfo; MessageBox.Show(outParam); return; } else { AppendText("ReadCardBas", "【pCardinfo】" + pCardinfo, "【pBusCardinfo】" +pBusCardinfo); } } private void btnInit_Click(object sender, EventArgs e) { AppendText("医保读卡-init-开始", "", ""); string str = "{\"IP\":\"ddjk.jlhs.gov.cn\",\"PORT\":20215,\"TIMEOUT\":60,\"LOG_PATH\":\"C:/neu_log/\",\"SFZ_DRIVER_TYPE\":1}"; byte[] input = System.Text.Encoding.Default.GetBytes(str); byte[] output = new byte[300]; if (Init(input, output) != 0) { MessageBox.Show("调用Init初始化返回失败!"); return; } AppendText("医保读卡-init-结束","",""); } private void btnReadCardBas_Click(object sender, EventArgs e) { byte[] rin = new byte[500]; byte[] rout = new byte[500]; AppendText("ReadCardBas-开始","",""); if (ReadCardBas(rin, rout) != 0) { MessageBox.Show(System.Text.Encoding.Default.GetString(rin)); return; } string Instr = System.Text.Encoding.Default.GetString(rin); string outstr = System.Text.Encoding.Default.GetString(rout); AppendText("ReadCardBas-结束", "Instr:" + Instr, "outstr:" + outstr); } private void btn_ReadCardBas_HSM_Step1_Click(object sender, EventArgs e) { outParam = ""; AppendText("ReadCardBas_HSM_Step1-开始", "", outParam); ReadCardBas_HSM_Step1(4, out outParam); AppendText("ReadCardBas_HSM_Step1-结束", "", outParam); } private void btn_ReadCardBas_HSM_Step2_Click(object sender, EventArgs e) { outParam = ""; } private void btn_iReadCardBas_Click(object sender, EventArgs e) { AppendText("ReadCardBas-开始", "", outParam); ReadCardBas(4, out outParam); AppendText("ReadCardBas-结束", "", outParam); } } }