TIA S7-1200, Druckdatei (*.prn) in DB übertragen

Das hat mich jetzt interessiert, warum nach deiner Angabe da 2 Zeichen zu viel herauskommen.
Ich habe festgestellt, dass dein Konvertier-Skript von #13 nicht nur 2 Zeichen dazu erfindet, sondern generell die Zeilenschaltungs-Zeichen erfindet :rolleyes:
z.B.
Code:
daten[71] := 16#0A;
daten[72] := 16#0D;
Korrekt müsste aber herauskommen:
Code:
daten[71] := 16#0D;
daten[72] := 16#0A;

Hast recht. Ich hatte den Code von CR LF vertauscht. Und ich hab das pragmatisch einfach mal ans Zeilenende angehängt.
Das Script war ja auch nicht gedacht, dass man das universell einsetzen kann sondern auf diese applikation.

ich hab das script mal überarbeitet. das sollte jetzt eigentlich recht universell einsetzbar sein. (OHNE GEWÄHR)

So, jetzt kannst du mich wieder als Besserwisser beschimpfen
nee. werd ich nicht. No Stress.
 

Anhänge

Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo PN/DP,
ich hab' jetzt nicht so recht verstanden, was Du damit sagen willst.
Ich finde es toll, welche Mühe sich Volker gibt, mir zu helfen - aber von VB-Skript habe ich eben keine Ahnung und sehe auch nicht die Notwendigkeit, mich für eine einmalige Sache in dieses Thema reinzufuchsen.
Volkers Ergebnis sieht unter'm Strich doch genauso aus, wie das, was ich mit EXCEL und ein wenig hin und herkopieren - ganz ohne Skript - hinbekommen habe.

Als erstes habe ich die prn-Datei mit einem Hex-Editor geöffnet und alle Daten in die Zwischenablage kopiert.

Anhang anzeigen 82867

Im zweiten Schritt habe ich EXCEL geöffnet und die Daten dort in die erste Zelle kopiert.
Anschließend mit "Text in Spalten" für jeden einzelnen Hex-Wert eine eigene Spalte erzeugt.
Schließlich mittels "Transponieren" aus der Zeile mit den 715 Spalten eine Spalte mit 715 erzeugt.
Die Spalte B mit dem Wert "16#" erstellt und in der Spalte C dann die "Summe" aus Spalte B und Spalte A eingetragen.
Das sieht dann so aus.

Anhang anzeigen 82869

Im TIA-Portal ein Byte-Array mit 715 Feldern angelegt und die komplette Spalte C dort als Startwert hineinkopiert.

Anhang anzeigen 82870


Die variablen Inhalte entsprechend kommentiert.

Anhang anzeigen 82871
Anhang anzeigen 82872

Fertig!

Damit sind alle Spatzen gefangen und es ist easy, die variablen Werte vor dem Senden mit "Leben" zu füllen.
Besten Dank nochmal an alle, die sich hier beteiligt haben.
Nehmt es mir bitte nicht krumm, dass ich auf den Lösungsvorschlag mit dem VB-Skript nicht so richtig angesprungen bin.
Für einen VB-Crack ist das sicher nur eine Fingerübung, aber für mich ist es Neuland. Und ich glaube, soooo viel langsamer bin ich mit meiner EXCEL-hin-und-herschieberei auch nicht...

Liebe Grüße an alle, Andreas
Läuft das jetzt so?
 
Ich finde es toll, welche Mühe sich Volker gibt, mir zu helfen - aber von VB-Skript habe ich eben keine Ahnung und sehe auch nicht die Notwendigkeit, mich für eine einmalige Sache in dieses Thema reinzufuchsen.
Volkers Ergebnis sieht unter'm Strich doch genauso aus, wie das, was ich mit EXCEL und ein wenig hin und herkopieren - ganz ohne Skript - hinbekommen habe.
Im großen und ganzen macht mein script nichts anderes. aber ich erspar mir die ganze rummelei in excel.
 
Für einen VB-Crack ist das sicher nur eine Fingerübung, aber für mich ist es Neuland. Und ich glaube, soooo viel langsamer bin ich mit meiner EXCEL-hin-und-herschieberei auch nicht...

Liebe Grüße an alle, Andreas
doch. bist du. ;)
Aber wenn du in Excel richtig fit bist (bin ich nicht) dann kann das durchaus sein
 
Zuletzt bearbeitet:
Wenn es jetzt funktioniert ist ok. Allerdings bräuchte man auch in einer SPS schönen ASCI Text nicht mehr in HEX darzustellen. „Escapen“ sollte die Lösung für „ innerhalb einer Zeichenkette sein. Lesbare strings in der sps hätten den Vorteil, dass man sie versteht und auch leicht ändern könnte.
 
Hallo skorpion37,
ich stimme Dir voll und ganz zu, dass lesbarer ASCII-Text durchaus seinen Charme hat.
Von daher wäre es natürlich schön, wenn ich alles, was vor der ersten Variable steht, in einen String reinpacken würde.
Im nächsten String wäre dann der variable, auszugebende Wert.
Dann käme wieder ein String mit dem allem, was vor der nächsten Variable steht usw., so wie es bereits blimaa in #9 vorgeschlagen hat.
Dann müsste ich aber noch die Steuerzeichen CR + LF ergänzen und vor dem Senden an den Drucker müsste ich die Header-Bytes der Strings ausblenden (weiß nicht, wie der Drucker sonst darauf reagieren würde).
Daher schlucke ich halt die Kröte, dass es nur ein Hex-Dump ist. Aber durch anständige Kommentare wird auch dieser Code transparent und nachvollziehbar.
Ich weiß übrigens nicht, wie "Escapen" funktioniert. Ich werd' mal danach googeln...

Gruß, Andreas
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ok. noch einmal ein (letztes) kleines update vom script. (es werden ALLE Zeichen übersetzt)
etwas vereinfachte auswahl der datei/ordner.
es werden 2 dateien erzeugt. + 1 testdatei
einmal ein array of byte und einmal ein array of char.
der dateninhalt ist absolut identisch.
nach dem import/übersetzen der ...CHR.. werden darstellbare zeichen im db als char dargestellt. nicht darstellbare als hex (16#..)

ich denke, dass das script also mehr oder weniger direkt einsetzbar ist ohne excel zu bemühen. :)
 

Anhänge

Zurück
Oben