Example #1
0
        //Read activated/selected Reader
        public void ReadActiveReader(long DeviceID)
        {
            string[] serialNumber = new string[0];

            int index;

            //Activate from selected reader
            index     = map.IndexOfKey(DeviceID);
            ActReader = (FedmIscReader)map.GetByIndex(index);

            ActReader.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_CMD, 0x01);
            ActReader.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_MODE, 0x00);
            try
            {
                ActReader.ResetTable(FedmIscReaderConst.ISO_TABLE);

                ActReader.SendProtocol(0x69);             // RFReset
                ActReader.SendProtocol(0xB0);             // ISOCmd

                while (ActReader.GetLastStatus() == 0x94) // more flag set?
                {
                    ActReader.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_MODE_MORE, 0x01);
                    ActReader.SendProtocol(0xB0);
                }
                //new dimensiion from array serialNumber
                serialNumber = new string[ActReader.GetTableLength(FedmIscReaderConst.ISO_TABLE)];

                this.labelTagsNumb.Text = ActReader.GetTableLength(FedmIscReaderConst.ISO_TABLE).ToString();

                if (ActReader.GetTableLength(FedmIscReaderConst.ISO_TABLE) > 0)
                {
                    int i;
                    for (i = 0; i <= (ActReader.GetTableLength(FedmIscReaderConst.ISO_TABLE) - 1); i++)
                    {
                        ActReader.GetTableData(i, FedmIscReaderConst.ISO_TABLE, FedmIscReaderConst.DATA_SNR, out serialNumber[i]);
                    }
                    TagChanged(serialNumber);
                }
                else
                {
                    this.listBoxTags.Items.Clear();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        private void OnButtonClick_Inventory(object sender, EventArgs e)
        {
            int iBack = 0;

            string[] serialNumber;
            byte[]   tagType;

            // prepare Inventory
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_CMD, 0x01);
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_MODE, 0x00);
            try
            {
                fedm.ResetTable(FedmIscReaderConst.ISO_TABLE);
                fedm.SendProtocol(0x69);         // RFReset
                iBack = fedm.SendProtocol(0xB0); // ISOCmd
                if (iBack != 0 && iBack != 0x94)
                {
                    this.textBox_status_out.Clear();
                    this.textBox_status_out.AppendText(iBack.ToString());
                }
                while (fedm.GetLastStatus() == 0x94) // more flag set?
                {
                    fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_MODE_MORE, 0x01);
                    fedm.SendProtocol(0xB0);
                }
                //new dimensiion from array serialNumber,tagtype,SeNumbLength
                serialNumber = new string[fedm.GetTableLength(FedmIscReaderConst.ISO_TABLE)];
                tagType      = new byte[fedm.GetTableLength(FedmIscReaderConst.ISO_TABLE)];

                if (fedm.GetTableLength(FedmIscReaderConst.ISO_TABLE) <= 0)
                {
                    MessageBox.Show(this, "No Tag in Reader Field", "Warning");
                }

                int i;
                for (i = 0; i < fedm.GetTableLength(FedmIscReaderConst.ISO_TABLE); i++)
                {
                    fedm.GetTableData(i, FedmIscReaderConst.ISO_TABLE, FedmIscReaderConst.DATA_SNR, out serialNumber[i]);
                    fedm.GetTableData(i, FedmIscReaderConst.ISO_TABLE, FedmIscReaderConst.DATA_TRTYPE, out tagType[i]);
                }

                // Display Tags
                this.listBox_TagList.Items.Clear();
                for (i = 0; i < serialNumber.Length; i++)
                {
                    if (this.listBox_TagList.Items.Contains(serialNumber[i]))
                    {
                    }
                    else
                    {
                        this.listBox_TagList.Items.Add(serialNumber[i]);
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(this, ex.ToString(), "Error");
                return;
            }
        }
        private void button_AuthMYD_Click(object sender, EventArgs e)
        {
            int keyAddressTag  = (int)this.numericUpDown_KeyAdrTAG.Value;
            int keyAddressSam  = (int)this.numericUpDown_KeyAdrSAM.Value;
            int authCntAddress = (int)this.numericUpDown_AuthCntAdr.Value;

            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B2_REQ_KEY_ADR_TAG, keyAddressTag);
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B2_REQ_KEY_ADR_SAM, keyAddressSam);
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B2_REQ_AUTH_COUNTER_ADR, authCntAddress);
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B2_REQ_KEY_AUTH_SEQUENCE, this.comboBox_AuthSequence.SelectedIndex);
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B2_MODE_ADR, mode); // addressed(for ISO15693) or selected(for ISO14443) Mode
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B2_CMD, 0xB1);

            try
            {
                fedm.SendProtocol((byte)0xB2);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(this, ex.ToString(), "Error");
                return;
            }

            //Close Dialog
            this.Close();
        }
