Laden...

Daten lesen von Com1 via SerialPort

Erstellt von Cori vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.800 Views
C
Cori Themenstarter:in
2 Beiträge seit 2006
vor 17 Jahren
Daten lesen von Com1 via SerialPort

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

3.170 Beiträge seit 2006
vor 17 Jahren

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

3.170 Beiträge seit 2006
vor 17 Jahren

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

C
Cori Themenstarter:in
2 Beiträge seit 2006
vor 17 Jahren

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