Forum: PC-Programmierung Serielle Daten empfangen mit C#


von Peter (Gast)


Lesenswert?

Hallo,

Habe ein Problem bei C# beim einlesen eines vom Mikrocontroller 
gesendeten Strings. Habe als Endzeichen vom Mikrocontroller '\n' am Ende 
vom String angehangen.

private void COMPORT_DataReceived(object sender, 
System.IO.Ports.SerialDataReceivedEventArgs e)
        {
/*             try
             {
                Einlesen = COMPORT.ReadLine();
             }
             catch
             {
                ;
             }      */
        }
Also ich kann keine Daten empfangen und muss es wie oben ausklammern 
sonst bekomm ich einen Blue-Screen.

Kann mir jemand helfen?

MFG Peter

von Arc N. (arc)


Lesenswert?

Peter schrieb:

> private void COMPORT_DataReceived(object sender,
> System.IO.Ports.SerialDataReceivedEventArgs e)
>         {
> /*             try
>              {
>                 Einlesen = COMPORT.ReadLine();
>              }
>              catch
>              {
>                 ;
>              }      */
>         }
> Also ich kann keine Daten empfangen und muss es wie oben ausklammern
> sonst bekomm ich einen Blue-Screen.
>
> Kann mir jemand helfen?
>
> MFG Peter

Bluescreen? Prolific?
Ist COMPORT.NewLine ist auf "\n" gesetzt
http://msdn.microsoft.com/de-de/library/system.io.ports.serialport.newline(v=VS.80).aspx

von Sam .. (sam1994)


Lesenswert?

Bluescreen deutet eher auf ein Treiberproblem hin. Newline ist 
normalerweise \r\n.

von Peter (Gast)


Lesenswert?

Also gerade mal Newline probiert, ändert auch nicht. Also das Programm 
hängt sich sofort auf sobald ich in den Datenmodus gehe (den Port öffne 
zur Datenübertragung.

von Peter (Gast)


Lesenswert?

Treiberprobleme kann ich eigentlich ausschließen da ich in HTerm die 
Daten des Mikrocontrollers ohne probleme empfangen bekomm.

von Sam .. (sam1994)


Lesenswert?

Ich wüsste nicht was sonst ab Win2000 (.NET) einen Bluescreen 
verursachen könnte außer Treiber und Hardware.

Versuche mal die Daten per Event zu empfangen.

von Peter (Gast)


Lesenswert?

Empfange es doch schon im SerialDataReceivedEvent. Oder meinst du was 
anderes?

von Peter (Gast)


Angehängte Dateien:

Lesenswert?

Hier mal das Testprog.

von Bernd H. (geeky)


Lesenswert?

Benutzt du einen USB-Adapter?

Ich halte es für eine schlechte Idee sowohl DataReceived zu verwenden 
als auch außerhalb von DataReceived (z.B. im Button-Click-Handler) 
Read/ReadLine aufzurufen

von Peter (Gast)


Lesenswert?

Hallo
Ja benutzte dieses Board mit dem Mk2 Programmieradapter.

http://shop.myavr.de/Systemboards/myAVR%20Board%20MK2,%20best%C3%BCckt.htm?sp=article.sp.php&artID=40

Da geht es drum von Programmiermodus auf Datenmodus umzuschalten und die 
Readline Funktion ist zur abfrage ob der Adapter auch im Datenmodus ist. 
Wenn dieser umgeschaltet wurde, ist der Port ja mit 9600 Baud geöffnet 
und es findet außer in der DataReceived keine abfrage mehr statt.

von Rolf K. (Gast)


Lesenswert?


von Peter (Gast)


Lesenswert?

So vielen Dank für die Hilfreichen Tips. Habs jetzt endlich zum laufen 
gebracht.

Lg Peter

von N. Müller (Gast)


Lesenswert?

An dieser Stellen wäre es dann sinnvoll zu erwähnen woran es lag...

von Arc N. (arc)


Lesenswert?

N. Müller schrieb:
> An dieser Stellen wäre es dann sinnvoll zu erwähnen woran es lag...

Hatte es oben auch übersehen...
Im DataReceivedEvent wird nochmals mit ReadLine auf die Daten 
gewartet...d.h. beim zweiten Zeichen/Paket knallt's da ReadLine 
blockiert. Abstürzen dürfte das trotzdem nicht, außer es ist wie oben 
schon gesagt, Prolific

http://stackoverflow.com/questions/256893/serialport-and-the-bsod

von Peter (Gast)


Angehängte Dateien:

Lesenswert?

Also hab mein Programm komplett neu aufgesetzt, um alle Fehler von 
Anfang an nachvollziehen zu können.
Hier in dem Programm werden die Comport-Namen abgefragt, dann muss der 
Comport des USB-MK2 Board ausgewählt werden und dann wird in den 
Datenmodus umgeschaltet. Woran es bei den anderen Programm gehangen hat 
weiß ich noch nicht genau. Muss ich mir noch angucken.

von Peter (Gast)


Lesenswert?

Der Blue-Screen kam scheinbar erst als das Programm sich aufgehangen hat 
und man den Comport-Adapter abgezogen hat. Denke das ist dadurch 
gekommen das der Comport da noch geöffnet war.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.