Nullbyte von Strings beim Senden über COM-Port entfernen?



  • Hallo

    Ich habe ein Problem, das mich zum Verzweifeln bringt...
    Folgendes: Ich bin dabei ein Programm mit C# zu schreiben, das über die Serielle Schnittstelle (RS-232, COM-Port) mit einem Microcontrollerboard kommunizieren soll.
    Soweit so gut, das funktioniert auch. Daten die der IC sendet greift das Programm auf, Daten die das Programm sendet greift der IC auf...

    Nur an diesem elendigen Nullbyte am Ende der Strings verzweifle ich noch...

    Wenn ich von meinem Programm beispielsweise den String "Hallo" sende, kommt beim IC ein Hallo█ an. Das Nullbyte wird dabei in ein ASCI-Zeichen konvertiert, mit dem ich bzw. der IC absolut nichts anfangen kann. Das hat zur Folge, dass Schlüsselwörter vom IC nicht erkannt werden und so das ganze Programm auf dem IC nicht funktioniert.

    Anders rum ist es für mich möglich das Nullbyte zu entfernen, bzw. auszublenden. Wenn ich vom IC aus ein "Hallo" sende, kommt auch wirklich ein "Hallo" beim Programm an.

    Nur wie mach ichs beim Senden vom C#-Programm weg?



  • Hallo,

    falls du die Überladung System.IO.Ports.SerialPort.Write(string text) verwendest kann es an der internen Konvertierung liegen, versuch es dann mal mit

    byte[] OutBuffer = Encoding.ASCII.GetBytes(text);
    port.Write(OutBuffer, 0, OutBuffer.Length);
    

    Ich werde in den nächsten Tagen auch mal mit meinem Atmel arbeiten müssen, falls oben genannter Code das Problem nicht löst werde ich auch mal über RS232 Tratsch und Klatsch austauschen und eventuelle Lösungen posten.

    mfg cx


Anmelden zum Antworten