SerialPort und Umlaute ü ö ä

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von foxone.

    SerialPort und Umlaute ü ö ä

    Hallo schon mal vorweg hab ich das hier gelesen ;)
    [VB 2008] SerialPort umlaute ausgeben

    Gibt es jetzt doch noch andere möglichkeiten per serialport umlaute ü ö ä zu empfangen???
    Ich lese SMSe von einem GSM-Modem aus und erhalte immer ??? statt umlaute in vb.net, in hyperterminal gibt es keine probleme.
    Es muss doch für das Problem eine Lösung geben :-S
    UTF7 wird vom SerialPort in VB.Net nicht unterstütz??? warum nicht???

    Ich bitte um hilfe, da die variante:
    [VB 2008] SerialPort umlaute ausgeben
    nicht funktioniert, da egal welche encodierung ich wähle immer ?????? für die umlaute erscheint
    Auf beiden Seiten der Kommunikation müssen dieselben Einstellungen vorhanden sein (CodePage).
    Informiere Dich, mit welcher CodePage Dein GSM-Modem sendet.
    Genau diese musst Du bei Dir einstellen.
    Oder Du erstellst eine separate Tabelle, das wäre allerdings nicht sonderlich elegant.
    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!

    Eierlein schrieb:

    Da bekommst du auch die Hex-Werte angezeigt.
    Ein SerialPort weiß nichts von Buchstaben, es kennt nur 5,6,7,8-Bit-Codes.
    Genau die müssen, vermöge der korrekten CodePage, in die richtigen Buchstaben konvertiert werden.
    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!
    Burkhard Kainkas Terminal kann ich leider nicht verwenden da ich ja meine eigene Anwendung programmiere in der die SMS weiter verarbeitet werden soll.

    charset oder codepage habe ich im gesamten Datenblatt des GSM-Modem Wavecom M2106 nicht gefunden. Wenn ich das ganze im HyperTerminal abrufe funktioniert es ohne Probleme, nur dann in VB.Net geht es nicht. Wie kann ich im Hyper Terminal feststellen welcher 5,6,7,8-Bit-Code verwendet wird. Oder meinst du damit die Datenbit?

    In VB.Net hab ich schon alle Varianten probiert:
    UTF8, UTF32, UTFdefault, ISO-8859-1
    Leider unterstütz anscheind das Freamwork UTF7 nicht, meine Vermutung ist das dort ÜÖÄ emfang möglich ist :S

    foxone schrieb:

    Oder meinst du damit die Datenbit?
    Genau.
    Probier mal mal Encoding.Default.
    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!
    DataBits sind standart 8Bit eingestellt, bei HyperTerminal ist das auch so.
    Außerdem empfange ich ja die restlichen ASCII Zeichen.

    Mit UTFdefault meinte ich Encoding.Default ;) sorry, also genau
    SerialPort1.Encoding = System.Text.Encoding.Default

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „foxone“ ()

    bin mit hterm da ran gegangen und hab per sms folgende hex werte empfangen

    ä = 0x84
    ö = 0x94
    ü = 0x81
    ß = 0xE1

    Ä = 0x8E
    Ö = 0x99
    Ü = 0x9A

    Denk aber nicht das ich mit einem replace die hex-werte mit den umlauten tauschen kann. die werden ja noch nicht mal empfangen, es erscheint ja sofort ein ?

    Kann man daraus vielleicht die UTF herraus finden?
    ist der cp850 und wie kann ich jetzt vb.net dazu bewegen das er statt eines "?" z.B. ein "ä" anzeigt?

    Müsste man theoretisch nur den richtigen ISO wert einstellen wie z.B. hier:
    SerialPort1.Encoding = System.Text.Encoding.GetEncoding("ISO-8859-1")
    oder liegt ich damit falsch? nur die frage wie man den jetzt rausfindet ?(



    ----------------------------------------------------------
    Hab die Lösung: (30 min sperre)
    SerialPort1.Encoding = System.Text.Encoding.GetEncoding(850)

    ;) danke jungs :thumbsup: über happy

    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „foxone“ ()