oscat.lib > oscat.lib fuer PC WorX/MULTIPROG

Erstellen eines Strings (>80 Zeichen) aus mehreren Teilstrings

<< < (2/3) > >>

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