我目前正在构建一个WPF应用程序,它使用SerialPort连接接收并显示来自Arduino的数据。我设法让实时数据在收到时显示,但是当文本到达TextBlock的底部时,文本停止。我想用新的数据替换旧的值。这可能吗?C# - 在TextBlock中覆盖/更新文本
这是我的代码
public partial class MainWindow : Window
{
SerialPort sp = new SerialPort();
public MainWindow()
{
InitializeComponent();
}
private void btnCon_Click(object sender, RoutedEventArgs e)
{
try
{
String portname = txtCom.Text;
sp.PortName = portname;
sp.BaudRate = 9600;
sp.DtrEnable = true;
sp.Open();
sp.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
txbStatus.Text = "Connected";
}
catch (Exception)
{
MessageBox.Show("Please enter a valid port number");
}
}
private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
{
this.Dispatcher.Invoke(() =>
{
SerialPort sp = (SerialPort)sender;
txbStatus.Text += sp.ReadExisting(); //Displaying data in TextBlock
});
}
感谢
感谢您的回答。这确实取代了输入的值,但是它在接收整个值之前正在替换数据。例如635现在显示为6或56.任何建议。 –
@white_reece查看我编辑的答案。 – ispiro
@inspiro解决了我的问题,现在完美地工作。感谢您的帮助 –