Anzahl der beschrieben Bytes im DB ermitteln

hATZEnbrECHT

Level-1
Beiträge
45
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Habe folgendes Problem:

Habe einen Datenbaustein deklariert mit einem Array von 100 char. Dieser wird mit einer beliebigen Anzahl von 1-100 Zeichen beschrieben. Meine Aufgabe ist nun diese Zeichen als String zu übermitteln.

Dazu habe ich einen SendeDB angelegt mit einem String [100]. Die einzelnen Zeichen würde ich nun mit einer Schleife vom QuellDB in den String kopieren. Nun müsste ich aber erstmal ermitteln wieviel Zeichen denn nun eigendlich vorhanden sind. Diese Information benötige ich ja auch um den Header des Strings zu beschreiben.

Versucht habe ich den Befehl:
Code:
L DBLG
aber da erhalte ich ja nur die Größe des Array.

Gibt es da ne schöne fertige Funktion oder muss ich mit einer Schleife jedes einzelne Zeichen vergleichen?

Vielen Dank!

Systemdaten:
  • CPU 314C 2DP
  • Step7 V5.3 +SP3
 
Dafür gibt es m.E. nichts fertiges ...

Ich würde es so machen, dass ich in das letzte beschrieben Array-Element +1 den Wert 0 schreiben lasse. Danach suchen im Step7-Programm.

Aber ... warum ein Array of Char ? Geht nicht auch gleich von vorne herein ein STRING ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich lese die Daten über ein CP340 (RS232) ein. Dazu benutze ich den FB2 P_RCV des CP's. Da sehe ich auch gerade, dass eine Ausgangsvariable dieses FB's die Länge des empfangenen Telegramms anzeigen soll.

Leider kann ich das nicht testen, da ich kein equipment hier habe... aber das wäre dann eventuell ne Möglichkeit die Information abzugreifen.

Und wie ist das mit der Null gemeint? Dann müsste ich doch wissen wo das letzte beschrieben Elemnt steht!?
 
Und wie ist das mit der Null gemeint? Dann müsste ich doch wissen wo das letzte beschrieben Elemnt steht!?

wenn ich larry richtig verstanden habe, dann würde er das komplette array in den string schreiben.

beim beschreiben des arrays aber ein eindeutiges endezeichen an die stelle nach dem letzten regulären zeichen setzen.

dieses kannst du dann suchen, position ermitteln und deinen string entsprechend beschneiden.

so würd ich es übrigens auch machen oder komplett mit dem 100er string arbeiten ...
 
mhmm.... sry wenn ich mir grad n bissel dumm anstelle, aber eins versteh ich immer noch nicht.

Die Länge der Daten weiß ich doch nicht. Der Code könnte ja z.B. aus 25 Zeichen bestehen, aber auch aus 69. Und beschrieben wird das Array ja erstmal vom FB des CP's. Wie soll ich dann ein Endezeichen setzen?
 
... wenn der ganze Zeichen-Salat von einem CP kommt, dann kann doch der zugehörige Receive-Baustein gleich in den String schreiben. Nach dem Empfang dann den Header des Strings beschreiben - RCV liefert ja die Anzahl der empfangenen Zeichen. Dann brauchst du ja die Nachbearbeitung gar nicht mehr.

@4L:
Du hast den Ball (wie immer) natürlich genau richtig übernommen ...
 
Zurück
Oben