问题一

解决方法:

通常我把所有的dll复制到system32文件夹,64位系统复制到sysWOW64文件夹,而且编译选项CPU要选择X86

问题二

解决方法:

图片路径默认是C:\,对C:\没有写的权限,所以提示此错误。改变此路径到别的盘符就可以解决。

以下是我编写的代码

  1 public class IDCardHelper
  2     {
  3         #region 数据类型和导入接口
  4
  5         [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]
  6         public struct IDCardData
  7         {
  8             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
  9             public string Name; //姓名
 10             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 6)]
 11             public string Sex;   //性别
 12             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 20)]
 13             public string Nation; //名族
 14             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]
 15             public string Born; //出生日期
 16             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 72)]
 17             public string Address; //住址
 18             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 38)]
 19             public string IDCardNo; //身份证号
 20             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
 21             public string GrantDept; //发证机关
 22             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]
 23             public string UserLifeBegin; // 有效开始日期
 24             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 18)]
 25             public string UserLifeEnd;  // 有效截止日期
 26             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 38)]
 27             public string reserved; // 保留
 28             [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 255)]
 29             public string PhotoFileName; // 照片路径
 30         }
 31         /************************端口类API *************************/
 32         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetCOMBaud", CharSet = CharSet.Ansi)]
 33         public static extern int Syn_GetCOMBaud(int iPort, ref uint puiBaudRate);
 34         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetCOMBaud", CharSet = CharSet.Ansi)]
 35         public static extern int Syn_SetCOMBaud(int iPort, uint uiCurrBaud, uint uiSetBaud);
 36         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_OpenPort", CharSet = CharSet.Ansi)]
 37         public static extern int Syn_OpenPort(int iPort);
 38         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ClosePort", CharSet = CharSet.Ansi)]
 39         public static extern int Syn_ClosePort(int iPort);
 40         /**************************SAM类函数 **************************/
 41         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetMaxRFByte", CharSet = CharSet.Ansi)]
 42         public static extern int Syn_SetMaxRFByte(int iPort, byte ucByte, int iIfOpen);
 43         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ResetSAM", CharSet = CharSet.Ansi)]
 44         public static extern int Syn_ResetSAM(int iPort, int iIfOpen);
 45         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetSAMStatus", CharSet = CharSet.Ansi)]
 46         public static extern int Syn_GetSAMStatus(int iPort, int iIfOpen);
 47         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetSAMID", CharSet = CharSet.Ansi)]
 48         public static extern int Syn_GetSAMID(int iPort, ref byte pucSAMID, int iIfOpen);
 49         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetSAMIDToStr", CharSet = CharSet.Ansi)]
 50         public static extern int Syn_GetSAMIDToStr(int iPort, ref byte pcSAMID, int iIfOpen);
 51         /*************************身份证卡类函数 ***************************/
 52         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_StartFindIDCard", CharSet = CharSet.Ansi)]
 53         public static extern int Syn_StartFindIDCard(int iPort, ref byte pucIIN, int iIfOpen);
 54         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SelectIDCard", CharSet = CharSet.Ansi)]
 55         public static extern int Syn_SelectIDCard(int iPort, ref byte pucSN, int iIfOpen);
 56         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadBaseMsg", CharSet = CharSet.Ansi)]
 57         public static extern int Syn_ReadBaseMsg(int iPort, ref byte pucCHMsg, ref uint puiCHMsgLen, ref byte pucPHMsg, ref uint puiPHMsgLen, int iIfOpen);
 58         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadBaseMsgToFile", CharSet = CharSet.Ansi)]
 59         public static extern int Syn_ReadBaseMsgToFile(int iPort, ref byte pcCHMsgFileName, ref uint puiCHMsgFileLen, ref byte pcPHMsgFileName, ref uint puiPHMsgFileLen, int iIfOpen);
 60         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadBaseFPMsg", CharSet = CharSet.Ansi)]
 61         public static extern int Syn_ReadBaseFPMsg(int iPort, ref byte pucCHMsg, ref uint puiCHMsgLen, ref byte pucPHMsg, ref uint puiPHMsgLen, ref byte pucFPMsg, ref uint puiFPMsgLen, int iIfOpen);
 62         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadBaseFPMsgToFile", CharSet = CharSet.Ansi)]
 63         public static extern int Syn_ReadBaseFPMsgToFile(int iPort, ref byte pcCHMsgFileName, ref uint puiCHMsgFileLen, ref byte pcPHMsgFileName, ref uint puiPHMsgFileLen, ref byte pcFPMsgFileName, ref uint puiFPMsgFileLen, int iIfOpen);
 64         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadNewAppMsg", CharSet = CharSet.Ansi)]
 65         public static extern int Syn_ReadNewAppMsg(int iPort, ref byte pucAppMsg, ref uint puiAppMsgLen, int iIfOpen);
 66         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_GetBmp", CharSet = CharSet.Ansi)]
 67         public static extern int Syn_GetBmp(int iPort, ref byte Wlt_File);
 68         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadMsg", CharSet = CharSet.Ansi)]
 69         public static extern int Syn_ReadMsg(int iPortID, int iIfOpen, ref IDCardData pIDCardData);
 70         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_ReadFPMsg", CharSet = CharSet.Ansi)]
 71         public static extern int Syn_ReadFPMsg(int iPortID, int iIfOpen, ref IDCardData pIDCardData, ref byte cFPhotoname);
 72         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_FindReader", CharSet = CharSet.Ansi)]
 73         public static extern int Syn_FindReader();
 74         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_FindUSBReader", CharSet = CharSet.Ansi)]
 75         public static extern int Syn_FindUSBReader();
 76         /***********************设置附加功能函数 ************************/
 77         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetPhotoPath", CharSet = CharSet.Ansi)]
 78         public static extern int Syn_SetPhotoPath(int iOption, ref byte cPhotoPath);
 79         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetPhotoType", CharSet = CharSet.Ansi)]
 80         public static extern int Syn_SetPhotoType(int iType);
 81         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetPhotoName", CharSet = CharSet.Ansi)]
 82         public static extern int Syn_SetPhotoName(int iType);
 83         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetSexType", CharSet = CharSet.Ansi)]
 84         public static extern int Syn_SetSexType(int iType);
 85         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetNationType", CharSet = CharSet.Ansi)]
 86         public static extern int Syn_SetNationType(int iType);
 87         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetBornType", CharSet = CharSet.Ansi)]
 88         public static extern int Syn_SetBornType(int iType);
 89         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetUserLifeBType", CharSet = CharSet.Ansi)]
 90         public static extern int Syn_SetUserLifeBType(int iType);
 91         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_SetUserLifeEType", CharSet = CharSet.Ansi)]
 92         public static extern int Syn_SetUserLifeEType(int iType, int iOption);
 93         /***********************M1卡操作函数 (A16D-HF) ********************/
 94         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_USBHIDM1Reset", CharSet = CharSet.Ansi)]
 95         public static extern int Syn_USBHIDM1Reset(int iPort, ref uint pdwCardSN, ref byte pbSize);
 96         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_USBHIDM1AuthenKey", CharSet = CharSet.Ansi)]
 97         public static extern int Syn_USBHIDM1AuthenKey(int iPort, byte KeyType, byte BlockNo, ref byte pKey);
 98         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_USBHIDM1ReadBlock", CharSet = CharSet.Ansi)]
 99         public static extern int Syn_USBHIDM1ReadBlock(int iPort, byte BlockNo, ref byte pBlock);
