TIA WinCC .txt Inhalt suchen und Zeilen Parameter einlesen

M4i4

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen.

Ich komme zwar mit einfachen VB Scripten zurecht aber habe hier meine Probleme. Ich habe hier im Forum zwar schon Informationen dazu gefunden aber glaube nicht das richtige gefunden zu haben.

Ich bekomme über ERP eine Textdatei auf meine HMI geladen. Diese Datei hat mehrere 100 Zeilen bis tausende Zeilen. Der Bediener Scannt eine Produktcode ein welcher in dieser Datei gesucht werden soll und falls vorhanden sollen die Inhalte geladen werden.

Hier ein Zeile aus der Datei:

00991326 CHAMOT STE 96CORPS DROIT 304746044630711 1759 122 500 0 35180 122 1234

Gibt es eine Möglichkeit die Textdatei nach dem Produktcode abzusuchen und dann die jeweilige Zeile als Sting zu sichern oder kann mir hierbei jemand helfen ?


Danke
Gruß M4i4
 
Die Textdatei mit LineInputString zeilenweise einlesen und mit InStr in der Zeile nachschauen, ob die gesuchte Zeichenfolge enthalten ist. Wenn ja, dann die Zeile in die String-Variable kopieren und Zeilen einlesen beenden.
Eventuell mußt Du auch noch die Suche beschränken auf nur die Zeichenpositionen, wo der Produktcode steht. Hat so eine Zeile einen festen Aufbau? Dann mit Mid (oder Left oder Right) nur den Produktcode-Bereich aus der Zeile isolieren. Falls der Zeilenaufbau nicht mit festen Positionen ist, dann den Produktcode-Bereich in der Zeile suchen und isolieren. Möglicherweise ist ein Zerlegen der Zeile bei den Leerzeichen mit Split hilfreich/nötig.

PS: Achtung, die Skripte verwenden VBS (nicht VB). Irgendwo gefundene VB Codeschnipsel funktionieren oft nicht in VBS oder müssen in VBS anders formuliert werden.

Harald
 
Diese Datei hat mehrere 100 Zeilen bis tausende Zeilen.
TP1500 Comfort Panel
Die Textdatei mit LineInputString zeilenweise einlesen
Das ist zwar auch momentan die Lösung, die ich sehe. Aber wie performant ist denn so etwas auf einem TP und Dateien mit "tausenden" Zeilen?
Ich sehe (ungetestet) die Gefahr, daß die Suche mehrere Sekunden dauern könnte!?
Vor allem: wie oft muß denn gescannt werden? Kommt das einmal am Tag vor und der Anwender kann mal 5 Sekunden warten oder kommt das minütlich vor und es erhöht die Taktzeiten?

Ich würde überlegen, ob die die Datenhaltung (Datei) oder die Suche (zeilenweises einlesen) nicht optimieren könnte.

Nur mal so als Idee: Ist die Datei nach Produktcode geordnet? Könnte man eine große "tausende Zeilen" umfassende Datei ggf. splitten, so daß man gezielt auf einen Produktcode-Bereich zugreift, der z.B. dann nur 100 Zeilen enthält? Dann hätte man zwar 10 Dateien bei 1000 Produktcodes, könnte aber gezielter suchen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie ich das verstanden habe wird diese Datei jederzeit vom Host abgeändert und aktualisiert. Die Struktur ist fest und kann nicht geändert werden. Es kann Tage geben an den die Datei wenige Zeilen hat, kann aber auch Tage geben an den die Datei länger ist. Meine Vorlage Datei die ich bekommen habe hat aktuell 990 Zeilen.

Nur mal so als Idee: Ist die Datei nach Produktcode geordnet?
Es wird nichts sortiert. Neue Produktcodes werden einfach unten angehängt.
Ich sehe (ungetestet) die Gefahr, daß die Suche mehrere Sekunden dauern könnte!?
Diese Sorge hatte ich auch schon.
 
Gibt es eine Möglichkeit die Textdatei nach dem Produktcode abzusuchen und dann die jeweilige Zeile als Sting zu sichern oder kann mir hierbei jemand helfen ?
Wie Harald schon schrieb, kann man mit Instr suchen.
Wenn die Position im Satz nicht (genau) bekannt ist, aber sehr wohl bekannt ist, dass vor und nach dem gesuchten Begriff ein bestimmtes Trennzeichen stehen muss, dann sollte man die Trennzeichen mitsuchen.
Beispiel:
Statt
Position = Instr(Satz, "DROIT")
lieber
Position = Instr(Satz, " " & "DROIT" & " ") bzw. Position = Instr(Satz, " DROIT ")

Aber, je nach dem, was man in welchem Umfeld sucht, eine "PatentLösung" muss dies nicht sein.
 
Wie ich das verstanden habe wird diese Datei jederzeit vom Host abgeändert und aktualisiert.
Über welchen Weg kommt denn die Datei auf das Panel? Kann dein Host noch Daten in der Datei unten anhängen, wenn du
sie gerade am Panel geöffnet hast? Ich weiß nicht wie das ist, wenn man sie z.B. als Read Only öffnet, ob der Host dann noch schreiben
kann oder ob die Datei dann gesperrt ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Über welchen Weg kommt denn die Datei auf das Panel?
Interessante Frage (y)
Kommt da mehrmals am Tag ein ERP-ler mit einem USB-Stick vorbei?
Oder wird das HMI-Panel ferngesteuert (VNC)?
Oder soll sich das HMI-Panel die Datei von einer Freigabe im Netz laden?

Harald
 
Das ganze ist noch nicht zu 100% geklärt :) Ich gehe davon aus das wir auf ein freigegebenes Netzwerk zugreifen werden.

Mir geht es in erster Linie um die Funktion. Für Tests und ob es in einem akzeptablen Zeitraum verarbeitet werden kann reicht mir das ablegen der Datei auf dem HMI direkt.
 
Es wird nichts sortiert. Neue Produktcodes werden einfach unten angehängt.
Über welchen Weg kommt denn die Datei auf das Panel?
Mit Beantwortung der Frage könnte man ggf. auch klären, ob das ERP die Daten in anderer Form (z.B. sortiert) ausgeben könnte.

Man könnte auch ggf. einen Trigger setzen (lassen), daß man erkennt, wann die Datei aktualisiert wurde und dann die Daten (im Hintergrund) aufbereiten, z.B. sortieren und teilen. So daß das nicht ad hoc beim Zugriff erfolgt, sondern vorbereitend im Hintergrund, bevor ein Zugriff erfolgt.
 
Dann gebe ich noch zu bedenken, das auf den Comfort Paneln ein WinCE bzw. Win Embedded läuft.
Das müsst ihr berücksichtigen, ob ihr mit dem Betriebssystem überhaupt eine Netzwerkfreigabe auf ein
Firmennetz einrichten könnt.
Er richtet keine Freigabe ein...
Ich gehe davon aus das wir auf ein freigegebenes Netzwerk zugreifen werden.
Er greift auf eine Netzwerkfreigabe zu.

Das ist dann natürlich bei der erforderlichen Zeit, die benötigt wird, um einen Datensatz zu finden, noch hinzuzurechnen: Netzwerkzuriff und Laden der Datei.

Daher würde ich die Datei im Hintergrund bereits laden und vor-verarbeiten... so daß sie in handlichen Paketen auf dem Panel liegt. Frage ist: wie bekommt er mit, daß die Datei geändert wurde und neu geladen werden muß? Muß man minütlich vorbeischauen und die Dateieigenschaften abfragen?
 
Zurück
Oben