Чтение с последовательного порта в течение заданного времени?

Я пишу программу на C#, которая считывает числа, отправленные с Arduino на последовательный порт, помещает их в таблицу данных и отображает их в виде диаграммы. В настоящее время при нажатии кнопки connect он будет непрерывно считывать данные с последовательного порта, используя метод события DataReceivedHandler.

У меня есть три кнопки в форме:

  • Кнопка "Runonce", которая будет захватывать только один ввод данных
  • Выбираемая кнопка времени и времени, которая позволит считывать данные только в течение некоторого периода времени.
  • "Непрерывная" кнопка, которая позволит захватывать данные навсегда

При нажатии одной из кнопок остальные отключаются, и нажатая кнопка переименовывается в "Стоп".

Как мне разрешить этому событию datareceivedhandler запускаться только при желании, как описано выше?

1 ответ

Решение

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

Что-то вроде этого:

    private bool serialPortCapturing;

    private void btn1_Click(object sender, EventArgs e)
    {
        if (!serialPortCapturing)
        {
            serialPort.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(serialPort_DataReceived);
            serialPortCapturing = true;
        }
        else
        {
            serialPort.DataReceived -= new System.IO.Ports.SerialDataReceivedEventHandler(serialPort_DataReceived);
            serialPortCapturing = false;
        }
    }
Другие вопросы по тегам