//new function by prkasit on Nov'14 2019 private void ReadNewPIDCard() { try { CARD = new PIDCard(); CARD_TYPE = "PID"; Personal personal = idcard.readAllPhoto(); if (personal != null) { CARD.NO = personal.Citizenid; CARD.TH_TITLE = personal.Th_Prefix; CARD.TH_FIRST_NAME = personal.Th_Firstname; CARD.TH_LAST_NAME = personal.Th_Lastname; CARD.EN_TITLE = personal.En_Prefix; CARD.EN_FIRST_NAME = personal.En_Firstname; CARD.EN_LAST_NAME = personal.En_Lastname; CARD.BIRTH_DATE = CardHelper.DateFormat(personal.Birthday.ToString("yyyyMMdd")); CARD.HOME_NO = personal.addrHouseNo; CARD.MOO = personal.addrVillageNo; CARD.SOI = personal.addrLane; CARD.ROAD = personal.addrRoad; CARD.TUMBON = personal.addrTambol; CARD.AMPHOE = personal.addrAmphur; CARD.PROVINCE = personal.addrProvince; CARD.GENDER = personal.Sex; CARD.PHOTO = personal.PhotoBitmap; CARD.CARD_IMAGE = personal.PhotoBitmap; try { byte[] byteImage = null; byteImage = personal.PhotoRaw;// stream.ToArray(); CARD.BYTE_IMAGE = byteImage; } catch (Exception ex) { } READ_CARD_STATUS = true; } else if (idcard.ErrorCode() > 0) { MessageBox.Show(idcard.Error()); } } catch (Exception ex) { READ_CARD_STATUS = false; MessageBox.Show("ไม่พบเครื่องอ่านบัตรประชาชน หรืออ่านบัตรไม่สำเร็จ!!! " + ex.Message); } }
protected int ReadPIDCard() { try { string strTerminal = CARD_READER; if (string.IsNullOrEmpty(CARD_READER)) { strTerminal = "Identiv uTrust 2700 R Smart Card Reader 0"; } CARD = new PIDCard(); CARD_TYPE = "PID"; IntPtr obj = CardHelper.SelectReader(strTerminal); int nInsertCard = 0; nInsertCard = RDNID.connectCardRD(obj); if (nInsertCard != 0) { String m; m = String.Format(" error no {0} ", nInsertCard); MessageBox.Show(m); RDNID.disconnectCardRD(obj); RDNID.deselectReaderRD(obj); return(nInsertCard); } byte[] id = new byte[30]; int res = RDNID.getNIDNumberRD(obj, id); if (res != DefineConstants.NID_SUCCESS) { return(res); } string NIDNum = CardHelper.ByteToString(id); byte[] data = new byte[1024]; res = RDNID.getNIDTextRD(obj, data, data.Length); if (res != DefineConstants.NID_SUCCESS) { return(res); } string NIDData = CardHelper.ByteToString(data); if (NIDData == "") { MessageBox.Show("Read Text error"); } else { string[] fields = NIDData.Split('#'); CARD.NO = NIDNum; CARD.TH_TITLE = fields[(int)Enums.NID_FIELD.TITLE_T]; CARD.TH_FIRST_NAME = fields[(int)Enums.NID_FIELD.NAME_T]; CARD.TH_MID_NAME = fields[(int)Enums.NID_FIELD.MIDNAME_T]; CARD.TH_LAST_NAME = fields[(int)Enums.NID_FIELD.SURNAME_T]; CARD.EN_TITLE = fields[(int)Enums.NID_FIELD.TITLE_E]; CARD.EN_FIRST_NAME = fields[(int)Enums.NID_FIELD.NAME_E]; CARD.EN_MID_NAME = fields[(int)Enums.NID_FIELD.MIDNAME_E]; CARD.EN_LAST_NAME = fields[(int)Enums.NID_FIELD.SURNAME_E]; CARD.BIRTH_DATE = CardHelper.DateFormat(fields[(int)Enums.NID_FIELD.BIRTH_DATE]); CARD.HOME_NO = fields[(int)Enums.NID_FIELD.HOME_NO]; CARD.MOO = fields[(int)Enums.NID_FIELD.MOO]; CARD.TROK = fields[(int)Enums.NID_FIELD.TROK]; CARD.SOI = fields[(int)Enums.NID_FIELD.SOI]; CARD.ROAD = fields[(int)Enums.NID_FIELD.ROAD]; CARD.TUMBON = fields[(int)Enums.NID_FIELD.TUMBON]; CARD.AMPHOE = fields[(int)Enums.NID_FIELD.AMPHOE]; CARD.PROVINCE = fields[(int)Enums.NID_FIELD.PROVINCE]; if (fields[(int)Enums.NID_FIELD.GENDER] == "1") { CARD.GENDER = "ชาย"; } else { CARD.GENDER = "หญิง"; } } byte[] NIDPicture = new byte[1024 * 5]; int imgsize = NIDPicture.Length; res = RDNID.getNIDPhotoRD(obj, NIDPicture, out imgsize); if (res != DefineConstants.NID_SUCCESS) { return(res); } byte[] byteImage = NIDPicture; if (byteImage == null) { MessageBox.Show("Read Photo error"); } else { //m_picPhoto Image img = Image.FromStream(new MemoryStream(byteImage)); CARD.PHOTO = new Bitmap(img, 270 - 2, 180 - 2); CARD.CARD_IMAGE = img; CARD.BYTE_IMAGE = byteImage; } RDNID.disconnectCardRD(obj); RDNID.deselectReaderRD(obj); READ_CARD_STATUS = true; } catch (Exception ex) { READ_CARD_STATUS = false; MessageBox.Show("ไม่พบเครื่องอ่านบัตรประชาชน หรืออ่านบัตรไม่สำเร็จ!!! " + ex.Message); } return(0); }