因为业务需要,需要在机器上运行两个身份证读卡器,一个使用USB口,一个是用的串口需要严格区分。
程序中我用的是两个线程,也许会有别的更好的方法。
1、一开始发现两个读卡器用dll库文件是一样的,所以就统一放在了程序运行根目录下,结果发现程序运行起来后两个读卡器无法正常运行
经过尝试,把两个读卡器对应的dll库分别放在文件夹里,然后采用绝对路径引用,比如
[DllImport(@"..zhongkong ermb.dll", CallingConvention = CallingConvention.StdCall)]
2、至于具体如何进行读卡,可以参考身份证读卡器家的实例
3、关于wz.txt,zp.bmp文件
一开始因为参考文档中解释的是这些文件会自动生成程序根目录中,也就是可执行文件所在目录,所以并没有在意,结果测试过程中发现使用USB读卡的可以正常读取身份证号,而串口呢个却不能
经过不断测试发现,采用USB读卡的(我用的是神思),这些文件是生成在生成程序根目录,每次读卡可以正确刷新。而使用串口读卡的(中控)的文件是生成在dll文件所在的目录里,并没有在程序根目录里,所以解析的时候要注意一下引用路径。
private void ZKsetName() { string filename =@"..zhongkongwz.txt"; FileStream fs = new FileStream(filename, FileMode.Open); StreamReader sr = new StreamReader(fs, System.Text.Encoding.Unicode); string filecontent = sr.ReadToEnd(); sr.Close(); fs.Close(); //解析身份证证号 string strID = filecontent.Substring(61, 18);//IDNumber Shenfenzhenghao = strID; }