Example #1
0
 private void verifyBTN_Click(object sender, EventArgs e)
 {
     if (GutenTAGTask != GutenTAGTaskEnum.Idle)
     {
         return;
     }
     GutenTAGTask = GutenTAGTaskEnum.Verify;
 }
Example #2
0
 private void readBTN_Click(object sender, EventArgs e)
 {
     if (GutenTAGTask != GutenTAGTaskEnum.Idle)
     {
         return;
     }
     GutenTAGTask = GutenTAGTaskEnum.Read;
 }
Example #3
0
 private void writeBTN_Click(object sender, EventArgs e)
 {
     if (GutenTAGTask != GutenTAGTaskEnum.Idle)
     {
         return;
     }
     GutenTAGTask = GutenTAGTaskEnum.Write;
 }
Example #4
0
 private void resetOTPBTN_Click(object sender, EventArgs e)
 {
     if (MessageBox.Show("ARE YOU SURE TO RESET OTP AREA?", "RESET OTP?", MessageBoxButtons.OKCancel) != DialogResult.OK)
     {
         return;
     }
     if (GutenTAGTask != GutenTAGTaskEnum.Idle)
     {
         return;
     }
     GutenTAGTask = GutenTAGTaskEnum.ResetOTP;
 }
Example #5
0
        private void GutenTAGThread()
        {
            while (runGutenTAGThread)
            {
                try
                {
                    if (!isOpen)
                    {
                        GutenTAGOpen();
                        if (isOpen)
                        {
                            writeRTB(richTextBox1, "GutenTAG Connected!\r\nSearching for TAG...\r\n");
                        }
                    }
                    if (isOpen)
                    {
                        switch (GutenTAGTask)
                        {
                        case GutenTAGTaskEnum.Idle:
                            bool nowTagPresent = isTagPresent();
                            if (wasTagPresent)
                            {
                                if (!nowTagPresent)
                                {
                                    writeRTB(richTextBox1, "TAG Lost!\r\n");
                                    enableButtons(false);
                                }
                            }
                            else
                            {
                                if (nowTagPresent)
                                {
                                    writeRTB(richTextBox1, "TAG Found!\r\n");
                                    writeRTB(richTextBox1, "TAG UID = 0x" + BitConverter.ToString(getTagUID()).Replace("-", "") + "\r\n");
                                    writeRTB(richTextBox1, "TAG SYS = 0x" + BitConverter.ToString(getTagBlock(255)).Replace("-", "") + "\r\n");
                                    enableButtons(true);
                                }
                            }
                            wasTagPresent = nowTagPresent;
                            break;

                        case GutenTAGTaskEnum.Read:
                            enableButtons(false);
                            writeRTB(richTextBox1, "Reading TAG...\r\n");
                            for (byte i = 0; i < 128; i++)
                            {
                                Array.Copy(getTagBlock(i), 0, TagMemory, i * 4, 4);
                            }
                            writeRTB(richTextBox1, "Done!\r\n");
                            GutenTAGTask = GutenTAGTaskEnum.Idle;
                            enableButtons(true);
                            break;

                        case GutenTAGTaskEnum.Write:
                            enableButtons(false);
                            writeRTB(richTextBox1, "Writing TAG...\r\n");
                            for (byte i = 0; i < 128; i++)
                            {
                                byte[] buffer = new byte[4];
                                Array.Copy(TagMemory, i * 4, buffer, 0, 4);
                                writeTagBlock(i, buffer);
                            }
                            writeRTB(richTextBox1, "Done!\r\n");
                            GutenTAGTask = GutenTAGTaskEnum.Idle;
                            enableButtons(true);
                            break;

                        case GutenTAGTaskEnum.Verify:
                            enableButtons(false);
                            writeRTB(richTextBox1, "Verifying TAG...\r\n");
                            for (byte i = 0; i < 128; i++)
                            {
                                byte[] block = getTagBlock(i);
                                for (int j = 0; j < 4; j++)
                                {
                                    if (TagMemory[i * 4 + j] != block[j])
                                    {
                                        GutenTAGTask = GutenTAGTaskEnum.Idle;
                                        break;
                                    }
                                }
                                if (GutenTAGTask == GutenTAGTaskEnum.Idle)
                                {
                                    break;
                                }
                            }
                            if (GutenTAGTask == GutenTAGTaskEnum.Idle)
                            {
                                writeRTB(richTextBox1, "Verify FAIL!\r\n");
                            }
                            else
                            {
                                writeRTB(richTextBox1, "Verify OK!\r\n");
                            }
                            GutenTAGTask = GutenTAGTaskEnum.Idle;
                            enableButtons(true);
                            break;

                        case GutenTAGTaskEnum.ResetOTP:
                            enableButtons(false);
                            writeRTB(richTextBox1, "OTP Area Reset...\r\n");
                            uint counter = BitConverter.ToUInt32(getTagBlock(0x06), 0);
                            if (MessageBox.Show((counter >> 21).ToString() + " operations left. Are you sure?", "Confirm OTP Erase", MessageBoxButtons.OKCancel) == DialogResult.OK)
                            {
                                writeTagBlock(0x06, BitConverter.GetBytes(counter - 0x200000));
                                for (byte i = 0; i < 6; i++)
                                {
                                    writeTagBlock(i, new byte[] { 0xFF, 0xFF, 0xFF, 0xFF });
                                }
                                writeRTB(richTextBox1, "Done!\r\n");
                            }
                            else
                            {
                                writeRTB(richTextBox1, "Cancelled.\r\n");
                            }
                            GutenTAGTask = GutenTAGTaskEnum.Idle;
                            enableButtons(true);
                            break;
                        }
                    }
                }
                catch (Exception ex)
                {
                    writeRTB(richTextBox1, "ERROR: " + ex.Message + "\r\n");
                    GutenTAGClose();
                    wasTagPresent = false;
                }
            }
        }