Member 12889167 Ответов: 2

Я хочу прочитать rfid-метку с помощью C#, как мне это сделать?


using System;

using System.Windows.Forms;
using System.IO.Ports;
using System.Threading;


namespace rfidProject
{
    public partial class RFIDReader : Form
    {
        private SerialPort RFID;

        public RFIDReader()
        {
            InitializeComponent();
        }

        private void RFIDReader_Load(object sender, EventArgs e)
        {

            RFID = new SerialPort();
            RFID.PortName = "COM1";
            RFID.BaudRate = 9600;
            RFID.DataBits = 8;
            RFID.Parity = Parity.None;
            RFID.StopBits = StopBits.One;
            //RFID.RtsEnable = true;

            //RFID.Handshake = Handshake.None; 

            RFID.Open();
           // RFID.ReadTimeout = 200;

            string[] ports = SerialPort.GetPortNames();
            foreach (string port in ports)
            {
                //MessageBox.Show(port);
                PORTNameInputBox.Text += port;
            }




            RFID.DataReceived += new SerialDataReceivedEventHandler(RFID_DataReceivedHandler);

           // RFID.Close();

        }

        private void RFID_DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {

            SerialPort sp = (SerialPort)sender;
            string indata = sp.ReadExisting();

            //MessageBox.Show(indata);

            RFIDTagInputBox.Text += indata;

        }

    }
}


Что я уже пробовал:

Я попытался прочитать rfid-метку из последовательного порта с помощью считывателя acr122u-a9, но он ничего не делает. Я использовал указанный выше код.

Есть ли какой-нибудь способ считывания rfid-метки помимо последовательного порта?

2 Ответов

Рейтинг:
2

OriginalGriff

Вы должны поговорить с людьми, которые его создали - Бесконтактные платежи NFC - Acr122u USB NFC Reader | ACS драйверы[^]- они должны оказывать техническую поддержку и будут знать о своем продукте больше, чем мы. Если они этого не сделают, то найдите другого поставщика и потребуйте свои деньги обратно!


Рейтинг:
1

Jochen Arndt

Вы открываете COM1 Даже с современными ПК, которые не имели порта RS-232, это обычно зарезервировано для последовательных портов чипсета.

Ваш ридер - это USB-устройство, эмулирующее последовательный порт. Для этого требуется драйвер, предоставляющий виртуальный COM-порт. Когда устройство чтения подключено, откройте Диспетчер устройств, чтобы просмотреть список COM-портов. Там должна быть запись для вашего читателя. Если нет, убедитесь, что драйвер установлен. Запишите номер порта и используйте его в своем коде вместо "COM1".

Вы также можете позволить своему приложению проверить, какие последовательные порты доступны, и показать диалоговое окно для выбора (у вас уже есть некоторый код для этого, но он вызывается после открытия порта). Но метод из вашего кода возвращает только простое имя COMx, которое может затруднить идентификацию вашего читателя, если у вас есть несколько последовательных устройств. Список в диспетчере устройств показывает также так называемое "удобное для пользователя имя", которое обычно содержит достаточно информации для идентификации виртуальных портовых устройств, таких как ваш ридер. Чтобы получить также Эти удобные для пользователя имена, вы можете использовать WMI. Пример перечисления только виртуальных портов можно найти в статье CP Полезный инструмент WMI & как найти USB-последовательные адаптеры[^] (возможно, для вашей цели есть и лучшие, но я не нашел их после быстрого исследования).