ASCII in STRING umwandeln, um Werte aus einer XML-Datei auszulesen

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

habe verschiedene Methoden überlegt was man da machen könnte, bin aber zu keinem vernünftigen Ergebnis gekommen, wie man das am besten lösen könnte. Entweder man programmiert einigermassen allgemeine Lösungen, so wie bei der XML Lösung oder man macht einzelne Lösungen, die für ein spezielles Problem da sind.

Beispiel für eine allgemeine Lösung:

Ausgang mit Array[1..10,1..2] OF STRING(20) -> entsprechende Wertepaare
Code:
Beispiel switch
success result switches switch active switch active switch active '' ''
true    {      [        1      true   2      false  3      false  ]  }

Beispiel call status
success result sessions session direction state   '' ''
true    {      [        1       outgoing  ringing ]  }

Beispiel error
success error code param description ''
false   {     12   port  invalid par }

Da muß man dann wieder die ganzen Wertepaare durchgehen. Oder eine Lösung wie die der Lib von KLM gestern.

Oder eben spezielle Funktionen wie
FC_Switch_1 mit Eingang des ByteArray und Ausgang als Bool
oder
FC_Switches mit Eingang ByteArray und mehrere Ausgänge Switch1, Switch2 als Bool

Ist natürlich auch einiges an Arbeit die ganzen Lösungen zu programmieren.

Um daher auf Deine ursprüngliche Frage zurückzukommen, ich habe mir die Wago Bibliotheken noch einmal angesehen. Da gibt es die WagoAppString, die hat die Funktion 'StringRef_to_PrintableString', damit sollte man das Byte/CharArray in einen String umwandeln können.

Code:
StringRef_to_PrintableString (FUN)

Interface variables 


Scope  Name                   Type            Comment 

Return StringRef_to_Printable String          STRING(255)   

Input  pInString              POINTER TO BYTE pointer to the input string 

Function

Converts a reference to a character STRING into a CODESYS-printable string.

 
Function Description

Non-printable characters are converted to spaces (‘ ‘). If a zero is encountered, this will be interpreted as the end of the string. Upper Control chars like 16#7f (DEL) and 16#80..9f are printable in CODESYS and will thus not be replaced.

Eine ähnliche Funktion ist in der Oscat lib. Da kann man den Quellcode ansehen. Oder Du folgst dem Github Link von hier: http://www.oscat.de/community/index.php/topic,4425.0.html da kannst Du den Quellcode direkt einsehen.

Bei der Wago Funktion hast Du den Vorteil, daß einige nicht darstellbare Zeichen die im Array vorkommen ersetzt werden.

Du mußt nur aufpassen, die max. Anzahl der Zeichen in den Strings beträgt bei Wago 255 und bei Oscat 250. Falls die Response mehr Zeichen hat mußt Du bei der Übergabe der Adresse des CharArray einen Offset dazuaddieren um andere Bereiche der Response auszuwerten.

Leider läßt sich der Beschreibung auch nicht entnehmen ob die Antwort in Unicode ist oder nicht. Bei Unicode funktioniert das alles nicht. Laut Hilfe con e!cockpit wird zwar auch wstring unterstützt, aber die ganzen Funktionen spielen da (noch) nicht mit.

Hoffe das hilft Dir etwas weiter.
 
Hi Thruser und KLM,

vielen Dank für eure Anregungen und Vorschläge.
Hätte eine Frage an den ersten Codebereich von dir Thruser.
Fehlen bezüglich diesem Code nicht die Deklarierungen? Dies ist doch kein fertiges Programm zum filtern von den Zuständen der Switches?
Werde aber den Support bezüglich einer fertigen Bibliothek zur Bearbeitungen von JSON-Daten in e!Cockpit erfragen.



Gruß Lex
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Lex,

kannst Du mir mal bitte ein paar Beispiele mit den Antworten geben. Am besten als Textdateien anhängen. Die Abfrage entweder mit dem Browser oder wget machen.

Habe mein Controller endlich wieder am laufen und probier dann mal ein paar Sachen aus.

Danke und Gruß
 
Hallo Thruser,

eigentlich ist alles wie im Beitrag #35 im PDF vorhanden. Dort sind auch alle Antworten zur jeweiligen Http-Anfrage abgebildet.

Hier nochmals der Link zum PDF:

https://www.google.de/url?sa=t&sourc...eLcgeRbWLqpR86


Von Interesse sind hauptsächlich folgende Kapitel:


  • Kapitel 5.9 (Switch-Status)
  • Kapite 5.12 (IO-Status)
  • Kapitel 5.15 (Call-Status)

Im Anhang findest du dennoch die verlangten Textdokumente. Habe zusätzlich auch die .JSON-Dateien hinzugepackt.
Ebenso bin ich sehr froh über deine Rückmeldung und möchte mich dafür sehr herzlich Bedanken!


Gruß Lex
 

Anhänge

  • JSON-Dateien+Textdokument.rar
    1,5 KB · Aufrufe: 13
Hallo,

in dem Dokument steht leider nicht ob die Einrückungen mit Tabs oder Leerzeichen erfolgen und welche/s Zeilenendezeichen verwendet wird. Auch ob Unicode oder ASCII steht nicht frin.

Und so muß ich nicht alles abtippen und habe mal reale Daten zum testen.

Danke und Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Thruser,

wüsste nicht wie ich das realisieren soll das die Infos in den Daten drine enthalten sind. Habe dir deswegen die originalen JSON Dateien angehängt. Wenn du was wüsstest wie es funktioniert gib mir bitte grad bescheid.



Gruß Lex
 
Hi,
Hi Thruser,

wüsste nicht wie ich das realisieren soll das die Infos in den Daten drine enthalten sind. Habe dir deswegen die originalen JSON Dateien angehängt. Wenn du was wüsstest wie es funktioniert gib mir bitte grad bescheid.



Gruß Lex
alles Gut. Es ist alles enthalten. Man muß sich die Dateien nur mit dem Hex Editor ansehen. Oder online das Array in der SPS mit der Antwort.

Gruß
 
Hallo,

habe gerade gesehen, daß es jetzt in der aktuellen e!cockpit Version 1.5.0.3 die Bibliothek WagoAppJSON gibt.

Die neisten Funktionen sind nicht sehr gut dokumentiert bis auf die Methode Fb_JSON_ParseAndModify.GetValueByPath die Du benötigst.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Thruser,

vielen lieben Dank für die Info!
Ich hatte es gesehen nach dem ich ich schlau gemacht hatte, welche neuen Bibs in diesem Update implementiert wurden.

P.S.: Dir noch Frohe Ostern!
 
Zurück
Oben