100         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_USBHIDM1WriteBlock", CharSet = CharSet.Ansi)]
101         public static extern int Syn_USBHIDM1WriteBlock(int iPort, byte BlockNo, ref byte pBlock);
102         [DllImport("SynIDCardAPI.dll", EntryPoint = "Syn_USBHIDM1Halt", CharSet = CharSet.Ansi)]
103         public static extern int Syn_USBHIDM1Halt(int iPort);
104
105         #endregion
106
107         static int nPort = 0;//端口
108
109         /// <summary>
110         /// 获取身份证信息
111         /// </summary>
112         /// <param name="CardMsg"></param>
113         /// <param name="errStr"></param>
114         /// <returns></returns>
115         public static bool ReadMsg(out IDCardData CardMsg, out string errStr)
116         {
117             CardMsg = new IDCardData();
118             errStr = "";
119             int nRet, iPhotoType;
120             string stmp;
121             byte[] cPath = new byte[255];
122             byte[] pucIIN = new byte[4];
123             byte[] pucSN = new byte[8];
124
125             #region 获取读卡器
126             if (nPort == 0)
127             {
128                 if (!FindDrivers(out errStr, out nPort))
129                 {
130                     if (string.IsNullOrEmpty(errStr))
131                         errStr = "没有找到读卡器";
132                     return false;
133                 }
134             }
135             #endregion
136
137             stmp = "D:\\";
138             cPath = System.Text.Encoding.Default.GetBytes(stmp);
139
140             Syn_SetPhotoPath(2, ref cPath[0]);    //设置照片路径    iOption 路径选项    0=C:    1=当前路径    2=指定路径
141             //cPhotoPath    绝对路径,仅在iOption=2时有效
142             iPhotoType = 0;
143             Syn_SetPhotoType(0); //0 = bmp ,1 = jpg , 2 = base64 , 3 = WLT ,4 = 不生成
144             Syn_SetPhotoName(2); // 生成照片文件名 0=tmp 1=姓名 2=身份证号 3=姓名_身份证号
145
146             Syn_SetSexType(1);    // 0=卡中存储的数据    1=解释之后的数据,男、女、未知
147             Syn_SetNationType(1);// 0=卡中存储的数据    1=解释之后的数据 2=解释之后加"族"
148             Syn_SetBornType(3);            // 0=YYYYMMDD,1=YYYY年MM月DD日,2=YYYY.MM.DD,3=YYYY-MM-DD,4=YYYY/MM/DD
149             Syn_SetUserLifeBType(1);    // 0=YYYYMMDD,1=YYYY年MM月DD日,2=YYYY.MM.DD,3=YYYY-MM-DD,4=YYYY/MM/DD
150             Syn_SetUserLifeEType(1, 1);    // 0=YYYYMMDD(不转换),1=YYYY年MM月DD日,2=YYYY.MM.DD,3=YYYY-MM-DD,4=YYYY/MM/DD,
151             // 0=长期 不转换,    1=长期转换为 有效期开始+50年
152             if (Syn_OpenPort(nPort) == 0)
153             {
154                 if (Syn_SetMaxRFByte(nPort, 80, 0) == 0)
155                 {
156                     nRet = Syn_StartFindIDCard(nPort, ref pucIIN[0], 0);
157                     nRet = Syn_SelectIDCard(nPort, ref pucSN[0], 0);
158                     nRet = Syn_ReadMsg(nPort, 0, ref CardMsg);
159                     if (nRet == 0)
160                     {
161                         return true;
162                     }
163                     else
164                     {
165                         errStr = " A 读取身份证信息错误";
166                         return false;
167                     }
168                 }
169             }
170             else
171             {
172                 errStr = " A 打开端口失败";
173                 return false;
174             }
175             Syn_ClosePort(nPort);
176             return true;
177         }
178
179         /// <summary>
180         /// 获取读卡器
181         /// </summary>
182         /// <param name="error"></param>
183         /// <param name="nPort"></param>
184         /// <returns></returns>
185         public static bool FindDrivers(out string error, out int nPort)
186         {
187             int i = 0;
188             error = "";
189             nPort = 0;
190             try
191             {
192                 i = Syn_FindReader();
193             }
194             catch (Exception e)
195             {
196                 error = e.ToString();
197                 return false;
198             }
199             if (i > 0)
200             {
201                 nPort = i;
202             }
203             else
204             {
205                 nPort = 0;
206                 return false;
207             }
208             return true;
209         }
210     }

