ZZJIDReadCard.cs 31 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562
  1. using System;
  2. using System.Text;
  3. using System.Text.RegularExpressions;
  4. using System.Threading;
  5. using System.Windows;
  6. using Newtonsoft.Json.Linq;
  7. namespace ZZJIDCard
  8. {
  9. public class ZZJIDReadCard
  10. {
  11. private bool mbOpened = false;
  12. private Thread mthWorkThread = null;
  13. bool mbStopThread = true;
  14. bool mbSuspendReadCard = false;
  15. JObject resultObj = new JObject();
  16. int icdev = -1;
  17. public JObject dcinit()
  18. {
  19. JObject output = new JObject();
  20. String errorCode = "0";
  21. String errorMessage = "成功";
  22. icdev = T10TermbApi.dc_init(100, 115200);//打开usb端口设备,波特率设置无效
  23. if ((int)icdev <= 0)
  24. {
  25. //MessageBox.Show("初始化失败 打开usb端口设备失败!!!");
  26. errorCode = "-1";
  27. errorMessage = "初始化失败 打开身份证usb端口设备失败!!!";
  28. output.Add("errorCode", errorCode);
  29. output.Add("errorMessage", errorMessage);
  30. return output;
  31. }
  32. output.Add("errorCode", errorCode);
  33. output.Add("errorMessage", errorMessage);
  34. return output;
  35. }
  36. public string IDReadCard(string inParams)
  37. {
  38. // System.Diagnostics.Debugger.Launch();
  39. string errorCode = "0";
  40. string errorMessage = "";
  41. JObject output = new JObject();
  42. int olyIDCardFlag = 0;
  43. resultObj = new JObject();
  44. try
  45. {
  46. JObject inParamsobj = JObject.Parse(inParams);
  47. string port = inParamsobj["iport"].ToString();
  48. if (port != "")
  49. {
  50. //单独身份证读取
  51. int iPort = 0;
  52. int.TryParse(port, out iPort);
  53. if (iPort > 0)
  54. {
  55. int ret = TermbApi.InitComm(iPort);
  56. if (ret > 0)
  57. {
  58. olyIDCardFlag = 1;
  59. byte[] value = new byte[64];
  60. TermbApi.GetSAMID(value);
  61. String strSamId = Encoding.GetEncoding("GBK").GetString(value);
  62. strSamId = strSamId.Replace("\0", "");
  63. mbOpened = true;
  64. mbStopThread = false;
  65. mthWorkThread = new Thread(new ThreadStart(readCard));
  66. mthWorkThread.IsBackground = true;
  67. mthWorkThread.Start();
  68. }
  69. }
  70. }
  71. }
  72. catch (Exception ex2)
  73. {
  74. }
  75. try
  76. {
  77. if (olyIDCardFlag == 1)
  78. {
  79. mbStopThread = true;
  80. mthWorkThread.Join();
  81. TermbApi.CloseComm(); ////"设备连接断开!";
  82. mbOpened = false;
  83. }
  84. }
  85. catch (Exception ex2)
  86. {
  87. errorCode = "-1";
  88. errorMessage = ex2.Message;
  89. }
  90. if (olyIDCardFlag == 1)
  91. {
  92. output.Add("errorCode", errorCode);
  93. output.Add("errorMessage", errorMessage);
  94. output.Add("result", resultObj);
  95. return output.ToString();
  96. }
  97. ///////////////以下为非单独身份证读取////////////////////////////////////
  98. int st = -1;
  99. try
  100. {
  101. if (olyIDCardFlag == 0)
  102. {
  103. //非单独身份证读取
  104. if ((int)icdev <= 0)
  105. {
  106. JObject dcinitoutobj = dcinit();
  107. if (dcinitoutobj["errorCode"].ToString() != "0")
  108. {
  109. return output.ToString();
  110. }
  111. }
  112. //MessageBox.Show("2:"+icdev.ToString());
  113. if ((int)icdev <= 0)
  114. {
  115. errorCode = "-1";
  116. errorMessage = "初始化失败 打开身份证usb端口设备失败!!!";
  117. output.Add("errorCode", errorCode);
  118. output.Add("errorMessage", errorMessage);
  119. return output.ToString();
  120. }
  121. int result = -1;
  122. int text_len = 0;
  123. byte[] text = new byte[256];
  124. int photo_len = 204800;
  125. byte[] photo = new byte[204800];
  126. int fingerprint_len = 0;
  127. byte[] fingerprint = new byte[1024];
  128. int extra_len = 0;
  129. byte[] extra = new byte[70];
  130. int type = 0;
  131. string tempbuffer;
  132. byte[] name = new byte[64];
  133. byte[] sex = new byte[8];
  134. byte[] nation = new byte[12];
  135. byte[] birth_day = new byte[30];
  136. byte[] address = new byte[125];
  137. byte[] id_number = new byte[60];
  138. byte[] department = new byte[64];
  139. byte[] expire_start_day = new byte[36];
  140. byte[] expire_end_day = new byte[36];
  141. byte[] reserved = new byte[76];
  142. byte[] info_buffer = new byte[64];
  143. result = T10TermbApi.dc_SamAReadCardInfo(icdev, 3, ref text_len, text, ref photo_len, photo, ref fingerprint_len, fingerprint, ref extra_len, extra);
  144. //MessageBox.Show(result.ToString());
  145. if (result != 0)
  146. {
  147. //st = T10TermbApi.dc_exit(icdev);
  148. //MessageBox.Show("3:" + st.ToString());
  149. errorCode = "-1";
  150. errorMessage = "读取失败!!!!!";
  151. output.Add("errorCode", errorCode);
  152. output.Add("errorMessage", errorMessage);
  153. return output.ToString();
  154. }
  155. if ((text[0] >= 'A') && (text[0] <= 'Z') && (text[1] == 0))
  156. {
  157. type = 1;
  158. }
  159. if (type == 0)
  160. {
  161. result = T10TermbApi.dc_ParseTextInfo(icdev, 0, text_len, text, name, sex, nation, birth_day, address, id_number, department, expire_start_day, expire_end_day, reserved);
  162. if (result != 0)
  163. {
  164. //st = T10TermbApi.dc_exit(icdev);
  165. errorCode = "-1";
  166. errorMessage = "读取失败!!!!!";
  167. output.Add("errorCode", errorCode);
  168. output.Add("errorMessage", errorMessage);
  169. return output.ToString();
  170. }
  171. resultObj.Add("name", Regex.Replace(System.Text.Encoding.Default.GetString(name), "\u0000", ""));
  172. T10TermbApi.dc_ParseOtherInfo(icdev, 0, sex, info_buffer);
  173. resultObj.Add("sex", Regex.Replace(System.Text.Encoding.Default.GetString(info_buffer), "\u0000", ""));
  174. T10TermbApi.dc_ParseOtherInfo(icdev, 1, nation, info_buffer);
  175. resultObj.Add("nation", Regex.Replace(System.Text.Encoding.Default.GetString(info_buffer), "\u0000", ""));
  176. resultObj.Add("birth_day", Regex.Replace(System.Text.Encoding.Default.GetString(birth_day), "\u0000", ""));
  177. resultObj.Add("address", Regex.Replace(System.Text.Encoding.Default.GetString(address), "\u0000", ""));
  178. resultObj.Add("id_number", Regex.Replace(System.Text.Encoding.Default.GetString(id_number), "\u0000", ""));
  179. resultObj.Add("department", Regex.Replace(System.Text.Encoding.Default.GetString(department), "\u0000", ""));
  180. resultObj.Add("expire_start_day", Regex.Replace(System.Text.Encoding.Default.GetString(expire_start_day), "\u0000", ""));
  181. resultObj.Add("expire_end_day", Regex.Replace(System.Text.Encoding.Default.GetString(expire_end_day), "\u0000", ""));
  182. }
  183. else if (type == 1)
  184. {
  185. byte[] english_name = new byte[244];
  186. byte[] citizenship = new byte[16];
  187. byte[] chinese_name = new byte[64];
  188. byte[] version_number = new byte[12];
  189. byte[] department_code = new byte[20];
  190. byte[] type_sign = new byte[8];
  191. result = T10TermbApi.dc_ParseTextInfoForForeigner(icdev, 0, text_len, text, english_name, sex, id_number, citizenship, chinese_name, expire_start_day, expire_end_day, birth_day, version_number, department_code, type_sign, reserved);
  192. if (result != 0)
  193. {
  194. //st = T10TermbApi.dc_exit(icdev);
  195. errorCode = "-1";
  196. errorMessage = "读取失败!!!!!";
  197. output.Add("errorCode", errorCode);
  198. output.Add("errorMessage", errorMessage);
  199. return output.ToString();
  200. }
  201. tempbuffer = string.Format("name: {0}", System.Text.Encoding.Default.GetString(english_name));
  202. string strEnName = Regex.Replace(System.Text.Encoding.Default.GetString(english_name), "\u0000", "");
  203. resultObj.Add("enName", strEnName);
  204. T10TermbApi.dc_ParseOtherInfo(icdev, 0, sex, info_buffer);
  205. resultObj.Add("sex", Regex.Replace(System.Text.Encoding.Default.GetString(sex), "\u0000", ""));
  206. tempbuffer = string.Format("id_number: {0}", System.Text.Encoding.Default.GetString(id_number));
  207. resultObj.Add("id_number", Regex.Replace(System.Text.Encoding.Default.GetString(id_number), "\u0000", ""));
  208. T10TermbApi.dc_ParseOtherInfo(icdev, 2, citizenship, info_buffer);
  209. resultObj.Add("citizenship", Regex.Replace(System.Text.Encoding.Default.GetString(info_buffer), "\u0000", ""));
  210. resultObj.Add("citizenship2", Regex.Replace(System.Text.Encoding.Default.GetString(citizenship), "\u0000", ""));
  211. string strCnName = Regex.Replace(System.Text.Encoding.Default.GetString(chinese_name), "\u0000", "");
  212. if (strCnName != "")
  213. {
  214. resultObj.Add("name", strCnName);
  215. }
  216. else
  217. {
  218. resultObj.Add("name", strEnName);
  219. }
  220. resultObj.Add("expire_start_day", Regex.Replace(System.Text.Encoding.Default.GetString(expire_start_day), "\u0000", ""));
  221. resultObj.Add("expire_end_day", Regex.Replace(System.Text.Encoding.Default.GetString(expire_end_day), "\u0000", ""));
  222. resultObj.Add("birth_day", Regex.Replace(System.Text.Encoding.Default.GetString(birth_day), "\u0000", ""));
  223. resultObj.Add("visatimes", Regex.Replace(System.Text.Encoding.Default.GetString(version_number), "\u0000", ""));
  224. resultObj.Add("department_code", Regex.Replace(System.Text.Encoding.Default.GetString(department_code), "\u0000", ""));
  225. resultObj.Add("department", Regex.Replace(System.Text.Encoding.Default.GetString(department_code), "\u0000", ""));
  226. resultObj.Add("type_sign", Regex.Replace(System.Text.Encoding.Default.GetString(type_sign), "\u0000", ""));
  227. }
  228. }
  229. }
  230. catch (Exception ex2)
  231. {
  232. errorCode = "-1";
  233. errorMessage = ex2.Message;
  234. }
  235. //st = T10TermbApi.dc_exit(icdev);
  236. output.Add("errorCode", errorCode);
  237. output.Add("errorMessage", errorMessage);
  238. output.Add("result", resultObj);
  239. return output.ToString();
  240. }
  241. private void readCard()
  242. {
  243. Thread.Sleep(200);
  244. int ret = TermbApi.Authenticate();
  245. if (1 == ret)
  246. {
  247. ret = TermbApi.Read_Content(1);
  248. if (1 == ret)
  249. {
  250. resultObj.Add("IDType", "居民身份证");
  251. // 姓名,性别,民族,出生日期,常住地址,身份号码,签发机关,有效期限,照片,指纹
  252. byte[] value = new byte[256];
  253. TermbApi.getName(value, 256);
  254. String strName = Encoding.GetEncoding("GBK").GetString(value);
  255. strName = strName.Replace("\0", "");
  256. resultObj.Add("name", strName);
  257. Array.Clear(value,0, value.Length);
  258. TermbApi.getSex(value, 256);
  259. String strSex = Encoding.GetEncoding("GBK").GetString(value);
  260. strSex = strSex.Replace("\0", "");
  261. resultObj.Add("sex", strSex);
  262. Array.Clear(value, 0, value.Length);
  263. TermbApi.getNation(value, 256);
  264. String strNation = Encoding.GetEncoding("GBK").GetString(value);
  265. strNation = strNation.Replace("\0", "");
  266. resultObj.Add("nation", strNation);
  267. Array.Clear(value, 0, value.Length);
  268. TermbApi.getBirthdate(value, 256);
  269. String strBorn = Encoding.GetEncoding("GBK").GetString(value);
  270. strBorn = strBorn.Replace("\0", "");
  271. resultObj.Add("birth_day", strBorn);
  272. Array.Clear(value, 0, value.Length);
  273. TermbApi.getAddress(value, 256);
  274. String strAddress = Encoding.GetEncoding("GBK").GetString(value);
  275. strAddress = strAddress.Replace("\0", "");
  276. resultObj.Add("address", strAddress);
  277. Array.Clear(value, 0, value.Length);
  278. TermbApi.getIDNum(value, 256);
  279. String strLicId = Encoding.GetEncoding("GBK").GetString(value);
  280. strLicId = strLicId.Replace("\0", "");
  281. resultObj.Add("id_number", strLicId);
  282. Array.Clear(value, 0, value.Length);
  283. TermbApi.getIssue(value, 256);
  284. String strIssue = Encoding.GetEncoding("GBK").GetString(value);
  285. strIssue = strIssue.Replace("\0", "");
  286. //strResult += "\r\n签发机关:" + strIssue;
  287. resultObj.Add("department", strIssue);
  288. Array.Clear(value, 0, value.Length);
  289. TermbApi.getEffectedDate(value, 256);
  290. String strEffextedDate = Encoding.GetEncoding("GBK").GetString(value);
  291. strEffextedDate = strEffextedDate.Replace("\0", "");
  292. resultObj.Add("expire_start_day", strEffextedDate);
  293. Array.Clear(value, 0, value.Length);
  294. TermbApi.getExpiredDate(value, 256);
  295. String strexpireDate = Encoding.GetEncoding("GBK").GetString(value);
  296. strexpireDate = strexpireDate.Replace("\0", "");
  297. resultObj.Add("expire_end_day", strexpireDate);
  298. ret = TermbApi.GetBmpPhotoExt();
  299. if (1 == ret)
  300. {
  301. Array.Clear(value, 0, value.Length);
  302. value = new byte[128 * 1024];
  303. TermbApi.getJPGPhotoBase64(value, 128 * 1024);
  304. String strJpegBase64 = Encoding.GetEncoding("GBK").GetString(value);
  305. strJpegBase64 = strJpegBase64.Replace("\0", "");
  306. resultObj.Add("picture", strJpegBase64);
  307. }
  308. Array.Clear(value, 0, value.Length);
  309. }
  310. else if (2 == ret)
  311. {
  312. // 中文名,英文名,性别,国家,出生日期,身份号码,签发机关代码,有效期限,照片,指纹
  313. resultObj.Add("IDType", "2017版永居证");
  314. byte[] value = new byte[256];
  315. TermbApi.getCnName(value, 256);
  316. String strCnName = Encoding.GetEncoding("GBK").GetString(value);
  317. strCnName = strCnName.Replace("\0", "");
  318. Array.Clear(value, 0, value.Length);
  319. TermbApi.getEnName(value, 256);
  320. String strEnName = Encoding.GetEncoding("GBK").GetString(value);
  321. strEnName = strEnName.Replace("\0", "");
  322. //strResult += "\r\n英文名:" + strEnName;
  323. if (strCnName != "")
  324. {
  325. resultObj.Add("name", strCnName);
  326. }
  327. else {
  328. resultObj.Add("name", strEnName);
  329. }
  330. resultObj.Add("enName", strEnName);
  331. Array.Clear(value, 0, value.Length);
  332. TermbApi.getSex(value, 256);
  333. String strSex = Encoding.GetEncoding("GBK").GetString(value);
  334. strSex = strSex.Replace("\0", "");
  335. resultObj.Add("sex", strSex);
  336. Array.Clear(value, 0, value.Length);
  337. TermbApi.getNation(value, 256);
  338. String strCountry = Encoding.GetEncoding("GBK").GetString(value);
  339. strCountry = strCountry.Replace("\0", "");
  340. //strResult += "\r\n国家/地区:" + strCountry;
  341. resultObj.Add("address", strCountry);
  342. Array.Clear(value, 0, value.Length);
  343. TermbApi.getBirthdate(value, 256);
  344. String strBorn = Encoding.GetEncoding("GBK").GetString(value);
  345. strBorn = strBorn.Replace("\0", "");
  346. //strResult += "\r\n出生日期:" + strBorn;
  347. resultObj.Add("birth_day", strBorn);
  348. Array.Clear(value, 0, value.Length);
  349. TermbApi.getIDNum(value, 256);
  350. String strLicId = Encoding.GetEncoding("GBK").GetString(value);
  351. strLicId = strLicId.Replace("\0", "");
  352. //strResult += "\r\n身份号码:" + strLicId;
  353. resultObj.Add("id_number", strLicId);
  354. Array.Clear(value, 0, value.Length);
  355. TermbApi.getIssue(value, 256);
  356. String strIssue = Encoding.GetEncoding("GBK").GetString(value);
  357. strIssue = strIssue.Replace("\0", "");
  358. //strResult += "\r\n签发机关代码:" + strIssue;
  359. resultObj.Add("department", strIssue);
  360. Array.Clear(value, 0, value.Length);
  361. TermbApi.getEffectedDate(value, 256);
  362. String strEffectedData = Encoding.GetEncoding("GBK").GetString(value);
  363. strEffectedData = strEffectedData.Replace("\0", "");
  364. resultObj.Add("expire_start_day", strEffectedData);
  365. Array.Clear(value, 0, value.Length);
  366. TermbApi.getExpiredDate(value, 256);
  367. String strExpireDate = Encoding.GetEncoding("GBK").GetString(value);
  368. strExpireDate = strExpireDate.Replace("\0", "");
  369. resultObj.Add("expire_end_day", strExpireDate);
  370. //strResult += "\r\n有效期限:" + strEffectedData + "-" + strExpireDate;
  371. value = new byte[128 * 1024];
  372. ret = TermbApi.GetBmpPhotoExt();
  373. if (1 == ret)
  374. {
  375. Array.Clear(value, 0, value.Length);
  376. value = new byte[128 * 1024];
  377. TermbApi.getJPGPhotoBase64(value, 128 * 1024);
  378. String strJpegBase64 = Encoding.GetEncoding("GBK").GetString(value);
  379. strJpegBase64 = strJpegBase64.Replace("\0", "");
  380. resultObj.Add("picture", strJpegBase64);
  381. }
  382. }
  383. else if (3 == ret)
  384. {
  385. // 姓名,性别,出生日期,常住地址,身份号码,签发机关,有效期限,照片,指纹
  386. resultObj.Add("IDType", "港澳台居住证");
  387. byte[] value = new byte[256];
  388. TermbApi.getName(value, 256);
  389. String strName = Encoding.GetEncoding("GBK").GetString(value);
  390. strName = strName.Replace("\0", "");
  391. resultObj.Add("name", strName);
  392. Array.Clear(value, 0, value.Length);
  393. TermbApi.getSex(value, 256);
  394. String strSex = Encoding.GetEncoding("GBK").GetString(value);
  395. strSex = strSex.Replace("\0", "");
  396. resultObj.Add("sex", strSex);
  397. Array.Clear(value, 0, value.Length);
  398. TermbApi.getBirthdate(value, 256);
  399. String strBorn = Encoding.GetEncoding("GBK").GetString(value);
  400. strBorn = strBorn.Replace("\0", "");
  401. resultObj.Add("birth_day", strBorn);
  402. Array.Clear(value, 0, value.Length);
  403. TermbApi.getAddress(value, 256);
  404. String strAddress = Encoding.GetEncoding("GBK").GetString(value);
  405. strAddress = strAddress.Replace("\0", "");
  406. //strResult += "\r\n常住地址:" + strAddress;
  407. resultObj.Add("address", strAddress);
  408. Array.Clear(value, 0, value.Length);
  409. TermbApi.getIDNum(value, 256);
  410. String strLicId = Encoding.GetEncoding("GBK").GetString(value);
  411. strLicId = strLicId.Replace("\0", "");
  412. //strResult += "\r\n身份号码:" + strLicId;
  413. resultObj.Add("id_number", strLicId);
  414. Array.Clear(value, 0, value.Length);
  415. TermbApi.getIssue(value, 256);
  416. String strIssue = Encoding.GetEncoding("GBK").GetString(value);
  417. strIssue = strIssue.Replace("\0", "");
  418. //strResult += "\r\n签发机关:" + strIssue;
  419. resultObj.Add("department", strIssue);
  420. Array.Clear(value, 0, value.Length);
  421. TermbApi.getEffectedDate(value, 256);
  422. String strEffextedDate = Encoding.GetEncoding("GBK").GetString(value);
  423. strEffextedDate = strEffextedDate.Replace("\0", "");
  424. resultObj.Add("expire_start_day", strEffextedDate);
  425. Array.Clear(value, 0, value.Length);
  426. TermbApi.getExpiredDate(value, 256);
  427. String strexpireDate = Encoding.GetEncoding("GBK").GetString(value);
  428. strexpireDate = strexpireDate.Replace("\0", "");
  429. //strResult += "\r\n有效期限:" + strEffextedDate + "-" + strexpireDate;
  430. resultObj.Add("expire_end_day", strexpireDate);
  431. Array.Clear(value, 0, value.Length);
  432. TermbApi.getPassNum(value, 256);
  433. String strPassNum = Encoding.GetEncoding("GBK").GetString(value);
  434. strPassNum = strPassNum.Replace("\0", "");
  435. //strResult += "\r\n通行证号码:" + strPassNum;
  436. resultObj.Add("passNum", strPassNum);
  437. int visatimes = TermbApi.getVisaTimes();
  438. resultObj.Add("visatimes", visatimes);
  439. //strResult += "\r\n签证次数:" + visatimes;
  440. ret = TermbApi.GetBmpPhotoExt();
  441. if (1 == ret)
  442. {
  443. Array.Clear(value, 0, value.Length);
  444. value = new byte[128 * 1024];
  445. TermbApi.getJPGPhotoBase64(value, 128 * 1024);
  446. String strJpegBase64 = Encoding.GetEncoding("GBK").GetString(value);
  447. strJpegBase64 = strJpegBase64.Replace("\0", "");
  448. resultObj.Add("picture", strJpegBase64);
  449. }
  450. }
  451. else if (4 == ret)
  452. {
  453. // 中文名,英文名,性别,国家,出生日期,身份号码,签发机关代码,有效期限,照片,指纹
  454. //String strResult = "证件类型:2023版永居证\r\n";
  455. resultObj.Add("IDType", "2023版永居证");
  456. byte[] value = new byte[256];
  457. TermbApi.getCnName(value, 256);
  458. String strCnName = Encoding.GetEncoding("GBK").GetString(value);
  459. strCnName = strCnName.Replace("\0", "");
  460. //strResult += "中文名:" + strCnName;
  461. Array.Clear(value, 0, value.Length);
  462. TermbApi.getEnName(value, 256);
  463. String strEnName = Encoding.GetEncoding("GBK").GetString(value);
  464. strEnName = strEnName.Replace("\0", "");
  465. //strResult += "\r\n英文名:" + strEnName;
  466. if (strCnName != "")
  467. {
  468. resultObj.Add("name", strCnName);
  469. }
  470. else
  471. {
  472. resultObj.Add("name", strEnName);
  473. }
  474. resultObj.Add("enName", strEnName);
  475. Array.Clear(value, 0, value.Length);
  476. TermbApi.getSex(value, 256);
  477. String strSex = Encoding.GetEncoding("GBK").GetString(value);
  478. strSex = strSex.Replace("\0", "");
  479. resultObj.Add("sex", strSex);
  480. Array.Clear(value, 0, value.Length);
  481. TermbApi.getNation(value, 256);
  482. String strCountry = Encoding.GetEncoding("GBK").GetString(value);
  483. strCountry = strCountry.Replace("\0", "");
  484. //strResult += "\r\n国家/地区:" + strCountry;
  485. resultObj.Add("address", strCountry);
  486. Array.Clear(value, 0, value.Length);
  487. TermbApi.getBirthdate(value, 256);
  488. String strBorn = Encoding.GetEncoding("GBK").GetString(value);
  489. strBorn = strBorn.Replace("\0", "");
  490. //strResult += "\r\n出生日期:" + strBorn;
  491. resultObj.Add("birth_day", strBorn);
  492. Array.Clear(value, 0, value.Length);
  493. TermbApi.getIDNum(value, 256);
  494. String strLicId = Encoding.GetEncoding("GBK").GetString(value);
  495. strLicId = strLicId.Replace("\0", "");
  496. //strResult += "\r\n身份号码:" + strLicId;
  497. resultObj.Add("id_number", strLicId);
  498. Array.Clear(value, 0, value.Length);
  499. TermbApi.getEffectedDate(value, 256);
  500. String strEffectedData = Encoding.GetEncoding("GBK").GetString(value);
  501. strEffectedData = strEffectedData.Replace("\0", "");
  502. resultObj.Add("expire_start_day", strEffectedData);
  503. Array.Clear(value, 0, value.Length);
  504. TermbApi.getExpiredDate(value, 256);
  505. String strExpireDate = Encoding.GetEncoding("GBK").GetString(value);
  506. strExpireDate = strExpireDate.Replace("\0", "");
  507. //strResult += "\r\n有效期限:" + strEffectedData + "-" + strExpireDate;
  508. resultObj.Add("expire_end_day", strExpireDate);
  509. Array.Clear(value, 0, value.Length);
  510. int visaTimes = TermbApi.getVisaTimes();
  511. resultObj.Add("visatimes", visaTimes);
  512. //strResult += "\r\n换证次数:" + visaTimes;
  513. Array.Clear(value, 0, value.Length);
  514. TermbApi.getRelateIDNum(value, 256);
  515. String strRelateIdNum = Encoding.GetEncoding("GBK").GetString(value);
  516. strRelateIdNum = strRelateIdNum.Replace("\0", "");
  517. //strResult += "\r\n既往证件号码关联项:" + strRelateIdNum;
  518. resultObj.Add("relateIdNum", strRelateIdNum);
  519. if (strRelateIdNum.Length > 0)
  520. {
  521. Array.Clear(value, 0, value.Length);
  522. TermbApi.getOldIDNum(value, 256);
  523. String strOldId = Encoding.GetEncoding("GBK").GetString(value);
  524. strOldId = strOldId.Replace("\0", "");
  525. //strResult += "\r\n既往证件号码:" + strOldId;
  526. resultObj.Add("relateIdNumOldId", strOldId);
  527. }
  528. value = new byte[128 * 1024];
  529. ret = TermbApi.GetBmpPhotoExt();
  530. if (1 == ret)
  531. {
  532. Array.Clear(value, 0, value.Length);
  533. value = new byte[128 * 1024];
  534. TermbApi.getJPGPhotoBase64(value, 128 * 1024);
  535. String strJpegBase64 = Encoding.GetEncoding("GBK").GetString(value);
  536. strJpegBase64 = strJpegBase64.Replace("\0", "");
  537. resultObj.Add("picture", strJpegBase64);
  538. }
  539. }
  540. }
  541. }
  542. }
  543. }