Example #4
0
        void ReadDevice(int deviceId, FedmIscReader device)
        {
            device.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_CMD, 0x01);
            device.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_MODE, 0x00);

            try
            {
                device.ResetTable(FedmIscReaderConst.ISO_TABLE);

                device.SendProtocol(0x69);
                device.SendProtocol(0xB0);

                while (device.GetLastStatus() == 0x94)
                {
                    device.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_MODE_MORE, 0x01);
                    device.SendProtocol(0xB0);
                }

                var transponders = new string[device.GetTableLength(FedmIscReaderConst.ISO_TABLE)];

                if (transponders.Length > 0)
                {
                    for (var i = 0; i < transponders.Length; i++)
                    {
                        device.GetTableData(i, FedmIscReaderConst.ISO_TABLE, FedmIscReaderConst.DATA_SNR,
                                            out transponders[i]);
                    }
                }

                _rfidSendRepository.Send(new Service.Models.RfidData {
                    DeviceId = deviceId.ToString(), Timestamp = DateTime.Now, Transponders = transponders
                });
                Console.WriteLine($"Device {deviceId} read tags: {string.Join(",", transponders)}");
            }
            catch (Exception e)
            {
                Console.Error.WriteLine(e);
            }
        }
        private void button_Authent_Click(object sender, EventArgs e)
        {
            String strKey;

            // get Key
            strKey = this.textBox_Key1.Text +
                     this.textBox_Key2.Text +
                     this.textBox_Key3.Text +
                     this.textBox_Key4.Text +
                     this.textBox_Key5.Text +
                     this.textBox_Key6.Text;

            // ------ perform Authent Mifare
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B2_CMD, 0xB0);                                              // Sub-Command
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B2_MODE, 0x00);                                             // delete value Mode Byte (MODE_KL and MODE_ADR)
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B2_MODE_ADR, FedmIscReaderConst.ISO_MODE_SEL);              // Fixed Selected Mode
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B2_REQ_DB_ADR, (int)this.numericUpDown_DBAdr.Value);        // requested DataBlock Addr
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B2_REQ_KEY_TYPE, (byte)this.comboBoxKeyType.SelectedIndex); // Key type (A or B)

            byte bKeyLoc = (byte)this.comboBoxKeyLoc.SelectedIndex;

            if (bKeyLoc == 1)
            {
                // EEPROM Addr. where Key is stored
                fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B2_REQ_KEY_ADR, (byte)this.numericUpDown_KeyAdr.Value);
            }
            else
            {
                fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_ISO14443A_KEY, strKey);
                fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B2_MODE_KL, true); // choose Key Location - from Protocol
            }

            try
            {
                fedm.SendProtocol((byte)0xB2);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(this, ex.ToString(), "Error");
                return;
            }
            // Close window after authent command
            this.Close();
        }
