PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] serialPort mit Invoke



valdiz
01.12.2012, 17:57
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.

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_DataRec eived); //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();
}
}
}



Ich werde sehr froh wenn mir jemand hilft den Fehler zu finden.

Gruß
Valdiz.

JoeM1978
02.12.2012, 00:40
namespace Serila_Invoke
Serila ? steht das so im Code ??
:confused:

- - - Aktualisiert - - -

Und mir war so, als ob es bei C am ende des Codes auch eine Anweisung gibt... sowas wie "END" oder "EXIT"....
oder Täusche ich mich ?
Könnte das fehlerhafte beenden des Programms erklären.