2016-02-12 2 views
0

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

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

  • кнопку A «Runonce», который будет улавливать только один ввод данных
  • Селективный времени и кнопка «приуроченный», что позволит данные, чтобы быть читал в течение некоторого периода времени, только кнопки
  • «сплошной», что позволит сбор данных навсегда

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

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

+1

Задавая некоторые переменные и проверки их значения в обработчике события, конечно. – Sinatr

+0

Что вы действительно хотите, это не добавить данные в таблицу и диаграмму. Используйте переменную * bool *. Тренировка с событием - это только хороший способ получить синхронизацию данных. –

ответ

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; 
     } 
    } 
Смежные вопросы