View Code

本人用ASP.NET开发的,图片会保存到本地,需要上传到服务器端才能在网页中查看,以下是上传图片的方法

 1 public bool UploadPhoto(string photoPath)
 2         {
 3             FileStream stream = new FileStream(photoPath, FileMode.Open, FileAccess.Read);
 4             int size = Convert.ToInt32(stream.Length);
 5             Byte[] MeaningFile = new Byte[size];
 6             stream.Read(MeaningFile, 0, size);
 7             stream.Close();
 8             FileStream photoStream = null;
 9
10             string fileName = photoPath.Substring(photoPath.LastIndexOf("\\") + 1);
11             string fileExt = photoPath.Substring(photoPath.LastIndexOf(".") + 1);
12             if (fileExt.ToLower() == "bmp")//必须是bmp文件
13             {
14                 try
15                 {
16                     string filePath = Server.MapPath("~/IDCardPhoto/");
17                     if (!Directory.Exists(filePath))
18                     {
19                         Directory.CreateDirectory(filePath);
20                     }
21                     if (File.Exists(Server.MapPath("~/IDCardPhoto/" + fileName)) == true)    //如果存在文件
22                     {
23
24                     }
25                     else
26                     {
27                         //fileName = "newFileName" + fileExt;
28                         photoStream = new FileStream(filePath + fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite);
29                         photoStream.Write(MeaningFile, 0, MeaningFile.Length);
30                         photoStream.Close();
31                     }
32                 }
33                 catch
34                 {
35                     return false;
36                 }
37                 finally
38                 {
39                     if (photoStream != null)
40                     {
41                         try
42                         {
43                             photoStream.Close();
44                         }
45                         catch
46                         {
47                         }
48                     }
49                 }
50             }
51             else
52             {
53
54             }
55             return true;
56         }

View Code

转载于:https://www.cnblogs.com/BrokenIce/p/5977889.html

