Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Daten lesen von Com1 via SerialPort
Cori
myCSharp.de - Member



Dabei seit:
Beiträge: 2
Herkunft: Jena

Themenstarter:

Daten lesen von Com1 via SerialPort

beantworten | zitieren | melden

Hallo,

ich habe ein Gerät an Com1, welches permantent Daten schickt - kann ich mit dem HyperTerminal nachsehen!

Nun wollte ich meine kleine C#-Anwendung unter VS C# Express schreiben zum Auslesen der Daten, was sich aber nun gut zwei Tage hinzieht und sich zum echten Problem entwickelt ;-)

Ich bekomm aktuell KEINE Daten mit dem unten abgebildeten Code - kann mit jemanden Helfen bzw. sieht den Fehler?

Danke,
Franz

Code:


    class SerialPortProgramm
    {
        SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One);

        public static void Main()
        {
            SerialPortProgramm obj = new SerialPortProgramm();
            obj.startReading();
            obj.doSomething();
            obj.stopReading();
            System.Console.ReadLine();
        }

        private SerialPortProgramm()
        {
            port.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
        }

        private void startReading()
        {
            port.RtsEnable = true;
            port.Encoding = Encoding.ASCII;
            port.Open();
            System.Console.WriteLine("startReading");
        }

        private void stopReading()
        {
            port.Close();
            System.Console.WriteLine("stopReading");
        }

        private void doSomething()
        {
//            port.Write("&hFFFF");
            while(true)
            {
//                int size = port.BytesToRead;
//                System.Console.WriteLine("Size: {0}", size);
            }
        }

        private void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
        {
            Console.WriteLine(port.ReadExisting());
        }
    }
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3.170
Herkunft: Trier -> München

beantworten | zitieren | melden

Hallo,
wenn ich das richig sehe, machst Du den port zwar auf, liest aber keine Daten.
Iregndwo müsste noch ein port.Read() oder port.ReadExisting() gerufen werden.

EDIT:
Vergiss es, ich sollte meine Augen aufmachen.
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
MarsStein
myCSharp.de - Experte

Avatar #avatar-3191.gif


Dabei seit:
Beiträge: 3.170
Herkunft: Trier -> München

beantworten | zitieren | melden

kommst Du denn überhaupt in dem Handler vorbei? Vllt. wird DataReceived erst ausgelöst, wenn man vorher ein Read macht?
Non quia difficilia sunt, non audemus, sed quia non audemus, difficilia sunt! - Seneca
private Nachricht | Beiträge des Benutzers
Cori
myCSharp.de - Member



Dabei seit:
Beiträge: 2
Herkunft: Jena

Themenstarter:

beantworten | zitieren | melden

Folgener Code der Schleife in doSomething()

int size = port.BytesToRead;
System.Console.WriteLine("Size: {0}", size);

liefert => Size: 0

und

System.Console.WriteLine("Line: {0}", port.ReadLine());

liefert => "" ... er bleibt bei port.ReadLine() stehen, da nichts zum Lesen da ist!

Cori
private Nachricht | Beiträge des Benutzers