C# Problem mit ComPort Empfang

#2550959
Lesenswert?

Ich habe ein Programm in C# geschrieben womit ich mit einem µC 
kommonizieren kenn. Ich schicke zuerst ein Kommando an den µC und warte 
dann in einer whileschleife auf antwort doch diese kommt nie. Nur die 
Fehlermeldung wie auf dem Bild.

Zur Erläuterung des Programms:
zuerst wird ein neuer Tread eröffnet
1
DispensThread = new System.Threading.Thread(new ThreadStart(threadDispens));
2
                DispensThread.Start();
1
private void threadDispens()
2
        {
3
            try
4
            {
5
                serialPortal.Open();
6
            }
7
           catch
8
            {
9
                
10
            }
11
            finally
12
            {
13
                    Inhalt.InititDisp(serialPortal);
14
                    serialPortal.Close();
15
            }
16
        }

in Klasse von Inhalt
1
public bool InititDisp(System.IO.Ports.SerialPort Port)
2
        {
3
            Port.WriteLine("MG");
4
            while (!(PortEmpfangStatus))
5
            {
6
            }



Hat jemand Rat?
Angehängte Dateien:
Gast #2551303
Lesenswert?

Warum benutzt du überhaupt das DataReceived-Event, wenn du eh im Thread 
auf PortEmpfangStatus=true wartest?
Ruf da doch direkt .ReadLine() auf?
Was als Newline erkannt werden soll kann man via .NewLine beim 
SerialPort angeben.
Beim Arbeiten mit Zeichenketten würde ich auch raten .Encoding passend 
setzen (steht standardmässig auf ASCIIEncoding)
Gast #2551330
Lesenswert?

> Komisch aber ist dass mein Terminalprogramm dieses Zeichen als NewLine
> interpretiert hat das mein Programm aber nicht.
Terminalprogramme akzeptieren je nach Einstellung Cr, Lf oder Cr+Lf als 
Endezeichen. Für das COM-Port-Objekt gilt dasselbe, dort ist die 
Einstellung "Newline-Character" (oder so ähnlich) der Ansatzpunkt, der 
Defaultwert ist "/n", wenn ich mich recht entsinne, und das wiederum ist 
systemabhängig.

Ralf
#2553720
Lesenswert?

bluppdidupp schrieb:
> Sven H. schrieb:
>> Wo steht das?
>
>
1
> while (!(PortEmpfangStatus))
2
> {
3
> }
> ...sieht für mich nach aktivem Warten aus. In der DataReceived
> (Screenshot) setzt er PortEmpfangStatus auf true (2x sogar?!)

Allerdings wird PortEmpfangStatus nie gesetzt, weil das Programm in der 
Schleife hängt und der EventHandler nie aufgerufen wird...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren