прервать чтение данных с COM порта

Считываю информацию со смарт карты при помощи картридера Arduino Uno в среде VisualStudio на C#.

Первый момент: мне нужен только UID карты, вся остальная информация лишняя. Вопрос в том, как мне прервать чтение данных, как только я получаю UID? Пробовала закрывать порт, а потом открывать снова, но он продолжает чтение на том моменте, где остановился перед закрытием.

Второй момент: чтобы считыватель начал читать карту снова, мне приходится её убирать, а затем опять прикладывать. Есть ли способ сделать так, чтобы можно было читать карту, если она просто постоянно лежит на считывателе? Например, каждые 10 сек возобновлять чтение заново и проверять UID лежащей карты. Спасибо. Мой код работы с портом:

private SerialPortProgram()
    {
        port.PortName = "COM6";
        port.BaudRate = 9600;
        port.Open();
        port.Open();
        while (true)
        {
            port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
            if (find)
            {
                if (reading == cardnumber)
                {
                    Console.WriteLine("omagad it works");
                    LockWorkStation();
                }
                else
                {
                    Console.WriteLine("wrong card");
                }
                find = false;

            }
        }
    }

    private void port_DataReceived(object sender,
      SerialDataReceivedEventArgs e)
    {
        reading = port.ReadLine();
        if (reading.Contains(check))
        {
            reading = reading.Replace(check, "");
            reading = reading.Substring(0, 11);
            Console.WriteLine(reading);
        }
        Console.WriteLine(reading);
    }

Ответы (0 шт):