WPF 应用程序在从 Arduino 接收数据时崩溃
WPF app crashes while receiving data from 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 方法是一个按钮,按下该按钮将接受串行数据。
问题是 sp.ReadLine()
是一个阻塞调用。所以当你调用它时,它会一直等到它可以从 sp
读取一行,所以你的应用程序会冻结!
您应该订阅 DataReceived 活动并在那里做您的事情。
我正在开发一个 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 方法是一个按钮,按下该按钮将接受串行数据。
问题是 sp.ReadLine()
是一个阻塞调用。所以当你调用它时,它会一直等到它可以从 sp
读取一行,所以你的应用程序会冻结!
您应该订阅 DataReceived 活动并在那里做您的事情。