Autor Beitrag
blutengel
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 59

Win XP, WIN 7
VS#2008 Prof
BeitragVerfasst: Sa 27.02.10 03:11 
Hallo


Erstmal kurz eine Beschreibung dessen was ich vor habe. Ich möchte ein Microcontrollerboard über die serielle Schnittstelle programmieren. Wenn der Controller bereit zum Empfang ist, sendet er ein Bereitschaftssignal. Diese Zeichen ist ein "U" bzw. eine 85 in Decimal.Ich habe in meiner Form das Steuerelement serialPort eingefügt. Jetzt meine Frage: Wie kann ich kontinuirlich den Port abfragen? Geht das mit serialPort.Read();
Alle anderen Funktionen in dem Programm sollen dabei aber weiterhin nutzbar sein.Ich habe es einfach mal mit serialPort.Read(); versucht, und habe das Empangene mal in einer Messagebox ausgegeben.
Hier mal der Codeauszug:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
private void button1_Click_1(object sender, EventArgs e)
        {
            try
            {
                byte []busy = new byte[1];
                serialPort.Open();
                int message = serialPort.Read(busy, 01);
                MessageBox.Show(Convert.ToString(message));
                COM2.Close();
            }
            catch (TimeoutException) { }
 
        }


Aber ich bekomme dann immer bei Senden des Signals eine 1 angezeigt, und das kann ja nicht richtig sein.Wer kann mir da helfen?

MFG

blutengel
c#surfer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 42
Erhaltene Danke: 2



BeitragVerfasst: Sa 27.02.10 13:30 
Das empfangene Byte steht nach deinem Audruf in dem Array busy. Ist in der Hilfe recht gut beschrieben, Auszug:

Zitat:
Parameter
buffer
Das Bytearray, in das die Eingabe geschrieben werden soll.

offset
Der Offset im Pufferarray, ab dem geschrieben werden soll.

count
Die Anzahl der zu lesenden Bytes.

Rückgabewert
Die Anzahl der gelesenen Bytes.

Wenn du eh nur 1 Byte lesen willst, ist ReadByte() einfacher. (Aber sieh dir dazu die Hilfe an, da dann das empfangene Byte der Rückgabewert ist.)

Um dein Programm nicht zu blockieren, während es auf den Empfang wartet empfiehlt sich die Verwendung des DataReceived Events.