Мне нужно прочитать данные из COM-порта. Данные поступают из Arduino, их нужно проанализировать программой C# и выполнить определенные действия на хосте P C. Я могу читать данные, но только с бесконечным «пока верно» l oop. который блокирует форму и другие задачи для выполнения. Итак, в настоящее время это выглядит так:
while (true) {
oneLine = myPort.ReadLine();
this.Invoke(new EventHandler(display_data_Event));
// TBD: add analysis of data from port
// TBD: execute according to data from Arduino
}
обработчик:
private void display_data_Event(object sender, EventArgs e)
{
string curr_time = DateTime.Now.ToString("h:mm:ss tt");
port_in_TextBox.AppendText(curr_time + " " + oneLine + "\n");
}
Так что я могу отображать данные в текстовое поле, но не использовать их с моей основной программой.
Как я могу использовать строку «в одну строку» только тогда, когда происходит событие, вместо «while true»? Я попытался вызвать функции из обработчика - я думаю, что это не удалось, потому что это другой поток. Так что, возможно, проблема в том, как разделить строку из одного потока в другой.