Hallo zusammen.
Ich habe ein Problem mit meiner Anwendung, die über serielle Schnittstelle mit Mikrocontroller - in meinem Fall ist das C-Control - kommuniziert .
Die Anwendung basiert auf dem Beispiel aus diesen Forum "Beispiel Anwendung C# Zugriff auf SerialPort".
Das Programm funktioniert einwandfrei bis ich die Beenden-Taste drücke. Dannach hängt sich das Programm auf.
Der empfangende String ist "I\n". Das Zeichen I wird einmal übertragen und damit soll ein Teimer aktiviert werden.
Ich werde sehr froh wenn mir jemand hilft den Fehler zu finden.Code:using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.IO.Ports; using System.IO; namespace Serila_Invoke { public partial class Form1 : Form { public Form1() { InitializeComponent(); if (!serialPort1.IsOpen) { serialPort1.Open(); //Serialport öffnen } recievedDelegate = new InvokeDelegate(InvokeRecieved); serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived); //DataRecieved Event abonnieren } delegate void InvokeDelegate(string Data); InvokeDelegate recievedDelegate; void InvokeRecieved(string Data) { listBoxRecieved.Items.Add(Data); if (Data[0] == 'I') { timer1.Start(); Data = ""; } } private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { string RecievedLine = " "; while (RecievedLine != "") { RecievedLine = serialPort1.ReadLine(); listBoxRecieved.Invoke(recievedDelegate, new object[] { RecievedLine }); } } private void timer1_Tick(object sender, EventArgs e) { if (label_störung.BackColor != Color.Orange) { label_störung.BackColor = Color.Orange; label_störung.ForeColor = Color.Orange; } else { label_störung.BackColor = Color.Red; label_störung.ForeColor = Color.Black; } } private void button1_Click(object sender, EventArgs e) { timer1.Stop(); Close(); } } }
Gruß
Valdiz.







Zitieren

Lesezeichen