IDCerClass.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. /////////////////////////////////////////////////////////////////////////////////
  2. /// Copyright (c) 2012 China Merchants Bank, all rights reserved ///
  3. /// Adapter Interface for Identity Card reader. ///
  4. /// ///
  5. ////////////////////////////////////////////////////////////////////////////////
  6. #ifndef IDCER_CLASS_H
  7. #define IDCER_CLASS_H
  8. #pragma once
  9. #include "DeviceBaseClass.h"
  10. const int IDCER_EIGHT_BYTE_SIZE = 8;
  11. const int MAX_IDCER_SIMPLE_INFO_SIZE = 32;
  12. const int MAX_IDCER_INFO_SIZE = 128;
  13. const int MAX_IDCER_PHOTO_PATH = 260;
  14. //二代身份证信息结构(需要支持外国人永久居留证请使用IDCerInfoEx)
  15. //请务必按照各字段指定格式返回数据
  16. struct IDCerInfo
  17. {
  18. struct Name{
  19. CHAR data[MAX_IDCER_INFO_SIZE];
  20. DWORD dwSize;}name;
  21. struct Sex{
  22. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  23. DWORD dwSize;}sex;
  24. struct Nation{
  25. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  26. DWORD dwSize;}nation;
  27. struct Birthday{//format:1986年10月07日
  28. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  29. DWORD dwSize;}birthday;
  30. struct Address{
  31. CHAR data[MAX_IDCER_INFO_SIZE];
  32. DWORD dwSize;}address;
  33. struct Idno{
  34. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  35. DWORD dwSize;}idno;
  36. struct Department{
  37. CHAR data[MAX_IDCER_INFO_SIZE];
  38. DWORD dwSize;}department;
  39. struct StartDate{//format:2010.08.09
  40. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  41. DWORD dwSize;}startDate;
  42. struct EndDate{ //format:2020.08.09
  43. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  44. DWORD dwSize;}endDate;
  45. struct NewAddress{
  46. CHAR data[MAX_IDCER_INFO_SIZE];
  47. DWORD dwSize;}newAddress;
  48. struct PhotoPath{
  49. CHAR data[MAX_IDCER_PHOTO_PATH];
  50. DWORD dwSize;}photoPath;
  51. };
  52. //二代证信息结构(支持外国人永久居留证)
  53. //请务必按照各字段指定格式返回数据
  54. struct IDCerInfoEx
  55. {
  56. struct Name{//中文姓名
  57. CHAR data[MAX_IDCER_INFO_SIZE];
  58. DWORD dwSize;
  59. }name;
  60. struct Sex{//性别
  61. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  62. DWORD dwSize;
  63. }sex;
  64. struct Nation{//民族(二代证专用)
  65. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  66. DWORD dwSize;
  67. }nation;
  68. struct Birthday{//出生日期,格式:1986年10月07日
  69. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  70. DWORD dwSize;
  71. }birthday;
  72. struct Address{//住址(二代证专用)
  73. CHAR data[MAX_IDCER_INFO_SIZE];
  74. DWORD dwSize;
  75. }address;
  76. struct Idno{//证件号码,二代证指身份证号,外国人指永久居留证号
  77. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  78. DWORD dwSize;
  79. }idno;
  80. struct Department{//二代证指签发机关,外国人指当次申请受理机关代码
  81. CHAR data[MAX_IDCER_INFO_SIZE];
  82. DWORD dwSize;
  83. }department;
  84. struct StartDate{//有效期起始日(签发日)格式:2010.08.09
  85. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  86. DWORD dwSize;
  87. }startDate;
  88. struct EndDate{ //有效期截止日(终止日)格式:2020.08.09
  89. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  90. DWORD dwSize;
  91. }endDate;
  92. struct NewAddress{//最新地址,二代证专用
  93. CHAR data[MAX_IDCER_INFO_SIZE];
  94. DWORD dwSize;
  95. }newAddress;
  96. struct PhotoPath{
  97. CHAR data[MAX_IDCER_PHOTO_PATH];
  98. DWORD dwSize;
  99. }photoPath;
  100. struct EnglishName{//英文姓名,外国人专用
  101. CHAR data[MAX_IDCER_INFO_SIZE];
  102. DWORD dwSize;
  103. }englishName;
  104. struct Nationality{//国籍或地区代码,外国人专用
  105. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  106. DWORD dwSize;
  107. }nationality;
  108. struct IdVersion{//证件版本号,外国人专用
  109. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  110. DWORD dwSize;
  111. }idVersion;
  112. struct IdType{//证件类型标识,外国人取值'I',二代证为空
  113. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  114. DWORD dwSize;
  115. }idType;
  116. struct Reserved{//保留字段,外国人专用
  117. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  118. DWORD dwSize;
  119. }reserved;
  120. struct TXZCode{//通行证号码(港澳台居住证)
  121. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  122. DWORD dwSize;
  123. }txzCode;
  124. struct IssuedSN{//签发次数(港澳台居住证)
  125. CHAR data[IDCER_EIGHT_BYTE_SIZE];
  126. DWORD dwSize;
  127. }issuedSN;
  128. struct Reserved2{//备用2(港澳台居住证)
  129. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  130. DWORD dwSize;
  131. }reserved2;
  132. struct Reserved3{//备用3(港澳台居住证)
  133. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  134. DWORD dwSize;
  135. }reserved3;
  136. struct Reserved4{//备用4(港澳台居住证)
  137. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  138. DWORD dwSize;
  139. }reserved4;
  140. struct Reserved5{//备用5(港澳台居住证)
  141. CHAR data[MAX_IDCER_SIMPLE_INFO_SIZE];
  142. DWORD dwSize;
  143. }reserved5;
  144. };
  145. class IDCerClass : public DeviceBaseClass
  146. {
  147. public:
  148. //
  149. // Open device.
  150. // if usb device,set dwPort=0
  151. //
  152. virtual ErrorCodeEnum DevOpen(DWORD dwPort) = 0;
  153. //
  154. // Optional.
  155. // Open or close RF.
  156. // Arguments:
  157. // - bControl:true:open RF,false close RF
  158. // - 对于吸入式,为true接收身份证插入,为false时弹出身份证并关闭接收身份证插入
  159. //
  160. virtual ErrorCodeEnum IDCerRFControl(bool bControl) = 0;
  161. //
  162. // Optional.
  163. // Certificate authentication.
  164. //
  165. virtual ErrorCodeEnum IDCerAuthenticate() = 0;
  166. // 即将废弃,请使用IDCerGetDataEx
  167. // Get Identity Card info.
  168. //
  169. virtual ErrorCodeEnum IDCerGetData(IDCerInfo &idCerInfo) { return Error_NotImpl; }
  170. // 获取证件信息,包括二代身份证、外国人永久居留证
  171. // Get Identity Card info.
  172. //
  173. virtual ErrorCodeEnum IDCerGetDataEx(IDCerInfoEx &idCerInfoEx){return Error_NotImpl;}
  174. // 强制弹出身份证等证件
  175. // Force ID Card to eject。
  176. //
  177. virtual ErrorCodeEnum ForceIDEject(){return Error_NotImpl;}
  178. // 扫描证件并保留扫描文件到默认路径(dep目录下),证件正面使用“idfront.bmp”,证件反面使用“idback.bmp”
  179. // Scan ID Card and save the image to the position(dep/),using default name "idfront.bmp" and "idback.bmp"。
  180. //
  181. virtual ErrorCodeEnum ScanIDAndSaveImage(){return Error_NotImpl;}
  182. // 获取卡片是否插入或者取走
  183. // Query if ID Card have been inserted or fetched。
  184. // pos:
  185. // -- 0,未检测到任何证件;1,证件在读卡器内部;2,证件在进卡口
  186. //
  187. virtual ErrorCodeEnum QueryCardPos(int &pos){return Error_NotImpl;}
  188. };
  189. #endif //IDCER_CLASS_H