Чтение с последовательного порта в течение заданного времени?
Я пишу программу на 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;
}
}