You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

95 lines
3.4 KiB

1 month ago
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using System.Windows.Forms;
  8. using ShenTun.IcCard.Common;
  9. namespace ShenTun.IcCard.Instance
  10. {
  11. /// <summary>
  12. /// 研腾,华视(100)
  13. /// </summary>
  14. public class ReadCardByYT100:IReadCard
  15. {
  16. Response IReadCard.GetReadCard()
  17. {
  18. int iPort = 1001;
  19. int ret = -1;
  20. bool bDisp = false;
  21. string strTmp = string.Empty;
  22. Response res = new Response()
  23. {
  24. code = -101
  25. };
  26. IDCardInfo idCard = new IDCardInfo();
  27. try
  28. {
  29. ret = YT100.InitComm(iPort);
  30. LogHelper.LogWriter("InitComm End");
  31. if (ret != 1)
  32. {
  33. res.code = -101;
  34. res.message = "打开读卡设备失败,请确认是否安装驱动以及是否已连接读卡器!";
  35. return res;
  36. }
  37. bDisp = true;
  38. ret = YT100.Authenticate();
  39. LogHelper.LogWriter("Authenticate End");
  40. if (ret <= 1)
  41. {
  42. res.code = -102;
  43. res.message = "巡卡失败,请拿开身份证重新放置!";
  44. return res;
  45. }
  46. YT100.Read_Content(1);
  47. LogHelper.LogWriter("Read_Content End");
  48. idCard.Name = YT100.GetName();
  49. LogHelper.LogWriter("GetName End");
  50. idCard.Sex = YT100.GetSex();
  51. LogHelper.LogWriter("GetSex End");
  52. idCard.IDCode = YT100.GetIDCode();
  53. LogHelper.LogWriter("GetIDCode End");
  54. idCard.Birthday = YT100.GetBirthday();
  55. LogHelper.LogWriter("GetBirthday End");
  56. idCard.Address = YT100.GetAddress();
  57. LogHelper.LogWriter("GetAddress End");
  58. strTmp = YT100.GetNation();
  59. LogHelper.LogWriter("GetNation End");
  60. //var nation = BaseData.nList.Where(p => p.Name.Equals(strTmp)).FirstOrDefault();
  61. if (!strTmp.Contains("族"))
  62. idCard.Nation = strTmp + "族";
  63. else
  64. idCard.Nation = strTmp;
  65. LogHelper.LogWriter("Nation End");
  66. idCard.DepartmentIC = YT100.GetDepartmentIC();
  67. LogHelper.LogWriter("GetDepartmentIC End");
  68. idCard.StartDateIC = YT100.GetStartDateIC();
  69. LogHelper.LogWriter("GetStartDateIC End");
  70. //某些身份证读取不了下面的字段
  71. //idCard.EndDateIC = YT100.GetEndDateIC();
  72. //LogHelper.LogWriter("GetEndDateIC End");
  73. idCard.Photo = YT100.GetPhoto();
  74. LogHelper.LogWriter("GetPhoto End");
  75. res.code = 1;
  76. res.data = idCard;
  77. res.message = "Success";
  78. }
  79. catch (Exception ex)
  80. {
  81. LogHelper.LogWriter(string.Format("ExceptionMessage:{0}",ex.Message));
  82. throw new Exception(string.Format("读卡器接口操作失败:{0}", ex.Message));
  83. }
  84. finally
  85. {
  86. if (bDisp)
  87. YT100.CloseComm();
  88. }
  89. return res;
  90. }
  91. }
  92. }