- Labornetzteil AliExpress         
Ergebnis 1 bis 10 von 52

Thema: Beispiel Anwendung C# Zugriff auf SerialPort

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    shedepe
    Gast

    Beispiel Anwendung C# Zugriff auf SerialPort

    Hallo.

    In letzter Zeit gab es immer wieder Nachfragen wie man in C# Daten über die serielle Schnittstelle an einen Microcontroller sendet.
    Deshalb habe ich mich dazu entschlossen mal als eine kleine Beispielanwendung ein kleines Terminalprogramm in C# geschrieben und kommentiert (Ok die Kommentare können noch ausgebaut werden)
    Ich hoffe dass diese Beispielanwendung insbesondere Anfängern hilft den schnellen Einstieg in die Verwendung der seriellen Schnittstelle in C# ermöglicht.

    Im Anhang findet ihr einmal die fertig erstellte Exe (.Net Framework 4)
    und das gesamte Projekt samt Quellcode in Form einer Visualstudio Solution (Visualstudio 2010 C# Express)

    liebe Grüße
    shedepe
    Angehängte Dateien Angehängte Dateien
    Geändert von shedepe (20.07.2011 um 15:20 Uhr)

  2. #2
    shedepe
    Gast
    Was ich bei meinem Beitrag vor einigen Tagen vergessen habe: Anregungen und Kritik sind natürlich immer erwünscht.
    Außerdem kann ich bei Bedarf auch nur den Quellcode posten

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.07.2011
    Beiträge
    17
    hey

    das sieht echt nett aus, sowas versuche ich grad zu verstehen
    nur die ganzen einstellungen mache ich im code selbst


    aber könntest du hier vllt einfach mal ganz simpel erzähle wie man sendet und empfängt?
    und dazu bisschen was erzählen


    das würde mir sehr helfen
    vielen dank

  4. #4
    shedepe
    Gast
    Hallo, zum Verständnis allgemein erstmal (sollte auch die erste Anlaufstelle bei anderen Fragen bezüglich C# sein): http://msdn.microsoft.com/de-de/libr...erialport.aspx
    Und nun zu deiner Frage:

    Gesendet wird mit dieser Zeile: Es wird direkt der Inhalt der Textbox über die Serielleschnittstelle gesendet.
    Es gibt auch die Möglichkeit mit "serialPort.Write(buffer[],int Offsize, int count);" Einzelne und mehrere Bytes zu senden, was man häufig bei einem Befehls bzw. Datenprotokoll braucht.
    Code:
                //Hier werden die eingebenen Daten über die serielle Schnittstelle gesendet
                serialPort.WriteLine(tbDataToSend.Text);
    Das Empfangen ist etwas komplizierter:
    Zum einen muss man zuerst das SerialPort.DataRecieved Event abonnieren (Zur Eventbasierten Programmierung empfehle ich diesen Link hier: http://www.mycsharp.de/wbb2/thread.php?threadid=26116)
    Code:
                serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived); //DataRecieved Event abonnieren
    Zum anderen muss man die Daten dann verarbeiten wenn, das Event ausgelöst wird (also Daten angekommen sind)
    Code:
    void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) //Methode die Aufgerufen wird, wenn das Event ausgelöst wurde. Die Methode wurde oben festgelegt beim abonnieren
            {
                foreach (var item in serialPort.ReadLine()) //Lese alle verfügbaren Daten. Hier gibt es auch noch andere Auslesemöglichkeiten wie z.B. Read() bzw ReadToEnd()
                {
                    lbRecieved.Invoke(lbRecievedDelegate,new object[]{item});  //Das wird für den Zugriff auf die Gui benötigt. (Thread übergreifende Zugriffe)
                }
            }

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    19.07.2011
    Beiträge
    17
    das schon mal sehr nett

    bin relativer anfänger, habe schon vieles im internet erlesen
    aber dennoch echt schwer für mich

    habe eben 2 USB to RS232 adapter und ein nullmodem kabel bestelle, um damit denn rumzuspielen


    vllt kommen noch fragen auf und ich muss dich leider "nerven"



    VIELEN DANK

  6. #6
    shedepe
    Gast
    Hallo, ich hab grad noch entdeckt dass ich einen kleiner Fehler bei der Verarbeitung der ankommenden Daten gemacht hab. Ich hab das jetzt korrigiert. Im Anhang befindet sich die richtige Version.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    19.07.2011
    Beiträge
    17
    hallo...
    hab nun nen problem mitn empfangen
    wird gesagt das es threadübergreifend ist..
    bekanntes problem ich weiß... ich habe mich damit nun über 20std! beschäftigz....es versucht im internet zu erlesen
    ich packs nicht, bin grad am verzeifeln

    ich brauche irgendwie diesen invoke befehl
    du bist grad meine letzte hoffnung

    ich hoffe du hilfst mir und erklärst mir das problem beim empfangen beim serialport...


    hab hier einfach mal mein ganzen code hochgeladen, kannst dir ja mal anschauen

    schon mal vielen vielen dank
    Geändert von bZzR (28.07.2011 um 00:01 Uhr)

  8. #8
    Ich habe dein Programm mal getestet. Zwischen 2 PC über Nullmodem funktioniert das Prima. Ich habe nun ein Gerät das mit RS232 funktioniert. Wenn ich nun ein Terminalprogramm in XP benutze funktioniert alles Top.
    Man sendet ein Befehl und erhält als beispiel die Seriennummer. Mi ihrem Programm lassen sich zwar Befehle senden aber es erfolgt keine Antwort. Können sie mir da weiter heflen?

  9. #9
    shedepe
    Gast
    Was für ein End of Line Zeichen sendet dein Gerät denn ?

    Wenn da nicht \n kommt, dann wird auch nichts gelesen.
    Für ein anderes end of Line Zeichen musst du diese Zeile ändern:
    Code:
     RecievedLine = serialPort.ReadLine();
    Dort musst du anstelle von ReadLine dir alle Bytes selber holen und selber nach deinem End Of Line Zeichen suchen.
    Geändert von shedepe (25.07.2014 um 20:47 Uhr)

  10. #10
    Herzlichen Dank an shedepe für diesen Thread.

Ähnliche Themen

  1. SerialPort & Visual Studio 2008
    Von fat tony im Forum Software, Algorithmen und KI
    Antworten: 31
    Letzter Beitrag: 09.01.2012, 15:26
  2. Warum bremst SerialPort mein Programm aus?
    Von exaware im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 12
    Letzter Beitrag: 29.01.2010, 23:27
  3. Von String to Hex SerialPort
    Von !*sascha*! im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 04.03.2009, 17:52
  4. Einzelne Leitungen des Serialport steuern
    Von wollez im Forum Software, Algorithmen und KI
    Antworten: 3
    Letzter Beitrag: 18.02.2005, 21:06
  5. Welche Programmiersprache für SerialPort und Multimedia?
    Von tfranz im Forum Software, Algorithmen und KI
    Antworten: 4
    Letzter Beitrag: 31.08.2004, 14:25

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen