Seite 1 von 4

Zerlegung String

Verfasst: Montag 11. Dezember 2017, 14:05
von Marmelot
Hallo,

ich bin seit ein paar Wochen Anwender von ProfiLab, und versuche mich am zerlegen einer Zeichenkette (String). Es gibt da bereits eine kompilierte Anwendung, wovon ich aber das Projekt nicht habe.
Gibt es die Möglichkeit des auslesens der Schaltung auch ohne Projektdatei?
Zeichenkette.JPG
Zeichenkette.JPG (50.1 KiB) 20152 mal betrachtet
Die momentane Anwendung kann nur den grünen Teil zerlegen.

12.JPG
12.JPG (45.85 KiB) 20152 mal betrachtet
Vieleicht kann mir jemand auch einen Tip geben, wie ich den String aufteilen muss


Gruß Thomas

Re: Zerlegung String

Verfasst: Dienstag 12. Dezember 2017, 09:36
von Mike D
Moin,
wenn die Anzahl der Ausgänge nicht reicht, kann man $Part anders kaskadieren, den Eingang des 2. $Part an den letzten Ausgang des ersten, da wird nämlich der komplette Rest des Strings ausgegeben.
Es währe hilfreich, den Beispielstring nicht als Foto sondern als Text zur Verfügung zu Stellen und wir kennen die Einstellungen der $Parts im 2. Bild nicht.
Mike

Re: Zerlegung String

Verfasst: Dienstag 12. Dezember 2017, 10:16
von tmm
Hi,

wie soll denn der zerlegte String aussehen ?

Wir brauchen mehr Details !

Gruß MM

Re: Zerlegung String

Verfasst: Dienstag 12. Dezember 2017, 20:05
von IKT
Vielleicht so etwa:

Re: Zerlegung String

Verfasst: Mittwoch 13. Dezember 2017, 15:32
von Marmelot
Hallo,

vielen Dank für eure Antworten. Ich werde es mal etwas präzisieren. Standard ist ein Modul, was mir am Com Port die Werte T bis Z liefert. Im Bild grün dargestellt. Schliesse ich einen Fühler mehr an, kommt SP noch mit rüber. Dann gibt es ein CAN erweiterungsmodul, das wiederum die Zeichenkette um 4 Werte erweitert. Das wären dann W, X, Y, und Z. EIn weiteres Modul gibt fügt die Werte a bis h in die zweite Zeile der Zeichenkette. Mir fehlt der Ansatz, wie ich die ( Part ) Module konfigurieren muss.
Ich habe mal eine Prj. angehangen. Vieleicht sieht man es da besser.

Gruß Thomas

Re: Zerlegung String

Verfasst: Mittwoch 13. Dezember 2017, 16:32
von IKT
Marmelot hat geschrieben:Mir fehlt der Ansatz, wie ich die ( Part ) Module konfigurieren muss.
Ist doch im Bild beschrieben: Leer-Zeichen (engl. space), als Trenner ...
Die Part-Bausteine müssen kaskadiert werden (auch wie im Bild).
Letzter Ausgang = Eingang (nächstes Modul, in Kaskade, soviele Ausgänge, wie man will/braucht).

Re: Zerlegung String

Verfasst: Mittwoch 13. Dezember 2017, 16:34
von Marmelot
Vielen Dank, ich bin gerade dabei es zu testen.

Gruß Thomas

Re: Zerlegung String

Verfasst: Mittwoch 13. Dezember 2017, 16:50
von IKT
Noch eine Bemerkung:
es sind viele Formel-Universal Bausteine vorhanden, diese sollte man tunlichst vermeiden, da sie extrem langsam sind (hoher Ressourcen Verbrauch). Es ist besser, wenn man dieselbe Formel mehrfach braucht, diese als Makro (mit den einfachen Math.-Bausteinen gebaut), zu implementieren.
Das so erstellte Makro kann dann mehrfach 'eingebaut' werden (wie jeder andere, schon vorhandene, Baustein).

Re: Zerlegung String

Verfasst: Mittwoch 13. Dezember 2017, 17:47
von Marmelot
Hallo IKT,

ich habe jetzt die Änderung versucht. Erst war ich sehr positiv überrascht, doch dann lief es wieder nicht. Noch eine Bemerkung, bei der einfachen Anwendung ist die Zeichenkette einzeilig. Mit Messmodul wird sie zweizeilig. Ich habe zwei Bilder angefügt, wie sie am Terminelprogramm zu sehen sind.

Bezüglich deiner Anmerkung, muss ich zustimmen. Diese Anwendung ist nicht von mir. Ist vor fast 10 Jahren mal entstanden und sehr Prozessorlastig. Ich bin dran das ganze etwas zu verbessern.

Gruß Thomas

Re: Zerlegung String

Verfasst: Mittwoch 13. Dezember 2017, 17:49
von Marmelot
Bis zum kleinen z läuft die Anwendung. Mit dem Messmodul spinnt sie dann.

Re: Zerlegung String

Verfasst: Mittwoch 13. Dezember 2017, 18:04
von IKT
Na ja, dann muss Umgeschaltet werden, von der einen, zu einer zweiten Auswertungs-Routine (z.B. $Mux).
Bei der zweiten dann, zuerst ein Part (der CR/LF oder CRLF auswertet und splittet), danach wie gehabt ...

Re: Zerlegung String

Verfasst: Mittwoch 13. Dezember 2017, 18:11
von Marmelot
Danke, ich habe jetzt zwar nicht viel verstanden, aber ich werde es mal testen.

Gruß Thomas

Re: Zerlegung String

Verfasst: Mittwoch 13. Dezember 2017, 18:22
von IKT
Terminal mal von ASCII auf HEX umschalten, um herauszufinden, welche(s) Zeichen, den Zeilenumbruch veranlasst: 0D, [14dec] (CR), 0A [10dec] (LF) oder 0D0A (CRLF).

Re: Zerlegung String

Verfasst: Mittwoch 13. Dezember 2017, 18:31
von Marmelot
:?: jetzt verstehe ich fast nichts mehr...

Re: Zerlegung String

Verfasst: Mittwoch 13. Dezember 2017, 19:02
von Marmelot
Bin ich auf dem richtigen Weg?

Re: Zerlegung String

Verfasst: Mittwoch 13. Dezember 2017, 19:10
von IKT
Ist doch klar: Terminal-HEX (rechts, unterste Linie) 0D 0A 11
Also: CRLF (Wagenrücklauf, Zeilenwechsel [gemäss: https://dict.leo.org])
Bin ich auf dem richtigen Weg?
Nee, muss anderst herum geschaltet werden:
1 x Eingang / 2 x Ausgang ...

Re: Zerlegung String

Verfasst: Mittwoch 13. Dezember 2017, 20:51
von tmm
Hi,
du könntest auch CRLF mit dem Replace-Baustein durch ein Leerzeichen ersetzen (vor dem Part-Baustein), dann ist dein String "am Stück" und kann (fast egal wie lang er dann ist) dann einfach zerlegt werden.

Gruß MM

Re: Zerlegung String

Verfasst: Donnerstag 14. Dezember 2017, 09:39
von Mike D
wird das CR LF nicht vom COM rausgefiltert und er gibt abwechsend beide Strings aus?
Dann könnte mit dem "T" am Anfang des 1. Strings der MUX umgeschaltet werden.

Re: Zerlegung String

Verfasst: Donnerstag 14. Dezember 2017, 10:07
von Marmelot
Danke für eure Anregungen und Ideen. Ich muss dazu sagen, das ich mich erst seit zwei Wochen mit ProfiLab beschäftige. Deshalb verstehe ich auch manches nicht gleich auf Anhieb.

Mike, du meinst ich sollte das am COM einstellen? Ich habe mal ein Bild von der Einstellung des COM angefügt.

Gruß Thomas

Re: Zerlegung String

Verfasst: Donnerstag 14. Dezember 2017, 10:40
von Marmelot
So, jetzt habe ich mich erstmal etwas belesen in Sachen "Wagenrücklauf". Wenn der String zweizeilig ist, habe ich in der HEX Ansicht zwei Wagenrückläufe. Jetzt dämmert es mir langsam. Also müsste ich den String nach dem ersten Wagenrücklauf teilen.