oscat.lib > oscat.lib fuer PC WorX/MULTIPROG
Erstellen eines Strings (>80 Zeichen) aus mehreren Teilstrings
Bergland:
Hallo Zusammen
Habe mir das Buch, welches mir peewit empfohlen hat, gekauft. Leider hilft es nicht so wie erwartet...
Mein Problem ist immer noch, dass ich verschiedene Teilstrings zu einem ganzen zusammenfügen und dann über den STRING_TO_BUFFER FB von PC-Worx via IP_USEND an das Modem senden möchte. Habe mit String_250 von Oscat den String in der gewünschten Länge erzeugen können. Der FB im PC-Worx kann jedoch nicht verwendet werden, weil die Eingangsstring-Variable zu klein ist.
Die Versuche mit dem Oscat _STRING_TO_BUFFER schlugen fehl, weil die Funktionen ADR(Array) oder SIZEOF(Array) sowie angeblich Pointer-Operationen in PC-Works nicht unterstützt werden.
In ST soll das so aussehen:
--- Code: ---_STRING_TO_BUFFER(STR:=(* oscat_STRING250 *),POS:=(* INT *),SIZE:=(* UINT *),PT:=(* oscat_arb_0_249 *));
(* INT *):=_STRING_TO_BUFFER_2._STRING_TO_BUFFER;
(* oscat_arb_0_249 *):=_STRING_TO_BUFFER_2.PT;
--- Ende Code ---
Ich habe einen Buffer wie folgt definiert:
--- Code: ---TYPE
Send_SMS_Buffer: ARRAY[0..255] OF BYTE;
END_TYPE
--- Ende Code ---
Wie erhalte ich die Adresse also den Pointer für den Parameter PT und wie die Grösse meines Array für den SIZE Parameter in _STRING_TO_BUFFER?
Einem Beispiel, wie _STRING_TO_BUFFER im PC-Worx in ST aufgerufen wird, bin ich auch nicht abgeneigt.
Danke aus dem Bergland
peewit:
--- Zitat ---Der FB im PC-Worx kann jedoch nicht verwendet werden, weil die Eingangsstring-Variable zu klein ist.
--- Ende Zitat ---
beschreibe mal genauer was du gemacht hast da ich erkenne nkann was du falsch machst
--- Zitat ---Die Versuche mit dem Oscat _STRING_TO_BUFFER schlugen fehl, weil die Funktionen ADR(Array) oder SIZEOF(Array) sowie angeblich Pointer-Operationen in PC-Works nicht unterstützt werden
--- Ende Zitat ---
in der network lib für pcworx gibt es ja einen string_to_buffer der ohne ADR und SIZEOF und Pointer arbeitet
diesen baustein kopiert man und passt ihn auf den PT byteararray zielbereich an
du musst deine probleme darstellen, eventuell durch posten deines codes
Bergland:
Hallo peewit
Danke für Deine schnelle Antwort.
--- Zitat von: peewit ---beschreibe mal genauer was du gemacht hast da ich erkenne nkann was du falsch machst
--- Ende Zitat ---
Ich möchte einen über 80 Zeichen langen XML-String via IP_USEND an das Modem senden. Aktuell mache ich dies zu Testzwecken, indem ich die verschiedenen Teilstrings via CONCAT zusammensetze und dann dem STRING_TO_BUFFER übergebe. Dieses erfolgt in FBS und funktioniert.
Da ich jedoch mit Arrays und Schleifen arbeiten möchte, versuchte ich diese Funktion in ST zu erstellen.
Hier der Versuch mit länderen Strings zu arbeiten
--- Code: ---sSMSCallNumber := Array_Alarmempfaenger_cfg[1].F_Telefonnummer;
sSMSMessage := Array_Alarmmeldungen_cfg[1].F_Text_SMS;
sSendSMSText := CONCAT('<?xml version="1.0"?><cmgs destaddrs="', sSMSCallNumber);
sSendSMSText := CONCAT(sSendSMSText, '">');
sSendSMSText := CONCAT(sSendSMSText, sSMSMessage);
sSendSMSText := CONCAT(sSendSMSText, '</cmgs>');
xSendSMSText_LEN := LEN(sSendSMSText);
iSendSMSText_Buffer := STRING_TO_BUFFER(sSendSMSText,rvSendSMSText_Buffer, xSendSMSText_LEN);
--- Ende Code ---
Variablen:
======
Arrays:
Array_Alarmempfaenger_cfg
Array_Alarmmeldungen_cfg
oscat_STRING250:
sSMSCallNumber
sSMSMessage
sSendSMSText
INT:
xSendSMSText_LEN
iSendSMSText_Buffer
BYTE:
rvSendSMSText_Buffer
Wo mache ich den Fehler?
Grüsse Bergland
peewit:
hallo
die infos sind immer noch halb....
BYTE:
rvSendSMSText_Buffer
das muss doch array of byte sein und hast du den string_to_buffer angepasst
exportiere doch mal deinen baustein und stelle ihn mir zur verfügung (und alles was dazu gehört)
du kannst aber auch das gepackte zwt-projekt mir geben
was sagt denn der compiler beim übersetzen ?
schau dir in der oscat-network lib den baustein "TELNET_LOG" an !
Bergland:
Hallo peewit
Der Compiler gibt aktuell keine Fehlermeldung mehr aus, aber es funktioniert immer noch nicht.
Von Phoenix habe ich den Tip erhalten, es mit STRING_TO_BUF zu versuchen. Die Stringübergabe scheint zu funktionieren, jetzt meckert das Kommunikationstool....
Kann denn TELNET_LOG mit einem Socketserver kommunizieren?
Werde mich frühesters gegen Ende nächster Woche wieder um die SPS kümmern können, denn zum Glück habe ich noch "einfachere" Arbeit... :-)
Grüsse
Bergland
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln