Serial Port Textdatei empfangen und in RichTextBox anzeigen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Serial Port Textdatei empfangen und in RichTextBox anzeigen

    Hallo VB-Gemeinde,
    ich bin über Google auf dieses Forum aufmerksam geworden und habe schon ältliche Tipps in mein Programm einbauen können.
    Da ich für mein jetziges Problem zwar Themen gefunden habe aber als VB Neuling es nicht ganz verstehe.

    Also ich habe ein Form wo eine RichTextBox und ein Serial Port enthalten sind. Der Serial Port soll warten bis er einen Text(String) empfängt und den in die RichTextBox ausgeben.
    Text an einen Teilnehmer senden funktioniert schon, nur das empfangen nicht.

    Wer kann mir weiterhelfen? Vielen Dank im Voraus…
    @ jack2106 Willkommen im Forum. :thumbup:
    Nutze das DataReceiveEvent des SerialPorts.
    Dort wirst Du benachrichtigt, wenn neue Daten vorliegen.
    Folgende Probleme können / werden auftreten:
    • Du musst wissen, welche Zeichencodierung der Sender vornimmt, diese musst Du beim Empfänger einstellen, z.B. in der Form_Load:

      VB.NET-Quellcode

      1. Me.SerialPort1.Encoding = System.Text.Encoding.UTF8

    • Das SerialPort arbeitet in einem anderen Thread, also musst Du die Antwort in den Hauptthread Deines Programms invoken:

      VB.NET-Quellcode

      1. Private Sub SerialPort1_DataReceived(sender As System.Object, e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
      2. Me.Invoke(Sub() Me.RichTextBox1.AppendText(Me.SerialPort1.ReadExisting))
      3. End Sub

    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hi
    Schön das man hier eine schnelle Antwort bekommt Danke dafür.
    Also der Sender nimmt eine ASCII Zeichencodierung vor.
    Ich will die Freundlichkeit nicht überstrapazieren aber könntet ihr mir ein Beispiel schreiben wie ich das anzuwenden habe?
    Der Standard-ASCII-Zeichensatz ist auf 7 Bit (128 Zeichen) begrenzt.
    Wenn der Sender tatsächlich in diesem Range bleibt, kannst du innerhalb des Encoding einstellen, was du willst.

    Nur meist wird der Zeichensatz auf 8 Bit erweitert und bei den Sonderzeichen (128-255) unterscheiden sich die Welten.
    Wenn der Sender diesen Bereich ebenfalls ausnützt, musst du das Encoding ggf. noch mit der richtigen Codepage versorgen.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    jack2106 schrieb:

    anzuwenden
    Da ich hier im Unterforum schon genügend solch Code gepostet habe, verweise ich Dich auf die Suchfunktion in diesem Unterforum. Gib als Autor meinen Namen ein und sieh Dir die paar Posts mal an.
    Bilder
    • Suche.png

      36,28 kB, 945×312, 175 mal angesehen
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!