Example #6
0
    private void buttonSearchForLabels_Click(object sender, System.EventArgs e)
    {
        this.listBoxSerialNumber.Items.Clear();

        int back;

        reader.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_CMD, 0x01);
        reader.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_MODE, 0x00);

        String[] tagType      = null;
        String[] serialNumber = null;

        try
        {
            back = reader.ResetTable(FedmIscReaderConst.ISO_TABLE);
            back = reader.SendProtocol(0x69);                     // RFReset
            System.Console.Write("RF-Reset: ");
            System.Console.WriteLine(reader.GetErrorText(back));
            back = reader.SendProtocol(0xB0);                     // ISOCmd
            System.Console.Write("Inventory: ");
            if (back < 0)
            {
                System.Console.WriteLine(reader.GetErrorText(back));
            }
            else
            {
                System.Console.WriteLine(reader.GetStatusText((byte)back));
            }
            while (reader.GetLastStatus() == 0x94)                     // more flag set?
            {
                reader.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_MODE_MORE, 0x01);
                reader.SendProtocol(0xB0);
            }

            int length = reader.GetTableLength(FedmIscReaderConst.ISO_TABLE);
            serialNumber = new String[length];
            tagType      = new String[length];

            Console.WriteLine(reader.GetTableLength(FedmIscReaderConst.ISO_TABLE));
            if (length > 0)
            {
                int i;
                for (i = 0; i < reader.GetTableLength(FedmIscReaderConst.ISO_TABLE); i++)
                {
                    reader.GetTableData(i, FedmIscReaderConst.ISO_TABLE, FedmIscReaderConst.DATA_SNR, out serialNumber[i]);
                    reader.GetTableData(i, FedmIscReaderConst.ISO_TABLE, FedmIscReaderConst.DATA_TRTYPE, out tagType[i]);
                    if (tagType[i].Equals("00"))
                    {
                        tagType[i] = "Philips I-Code1";
                    }
                    if (tagType[i].Equals("01"))
                    {
                        tagType[i] = "Texas Instruments Tag-it HF";
                    }
                    if (tagType[i].Equals("03"))
                    {
                        tagType[i] = "ISO15693 Transponder";
                    }
                    if (tagType[i].Equals("04"))
                    {
                        tagType[i] = "14443A";
                    }
                    if (tagType[i].Equals("05"))
                    {
                        tagType[i] = "14443B";
                    }
                    if (tagType[i].Equals("06"))
                    {
                        tagType[i] = "EPC";
                    }

                    this.listBoxSerialNumber.Items.Add(serialNumber[i] + " - " + tagType[i]);
                }
            }
        }
        catch (Exception ex)
        {
            System.Console.WriteLine(ex.ToString());
        }
    }
        private void buttonRead_Click(object sender, EventArgs e)
        {
            byte[] data;
            byte   blockSize;
            int    idx;
            int    dbn;
            int    address;
            int    mode;
            int    bankidx;
            long   datalocation = FedmIscReaderConst.DATA_RxDB;

            mode = this.comboBoxMod.SelectedIndex;

            int selRow;

            selRow = this.listBoxTags.SelectedIndex;

            if (selRow == -1 && mode > 0)
            {
                MessageBox.Show(this, "There was no tag selected.", "Error");
                return;
            }

            // set IscTable-Parameter
            dbn     = (int)this.numericUpDownDBN.Value;
            address = (int)this.numericUpDownAdr.Value;

            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_MODE, (byte)0);
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_REQ_UID, serialNumber);
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_CMD, 0x23);
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_REQ_DBN, dbn);
            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_MODE_ADR, mode);

            //if uhfTransponder is found
            if (uhfTransponder == true)
            {
                if (mode == 2)
                {
                    MessageBox.Show(this, "UHF Transponder cannot be read in mode selected mode.", "Error");
                    return;
                }

                bankidx = this.comboBoxBank.SelectedIndex;

                fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_MODE_UID_LF, true);
                fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_MODE_EXT_ADR, true);
                fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_REQ_UID_LEN, SerialNumberLen);
                fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_REQ_BANK, (byte)0);
                fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_REQ_BANK_BANK_NR, bankidx);
                fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_ACCESS_PW_LENGTH, (byte)0);
                fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_REQ_DB_ADR_EXT, address);
            }


            fedm.SetData(FedmIscReaderID.FEDM_ISC_TMP_B0_REQ_DB_ADR, address);


            // Send ReadMultipleBlocks-Protocol
            try
            {
                fedm.SendProtocol(0xB0);
            }

            catch (System.Exception ex)
            {
                MessageBox.Show(this, ex.ToString(), "Error");
                return;
            }

            switch (mode)
            {
            case 0:
                idx = 0;
                break;

            case 1:
                idx = fedm.FindTableIndex(0, FedmIscReaderConst.ISO_TABLE, FedmIscReaderConst.DATA_SNR, serialNumber);
                break;

            case 2:
                idx = fedm.FindTableIndex(0, FedmIscReaderConst.ISO_TABLE, FedmIscReaderConst.DATA_IS_SELECTED, true);
                break;

            default:
                return;
            }

            // get blockSize from ISC-table, default = 4
            FedmIsoTableItem item;

            try
            {
                item = (FedmIsoTableItem)fedm.GetTableItem(idx, FedmIscReaderConst.ISO_TABLE);
                item.GetData((FedmIscReaderConst.DATA_BLOCK_SIZE), out blockSize);
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(this, ex.ToString(), "Error");
                return;
            }

            if (blockSize == 0)
            {
                blockSize = 4; // default value
            }

            //set current blockSize
            this.numericUpDownDBS.Value = blockSize;

            //Set DataBlockData from ResponseBuffer to HexEdit
            int i;

            for (i = 0; i < dbn; i++)
            {
                if (uhfTransponder == true)
                {
                    bankidx = this.comboBoxBank.SelectedIndex;
                    switch (bankidx)
                    {
                    case 0:
                        datalocation = FedmIscReaderConst.DATA_RxDB_RES_BANK;
                        break;

                    case 1:
                        datalocation = FedmIscReaderConst.DATA_RxDB_EPC_BANK;
                        break;

                    case 2:
                        datalocation = FedmIscReaderConst.DATA_RxDB_TID_BANK;
                        break;

                    case 3:
                        datalocation = FedmIscReaderConst.DATA_RxDB;
                        break;

                    default:
                        break;
                    }
                }
                item.GetData(datalocation, address + i, out data);
                HexEdit.InsertData((address + i) * blockSize, data);
            }
        }