Ich möchte meine serielle Schnittstelle lesen, aber nur wenn Daten kommen (ich will nicht polling).C# nur lesen Serielle Schnittstelle, wenn Daten kommen
So mache ich es.
Schnittstelle = new SerialPort("COM3");
Schnittstelle.BaudRate = 115200;
Schnittstelle.DataBits = 8;
Schnittstelle.StopBits = StopBits.Two;
....
Und dann fange ich einen Thread
beginn = new Thread(readCom);
beginn.Start();
und in meinem READCOM lese ich kontinuierlich (Polling :()
private void readCom()
{
try
{
while (Schnittstelle.IsOpen)
{
Dispatcher.BeginInvoke(new Action(() =>
{
ComWindow.txtbCom.Text = ComWindow.txtbCom.Text + Environment.NewLine + Schnittstelle.ReadExisting();
ComWindow.txtbCom.ScrollToEnd();
}));
beginn.Join(10);
}
}
catch (ThreadAbortException)
{
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
ich yout lesen wollen, wenn ein Interrupt kommt Aber wie kann ich das tun?
Dieser Beispielcode ist in .NET 4.5 nicht mehr sicher zu verwenden. Console.ReadKey() erwirbt eine Sperre, die verhindert, dass Console.Write() etwas schreibt. Debug.Print() ist in Ordnung. –
Ich werde das bearbeiten! Vielen Dank! –
@HansPassant danke dafür. Das muss viele der Threading-Beispiele auf MSDN gebrochen haben :) – kenny