Forum: PC-Programmierung Serielle Schnittstelle Visual Studio C#


von DingDong (Gast)


Lesenswert?

Hallo,

ich bin Anfänger und möchte Daten empfangen und diese im Textbox 
ausgeben lassen. Ich habe da was geschrieben und es funktioniert nicht 
ganz.
Kann mir da jemand sagen wo men Fehler liegt?

private void serialPort1_DataReceived(object sender, 
System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            int count = serialPort1.BytesToRead;
            byte[] ByteArray = new byte[count];
            serialPort1.Read(ByteArray, 0, count);

            string data = 
System.Text.ASCIIEncoding.Default.GetString(ByteArray, 0, 5);

            float f = float.Parse(data);

            txtBox1.Text = f.ToString();


        }

        private void button2_Click(object sender, EventArgs e)
        {
            serialPort1.Close();
            this.Close();

        }

: Verschoben durch User
von nicht"Gast" (Gast)


Lesenswert?

DingDong schrieb:
> float f = float.Parse(data);
>
>txtBox1.Text = f.ToString();


irgend wie kannst du dir das Sparen.  Erst ein einen float verwandeln 
und dann wieder in einen String.


BTT: Gibts nen Compiler Fehler? Ist die Baudrate richtig eingestellt? 
Kommen die Daten überhaupt an? Hast du den Port überhaupt aufgemacht?

Deine Informationslage ist ziemlich dünn.

von DingDong (Gast)


Lesenswert?

Hallo,

also so sieht mein Code aus:

 private void Form1_Load(object sender, EventArgs e)
        {

            SerialPort port = new SerialPort("COM6", 1200, Parity.None, 
8, StopBits.One);     //Initialisierung

            if (!port.IsOpen)
            {
                port.Open();
                txtBox.Text = "open";
            }


            else
            {
                txtBox.Text = "Not Open";
            }

                                                                                  //SerialPort 
öffnen





        }

        private void serialPort1_DataReceived(object sender, 
System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            int count = serialPort1.BytesToRead;
            byte[] ByteArray = new byte[count];
            serialPort1.Read(ByteArray, 0, count);

            string data = 
System.Text.ASCIIEncoding.Default.GetString(ByteArray, 0, 10);

            float f = float.Parse(data);

            txtBox1.Text = f.ToString();


        }

        private void button2_Click(object sender, EventArgs e)
        {
            serialPort1.Close();
            this.Close();

        }
    }
}

nicht"Gast" schrieb:
> BTT: Gibts nen Compiler Fehler? Ist die Baudrate richtig eingestellt?
Nein es wir kein Fehler angezeigt
> Kommen die Daten überhaupt an? Hast du den Port überhaupt aufgemacht?
Nein es kommen kein Fehler an

von Schnittschnelle (Gast)


Lesenswert?

DingDong schrieb:
>> BTT: Gibts nen Compiler Fehler? Ist die Baudrate richtig eingestellt?
> Nein es wir kein Fehler angezeigt
>> Kommen die Daten überhaupt an? Hast du den Port überhaupt aufgemacht?
> Nein es kommen kein Fehler an

Was ist denn überhaupt Dein Problem?

von DingDong (Gast)


Lesenswert?

Mein Problem ist, dass ich im txtBox1 keine Daten zusehen sind. Ich 
möchte datem empfangen und anzeigen lassen.

von Schnittschnelle (Gast)


Lesenswert?

Und warum verwendest Du in der ersten Hälfte des sogenannten Programms 
"port" und in der zweiten "serialport1"?

von Robert C. (anykey)


Lesenswert?

Kommen überhaupt Daten im DataReceived an?
Setze mal ReceivedBytesThreshold auf 1.

von DingDong (Gast)


Lesenswert?

Schnittschnelle schrieb:
> Und warum verwendest Du in der ersten Hälfte des sogenannten
> Programms
> "port" und in der zweiten "serialport1"?

ich habe port auf serialport1 unbenannt?

Robert C. schrieb:
> Kommen überhaupt Daten im DataReceived an?
> Setze mal ReceivedBytesThreshold auf 1.

  SerialPort serialPort1 = new SerialPort("COM6", 1200, Parity.None, 8, 
StopBits.One);     //Initialisierung

 serialPort1.ReceivedBytesThreshold = 1;

immer noch tut sich nichts

von Karl H. (kbuchegg)


Lesenswert?

Dann würde ich an deiner Stelle mal den ganzen Palawatsch mit 
konvertierungen sein lassen und mir ansehen, ob die Eventfunktion 
überhaupt aufgerufen wird und wenn ja, was da von der Seriellen 
Schnittstelle überhaupt rein kommt.

von Robert C. (anykey)


Lesenswert?

> Robert C. schrieb:
>> Kommen überhaupt Daten im DataReceived an?
>> Setze mal ReceivedBytesThreshold auf 1.
>
>   SerialPort serialPort1 = new SerialPort("COM6", 1200, Parity.None, 8,
> StopBits.One);     //Initialisierung
>
>  serialPort1.ReceivedBytesThreshold = 1;
>
> immer noch tut sich nichts

Dann mess mal an der Gegenstelle ob da überhaupt was raus kommt.

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.