New version of foreign permanent residence ID card EST-100 ID card reader interface update

The following is the C# code for reading the new version of foreigner’s permanent residence ID card:

 //ID card information****************************************** *************************************************** ***********
        private void button4_Click(object sender, EventArgs e)
{
if (FormIsOpenReader.IsOpenReader != 1)
{
    richTextBox_idCard_data.Text + = "EST-100 ID card reader connection failed, please open the device first \r\\
";
    return;
}

int t_nRe = 99;
int t_nType = 1; //Set the ID card reading type: 0, text information; 1, text + photo; 2, text + photo + fingerprint, card reading without fingerprint reading is faster!
StringBuilder t_szPicPath = new StringBuilder("IDphoto.jpg"); //Define photo name
StringBuilder t_arrChMsg = new StringBuilder(256);
IDINFO idInfo = new IDINFO(); //Structure
t_nRe = Donsee_ReadIDCard(t_nType, t_szPicPath, ref idInfo, t_arrChMsg); //Pay attention to the structure parameters
if (t_nRe == 0)
{
    Donsee_Beep();
                if (idInfo.certType.ToString().Trim() == "I")//2017 version of Permanent Residence Certificate for Foreigners
                {
                    richTextBox_idCard_data.Text + = "Read successfully, document type: 2017 version of Foreigner Permanent Residence Permit\r\\
";
                    richTextBox_idCard_data.Text + = "Certificate type identification:" + idInfo.certType.ToString().Trim() + "\r\\
";
                    richTextBox_idCard_data.Text + = "English name:" + idInfo.ENfullname + "\r\\
";
                    richTextBox_idCard_data.Text + = "Gender:" + idInfo.sex + "\r\\
";
                    richTextBox_idCard_data.Text + = "Permanent Residence Certificate Number:" + idInfo.number + "\r\\
";
                    richTextBox_idCard_data.Text + = "Nationality:" + idInfo.people + idInfo.Nationality + "\r\\
";
                    richTextBox_idCard_data.Text + = "Chinese name:" + idInfo.name + "\r\\
";
                    richTextBox_idCard_data.Text + = "Validity period starts:" + idInfo.signdate + "\r\\
";
                    richTextBox_idCard_data.Text + = "Validity period ends:" + idInfo.validterm + "\r\\
";
                    richTextBox_idCard_data.Text + = "Birthdate:" + idInfo.birthday + "\r\\
";
                    richTextBox_idCard_data.Text + = "Certificate version number:" + idInfo.certVersion + "\r\\
";
                    richTextBox_idCard_data.Text + = "Application organization code:" + idInfo.organs + "\r\\
";
                    if (t_nType != 0)
                    {
                        richTextBox_idCard_data.Text + = "Photo original data:" + idInfo.Photo.Substring(0, 50) + "..\r\\
";
                    }
                    //Foreign permanent residence certificate does not have fingerprint data
                }
                else if (idInfo.certType.ToString().Trim() == "J")//Residence Certificate for Hong Kong, Macao and Taiwan Residents
                {
                    richTextBox_idCard_data.Text + = "Read successfully, document type: Hong Kong, Macao and Taiwan Pass\r\\
";
                    richTextBox_idCard_data.Text + = "Certificate type identification:" + idInfo.certType.ToString().Trim() + "\r\\
";
                    richTextBox_idCard_data.Text + = "Name:" + idInfo.name + "\r\\
";
                    richTextBox_idCard_data.Text + = "Gender:" + idInfo.sex + "\r\\
";
                    richTextBox_idCard_data.Text + = "Birthdate:" + idInfo.birthday + "\r\\
";
                    richTextBox_idCard_data.Text + = "Address:" + idInfo.address + "\r\\
";
                    richTextBox_idCard_data.Text + = "Hong Kong, Macao and Taiwan residence permit number:" + idInfo.number + "\r\\
";
                    richTextBox_idCard_data.Text + = "Issuing authority:" + idInfo.organs + "\r\\
";
                    richTextBox_idCard_data.Text + = "Validity period starts:" + idInfo.signdate + "\r\\
";
                    richTextBox_idCard_data.Text + = "Validity period ends:" + idInfo.validterm + "\r\\
";
                    richTextBox_idCard_data.Text + = "Pass number:" + idInfo.passNu + "\r\\
";
                    richTextBox_idCard_data.Text + = "Number of signatures:" + idInfo.signCount + "\r\\
";
                    if (t_nType != 0)
                    {
                        richTextBox_idCard_data.Text + = "Photo original data:" + idInfo.Photo.Substring(0, 50) + "..\r\\
";
                    }
                    if (t_nType == 2)
                    {
                        richTextBox_idCard_data.Text + = "Fingerprint original data:" + idInfo.figData.Substring(0, 50) + "..\r\\
";
                    }
                }
                else if (idInfo.certType.ToString().Trim() == "Y")//New version of permanent residence permit for foreigners

                {
                    richTextBox_idCard_data.Text + = "Read successfully, document type: new version of Foreigner Permanent Residence Permit\r\\
";
                    richTextBox_idCard_data.Text + = "Certificate ID:" + idInfo.certType.ToString().Trim() + "\r\\
";
                    richTextBox_idCard_data.Text + = "Chinese name:" + idInfo.name + "\r\\
";
                    richTextBox_idCard_data.Text + = "Gender:" + idInfo.sex + "\r\\
";
                    richTextBox_idCard_data.Text + = "Number of certificate renewals:" + idInfo.certVersion + "\r\\
";
                    richTextBox_idCard_data.Text + = "Birthdate:" + idInfo.birthday + "\r\\
";
                    richTextBox_idCard_data.Text + = "English name:" + idInfo.ENfullname + " " + idInfo.Other + "\r\\
"; //Note that the English name, including spares, is complete Name
                    richTextBox_idCard_data.Text + = "Certificate number:" + idInfo.number + "\r\\
";
                    richTextBox_idCard_data.Text + = "Validity period starts:" + idInfo.signdate + "\r\\
";
                    richTextBox_idCard_data.Text + = "Validity period ends:" + idInfo.validterm + "\r\\
";
                    richTextBox_idCard_data.Text + = "Nationality code:" + idInfo.people + "/" + idInfo.Nationality + "\r\\
";
                    richTextBox_idCard_data.Text + = "Current application acceptance agency:" + idInfo.organs + "\r\\
";

                    if (idInfo.address=="")
                    {
                        richTextBox_idCard_data.Text + = "Previous version of permanent residence permit number: None" + "\r\\
";
                    }
                    else {
                        richTextBox_idCard_data.Text + = "Previous version of permanent residence permit number:" + idInfo.address + "\r\\
";
                    }

                    if (t_nType != 0)
                    {
                        richTextBox_idCard_data.Text + = "Photo data:" + idInfo.Photo.Substring(0, 50) + "..\r\\
"; //The original data is 2048 characters, and the interface only displays 50 characters
                    }
                }

                else //(idInfo.certType.ToString().Trim() == "0") //Resident ID card
                {
                    richTextBox_idCard_data.Text + = "Read successfully, document type: Resident ID card\r\\
";
                    richTextBox_idCard_data.Text + = "Certificate ID:" + idInfo.certType.ToString().Trim() + "\r\\
";
                    richTextBox_idCard_data.Text + = "Name:" + idInfo.name + "\r\\
";
                    richTextBox_idCard_data.Text + = "Gender:" + idInfo.sex + "\r\\
";
                    richTextBox_idCard_data.Text + = "Name Family:" + idInfo.people + "\r\\
";
                    richTextBox_idCard_data.Text + = "Birthdate:" + idInfo.birthday + "\r\\
";
                    richTextBox_idCard_data.Text + = "Address:" + idInfo.address + "\r\\
";
                    richTextBox_idCard_data.Text + = "Issuance date:" + idInfo.signdate + "\r\\
";
                    richTextBox_idCard_data.Text + = "Valid Date:" + idInfo.validterm + "\r\\
";
                    richTextBox_idCard_data.Text + = "Certificate number:" + idInfo.number + "\r\\
";
                    richTextBox_idCard_data.Text + = "Issuing authority:" + idInfo.organs + "\r\\
";
                    richTextBox_idCard_data.Text + = "Other:" + idInfo.Other + "\r\\
";
                    if (t_nType != 0)
                    {
                        richTextBox_idCard_data.Text + = "Photo data:" + idInfo.Photo.Substring(0, 50) + "..\r\\
"; //The original data is 2048 characters, and the interface only displays 50 characters
                    }
                    if (t_nType == 2)
                    {
                        richTextBox_idCard_data.Text + = "Fingerprint data:" + idInfo.figData.Substring(0, 50) + "..\r\\
"; //The original data is 2048 characters, and the interface only displays 50 characters
                    }
                }
    if (t_nType != 0) //Display photo files
    {

        // pictureBox_idCard_photo.Image = Image.FromFile(t_szPicPath.ToString());
        // Display the photo. This method may not display the photo if you swipe the card a second time, so use the following method instead to display the photo.
        Image imgtmp = Image.FromFile(t_szPicPath.ToString());//This can release the file occupation in time
        Bitmap img = new Bitmap(imgtmp);
        imgtmp.Dispose();
        pictureBox_idCard_photo.Image = img;
     }
}
else
{
    richTextBox_idCard_data.Text + = "Failed to read ID card: " + t_arrChMsg.ToString() + ", return value: " + t_nRe + "\r\\
";
}
}