c#华旭二代身份证
#region API声明
[DllImport("sdtapi.dll", CallingConvention = CallingConvention.StdCall)]
static extern int SDT_StartFindIDCard (int iPort, byte[] pucManaInfo,int iIfOpen);
[DllImport("sdtapi.dll",CallingConvention = CallingConvention.StdCall)]
static extern int SDT_SelectIDCard (int iPort , byte[] pucManaMsg,int iIfOpen);
[DllImport("sdtapi.dll",CallingConvention = CallingConvention.StdCall)]
static extern int SDT_ReadBaseMsg (int iPort, byte[] pucCHMsg, ref UInt32 puiCHMsgLen, byte[] pucPHMsg,ref UInt32 puiPHMsgLen,int iIfOpen);
#endregion
private void button1_Click(object sender, EventArgs e)
{
//变量声明
byte[] CardPUCIIN = new byte[255];
byte[] pucManaMsg = new byte[255];
byte[] pucCHMsg = new byte[255];
byte[] pucPHMsg = new byte[3024];
UInt32 puiCHMsgLen=0;
UInt32 puiPHMsgLen=0;
int st =0;
//读卡操作
st= SDT_StartFindIDCard(1001, CardPUCIIN, 1);
if (st != 0x9f) return;
st = SDT_SelectIDCard(1001, pucManaMsg, 1);
if (st != 0x90) return;
st = SDT_ReadBaseMsg(1001, pucCHMsg, ref puiCHMsgLen, pucPHMsg, ref puiPHMsgLen, 1);
if (st != 0x90) return;
//显示结果
textBox1.Text = System.Text.ASCIIEncoding.Unicode.GetString(pucCHMsg);
}
这是程序带的一个实例,他是姓名性别家庭住址等等读取都读取到textbox1里了,
想自己做一个读取信息的demo,textbox1读姓名,textbox2读性别 等等等等
用的是华旭身份证读卡器 二代身份证 --------------------编程问答-------------------- 如果姓名性别家庭住址这些信息有分割符,就写全读出来,然后再拆分就行了。
字符串分割有Split和正则表达式等方法 --------------------编程问答-------------------- 读卡器他应该有帮助说明!可以看看帮助说明! --------------------编程问答-------------------- 你先得到数据,分析字符特征,进行分割就OK了啊
--------------------编程问答-------------------- 主要是读出来的数据,你根据一定的规律把他剥离出来就行了,查找字符串的特征,固定长度,存放位置以及读卡器函数的输出结构体的特征 --------------------编程问答-------------------- pucCHMsg
你自己看看,这个字段里,姓名,性别之类的数据都是有长度的。
例如:提取前15个byte就是姓名,后续的2个byte就是性别。
你好好看看厂家的demo定义,一般都是有例子或者说明的,必要时可以和厂家要个demo
补充:.NET技术 , C#