WPF应用程序在从Arduino接收数据时崩溃

时间:2015-01-11 11:33:06

标签: c# .net wpf arduino

我正在开发一个wpf应用程序,它将从Arduino Leonardo收集传感器数据。事实上,在发送串行数据时,没有任何问题,但在读取数据时,应用程序似乎冻结了。这是我的代码。

private void connect_Click(object sender, RoutedEventArgs e)
{
    try
    {
        String pno = cno.Text;
        sp.PortName = pno;
        sp.BaudRate = 9600;
        sp.Open();
        s.Text = "Connected";
                    }
    catch (Exception)
    {

        MessageBox.Show("Please check the com port number or the hardware attached to it");
    }
}

private void go_Click(object sender, RoutedEventArgs e)
{

    string a = sp.ReadLine();
    Dispatcher.Invoke((Action)(() => receivedblock.Text = a));            
}

go_Click方法是一个按钮,按下该按钮将接受串行数据。

1 个答案:

答案 0 :(得分:0)

问题是sp.ReadLine()是阻止呼叫。因此,当您调用它时,它会等到它可以从sp读取一行,以便您的应用程序冻结!

您应该订阅DataReceived事件并在那里做你的事情。