2Probleme: char variabler länge, Steuerzeichen PDU abschluss



  • hallo liebe forumuser

    EINLEITUNG:
    Zuerst möchte ich mich im vorhinein bedanken für eure hilfe,
    es sei auch gesagt dass ich leider mit der programmierung in C++ nicht sehr vertraut bin, daher möchte ich mich gleich im vorhinein für schlecht formulierte fragen bzw. falsch verwendete ausdrücke entschuldigen, wie auch für die massiven rechtschreibfehler die in meinem post enthalten sein werden.
    danke für euer verständniss

    PROGRAMM + andere ANGABEN die eventuell relevant sind:
    Borland C++ builder V3.0
    OS: Win2k, bzw. Win98
    Funktion des Programmes: Einspeichern von sendefähigen Textnachrichten im PDU Format in ein Handy (Siemens-SL45)
    Übermittlung der Daten: Serielle Schnittstelle

    Problem1: char mit variabler länge
    zur übertragung per serieller schnittstelle hab ich mir ein vorgefertigtes Header und cpp File "Serial.h" "Serial.cpp" besorgt (Quelle: von Freund kopiert) welches 4 Methoden zur verwendung stellt:
    Serial.Initialize (Baudrate,Comport)
    Serial.Close ()
    Serial.Read (char, Bufferlength)
    Serial.Write (char,Bufferlength)

    mein Problem ist folgendes:
    mit der Methode Serial.Write (char,Bufferlength) wird immer der gesamte charstring über die serielle Schnitstelle übertragen.
    Die länge der charstrings die ich übertragen möchte sind in meinem Programm allerdings abhängig von der benutzerangabe, deshalb habe ich diese mit der maximalen länge definiert.
    char Beispiel[190];
    ich möchte jez zb nur die ersten 50 Felder von Beispiel über die Serielle Schnittstelle senden doch mit der Methode Serial.Write wird immer der komplette inhalt des char übertragen unabhängig von der Größe des Buffers.

    meine Frage:
    gibt es eine möglichkeit einen char mit variabler länge zu definiern ?
    folgendes funktioniert nicht:
    char Beispiel[]; //compiler sagt mir ich muss ein längenangabe machen,
    Serial.Write(Beispiel,50) //der Buffer is zwar nur 50 Byte groß es werden aber trotzdem alle 190 Felder übertragen,
    die überflüssigen Felder mit 0 auffüllen // geht aus GSM-technischen Gründen nicht (es dürfen wirklich nur die 50 bytes übertragen werden)

    wenn jemand eine lösung für dieses Problem hat wär ich ihm sehr dankbar.

    Problem2: GSM-spezifisches Problem
    nachdem die komplette PDU übermittelt wurde, wird der Abschluss der PDU im Hyperterminal mit dem Tastendruck STRG-Z signalisiert.
    Diese Steuerzeichen möchte ich nun von meinem Programm aus über die serielle Schnittstelle senden. laust ascii code ( www.nthelp.com/ascii.htm )
    entspricht der Tastendruck Strg-Z dem Hexwert 0x1A ,
    doch wenn ich im Hyperterminal statt dem Tastendruck Strg-Z den HexWert 1A eingebe funktioniert die übertragung nicht.
    genausowenig wenn ich versuche den Hexwert von meinem Programm zu senden
    meine Schlussfolgerung: der Abschluss der PDU wird zwar im Hyperterminal durch den Tastendruck Strg-Z signalisiert doch um die Selbe funktion mit den HexWerten zu ereichen bedarf es mehr als ein 0x1A

    meine Frage:
    weiss jemand konkret welche HexWerte ich übertragen muss um den Abschluss der PDU zu signalisiern. (Antworten wie: schau in der Norm nach helfen mir nicht)
    Dieses Frage kann vermutlich nur jemand beantworten der so ein änliches Programm bereits erstellt hat

    Abschließend:
    da ich neu in diesem Forum bin, möchte ich um Rückmeldung zu meinem Post bitten, vor allem: was ist überflüssig was fehlt, formatierung etc.
    ich verspreche die Rückmeldungen zu beherzigen und meiene Posts in Zukunft dementsprechend zu gestalten, Flames (Beleidigungen) werde ich allerdings ignorieren,

    vielen vielen dank
    Speckknoedelsup


Anmelden zum Antworten