二代身份证阅读器(XZX)相关推荐

  1. 神思二代身份证阅读器集成WEB实例文档js及说明

    神思二代身份证阅读器使用说明 --By wuhebin 20180705 1.      硬件说明:神思SS628(100)台式二代身份证阅读器 2.    神思阅读器仅支持IE浏览器或者兼容IE浏览 ...

  2. 分享:用Python语言轻松实现二代身份证阅读器(读卡器)自动读卡,支持定制开发

    人工智能的兴起,最近这段时间碰到很多开发工程师咨询Python语言二次开发使用身份证阅读器的问题,这次特增加了Python语言的demo,供大家参考使用. 先上Python界面的读取效果图: 1.说明 ...

  3. 二代身份证阅读器 C#、JAVA调用教程

    型号:普天CPIDMR02/TG身份证阅读器 SDK版本:2020 (我这不提供下载,自己咨询卖家,或者网上自己找,SDK 厂家不二次封装的机器理论通用) 新老版本区别: 多了外国人永久居留身份证.港 ...

  4. delphi 二代身份证阅读器开发 SDT_ReadBaseMsg函数

    C++中函数原型: STDAPI_API int WINAPI SDT_ReadBaseMsg( int iPort, unsigned char * pucCHMsg, unsigned int * ...

  5. delphi 二代身份证阅读器 SDT_ReadBaseMsg()读取到的照片数据进行处理问题

    SDT_ReadBaseMsg(1001,@pucCHMsg,puiCHMsgLen,@pucPHMsg,puiPHMsgLen,1);//获取读卡数据  pucCHMsg 文字信息(unicode编 ...

  6. C#如何读取身份证阅读器

    不同的身份证读卡器,其动态库不一样,新中新二代身份证阅读器,型号:DKQ-A16D,eg: using System; using System.Collections.Generic; using  ...

  7. 二代身份证读取 中控ID180 二三代身份证阅读器 Vue版本

    二代身份证读取 中控ID180 二三代身份证阅读器 Vue版本 设备 设备名称:台式身份证阅读机 产品型号:ID180 设备驱动和文档 链接:https://pan.baidu.com/s/1nAYk ...

  8. IE浏览器使用js调用阅读插件调用二代证阅读器读取身份证信息

    IE浏览器身份证阅读插件,使用js调用阅读插件调用二代证阅读器读取身份证信息(支持中盾身份证阅读设备,如需支持其它设备可与我联系QQ:19937243:E-Mail:nxiaoping@163.com ...

  9. IE下使用js调用阅读插件调用二代证阅读器读取身份证信息

    插件下载地址 http://download.csdn.net/detail/nxiaoping/5974003 js代码 var sRead=new ActiveXObject("TSFZ ...

最新文章

  1. 写文章比较正规的格式
  2. 随机组卷python_关于随机自动组卷的算法,二维数组
  3. [转]C#多线程学习(三) 生产者和消费者
  4. 教科书上的LDA为什么长这样?
  5. opencv学习笔记18:canny算子边缘检测原理及其函数使用
  6. 十二之续、快速排序算法的深入分析
  7. 201521123115 《Java程序设计》第3周学习总结
  8. 针对IE安全控件的爬虫
  9. MintUI(详见官方文档)
  10. 北大方正集团名列2018年中国电子信息百强第8位
  11. iPad Java编辑器_学会这五款软件 让iPad Pro在你手里变得更强大
  12. iMac 2019一体机开箱体验,其内存是什么牌子,怎样换iMac内存?
  13. 宁波大学计算机非全,宁波大学考研:全日制和非全日制的6大区别,很多人不知道...
  14. Excel里面输入18位数字,但是显示却是其他的?!请问怎么解决?
  15. 淘淘商城---8.7
  16. 高精度加法竖式模拟器
  17. vue中$emit跟$on,$off跟用法
  18. JS 倒计时(一天的倒计时)
  19. git从gitHub下载代码
  20. 统计软件与数据分析--Lesson3

热门文章

  1. PHP得到汉字的拼音字母
  2. 中科声龙荣获第七届中国行业影响力品牌峰会“品牌榜入围企业”
  3. 一对一直播源码服务器怎么样防范恶意爬取信息
  4. fcrp-d和fcrp
  5. 简直了!10年难得一见的Tuxedo服务异常
  6. 使用Prawn制作《老友记》Friends对白PDF(附:老友记对白下载)
  7. android 控件页脚,在布局末尾的android中设置页脚
  8. 公益联动|将爱传递 爱心义卖助力乡村孩子实现阅读梦
  9. 10-Mar-2021 17:31日期怎么转换
  10. 利用计算机窃听,神奇 | 以色列研究人员实现利用计算机风扇噪音窃听