Script von Panel auf PC-Runtime

Matze001

Level-3
Beiträge
2.814
Reaktionspunkte
573
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

ich versuche ein Script von einem Panel auf ner PC-Runtime zum Laufen zu bekommen.
Bei Dateioperationen weiß ich, dass sich die zwei Versionen unterscheiden.

Habe mich an diesem Beitrag orientiert:

http://www.sps-forum.de/faq/15348-protool-winccflex-daten-lesen-schreiben-mit-vb-script.html


Mein Lauffähiges Script auf dem Panel:

Code:
Dim fs
Dim f
Dim mode
Dim pfad

pfad = "Storage Card USB\Ordner\"
    ' Objekt fuer Filehandling erstellen
    Set fs = CreateObject("filectl.filesystem")
    
    ' Nichts machen wenn das Verzeichnis fehlt
    If fs.dir(pfad) <> "" Then 
      
      Set f= CreateObject("filectl.file")
      mode = 1 ' lesen
      f.open pfad + "data", mode
      zeile1 = f.LineInputString
      zeile2 = f.LineInputString
      f.Close

      ' Weiterer Code

Mein Ansatz für die PC-Runtime

Code:
Dim fs
Dim f
Dim mode
Dim pfad

pfad = "F:\Ordner\"

    ' Objekt fuer Filehandling erstellen
    Set fs = CreateObject("Scripting.FileSystemObject")
    
    ' Nichts machen wenn das Verzeichnis fehlt
    If fs.dir(pfad) <> "" Then 
      
      Set f= CreateObject("WScript.Shell")
      mode = 1 ' lesen
      f.open pfad + "data", mode
      zeile1 = f.LineInputString
      zeile2 = f.LineInputString
      f.Close

      ' Weiterer Code

Irgendwas klappt da nicht. Glaube ich steh einfach nur aufm Schlauch und brauche andere Befehle.

Grüße

Marcel
 
Hallo Marcel,

hast Du da auch die Beiträge 2 und 3 gelesen? Da findest Du die direkte Gegenüberstellung der WinCE- und Win32-Operationen in Praxis-Code.

Dein Code für PC-Runtime sollte so aussehen:
Code:
pfad = "Storage Card USB\Ordner\"
    ' Objekt fuer Filehandling erstellen
    Set fs = CreateObject("Scripting.FileSystemObject")
    
    ' Nichts machen wenn das Verzeichnis fehlt
    If fs.FolderExists(pfad) Then
      
      mode = 1 ' lesen
      Set f = fs.OpenTextFile(pfad & "data", mode, False)
      zeile1 = f.ReadLine
      zeile2 = f.ReadLine
      f.Close

      ' Weiterer Code

PS: Zeichenfolgen verkettet man in VB.. vorzugsweise mit & (nicht mit +).

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Man was hab ich denn gesoffen?

ich hab, warum auch immer, nur die FileSystemobjects etc ersetzt.
Muss da irgendwo durcheinandergekommen sein bei den Beiträgen *confused*

Wenn man sich den Beitrag nochmal in Ruhe durchliest, ist es auch irgendwie auf einmal ganz klar.

Wieso ist es eigtl. so, dass auf CE und x32/x64 unterschiedliche Befehle zum Einsatz kommen?
Wenn ich jemand wie MS wäre, würde ich das Plattformübergreifend identisch machen...

Grüße

Marcel
 
Das CreateObject("Scripting.FileSystemObject") startet ein ActiveX. WinCE unterstützt keine ActiveX. Außerdem unterstützt das WinCE-Filesystem nicht alles, was in der "großen" Windows-Welt möglich ist. Daher unterschiedliche DLL bzw. unterschiedliche Methoden.

Harald
 
uuund weiter gehts.

Ich will Dateien in einem Ordner kopieren. Der Ordnerpfad ist bekommt, und der Zielpfad auch. Die Anzahl und die Namen der Dateien sind unbekannt.

Mit diesem Beitrag gibt es mal wieder etwas für CE:

http://www.sps-forum.de/faq/41723-wincc-flex-vbscript-wince-move-bzw-dateien-kopieren.html

Leider gibt es die Funktion DIR nicht 1:1 bzw. ich finde nichts passendes. Wie man ggf. merkt bin ich mit VB nicht wirklich fit.

Ich habe folgendes gefunden, was passend klingt, aber einen Fehler auswirft:

Code:
fs.copyflolder source, dest, overwrite

Grüße

Marcel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hast Du in Deinem Skript das "CopyFolder" auch so falsch geschrieben wie hier?
Wie genau lautet die Programmzeile(n)?
Wie lautet die Fehlermeldung?
(Was genau wolltest Du eigentlich tun?)

Marcel, Du weißt doch wie das hier läuft. Wenn man eine fundierte Antwort will, dann muß man auch detailliertere Angaben liefern als blos "funktioniert irgendwie nicht" und "wirft einen Fehler" ...
Vermutlich sagt Dir die Fehlermeldung genau was schiefgelaufen ist.


Die CopyFolder-Methode kopiert einen Ordner mitsamt allen enthaltenen Unterordnern und Dateien. Die Quelle- und Ziel-Angaben müssen Ordnernamen sein.

Wenn Du mehrere Dateien nach Muster (z.B. "2015*.csv") oder alle Dateien ("*.*") eines Ordners in einen anderen Ordner kopieren willst, dann ist die CopyFile-Methode besser geeignet.
Code:
fso.CopyFile Quelle, Ziel[, Überschreiben]


Entsprechungen zur WinCE-Dir-Methode:
- FileExists (eine bestimmte Datei existiert?)
- FolderExists (ein bestimmter Ordner existiert?)
- GetFolder --> Files --> Files-Auflistung aller Dateien in einem Ordner
- GetFolder --> SubFolders --> Folders-Auflistung aller Unterordner in einem Ordner

Details und Codebeispiele findest Du in der vorzüglichen VBS-Hilfe von WinCC flexible.

Harald
 
Hallo Harald,

ich gelobe Besserung :) Hier ist es grad etwas stressig, und dann verleitet das einen mal dazu schnell mal etwas runter zu tippen.

Also hole ich mal ein wenig aus.

Was habe ich vor?

Ich möchte alle Dateien aus dem Ordner D:\MeineQuelle\ nach F:\MeinZiel\ kopieren.
Es handelt sich um die Jobs von einer Cognex Kamera, daher haben alle die Dateiendung *.job (sehr kreativ).

Mein Ansatz war wie erwähnt (mit korrekter, aber mir gerade unbekannter, Schreibweise)

Code:
fs.copyflolder source, dest, overwrite

Was zu einer Fehlermeldung führte "Fehler in Script "kopieren" in Zeile 67. (Daher habe ich keine Details liefern können).
Da ich wie gesagt etwas unter Feuer stehe, muss ich mich noch mit der Diagnose beschäftigen, und mal die Rückgabe auswerten.

Ich werde aber als Erstes die von Dir erwähnte CopyFile Methode probieren.

Da ich mit dem TIAP arbeite, habe ich die schöne VBs Hilfe nicht :( Auf diesem System ist auch kein Flex installiert... muss ich also
mal ne VM rauskramen und gucken was die Hilfe so hergibt. (Warum hat die es nicht ins TIAP geschafft wenn die so gut sein soll?)

Sehe ich es dann richtig, dass ich es wie folgt umsetzen müsste:

Code:
fso.CopyFile "D:\MeineQuelle\*.*", "F:\MeinZiel\", false

Ich werde Morgen berichten :) Danke für Deine Hilfe und umsicht ... bin ja schon ein paar Tage hier unterwegs und sollte es eigtl. wissen
wie man einen gescheiten Beitrag verfasst.


Grüße

Marcel
 
Details und Codebeispiele findest Du in der vorzüglichen VBS-Hilfe von WinCC flexible.

Auch ein Siemens Problem, Marcel arbeitet bestimmt mit TIA,
aber in TIA wird die Hilfe wie wir Sie aus der Classic Welt kennen
nicht intregiert. Also muss man zwei Softwaren starten um Arbeiten
zu können, eine um zu 'Scripten' und die andere um die 'Hilfe' zu
nutzen. Das nenne ich mal Total intregiert ... Danke Siemens!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Da ich mit dem TIAP arbeite, habe ich die schöne VBs Hilfe nicht :( Auf diesem System ist auch kein Flex installiert... muss ich also
mal ne VM rauskramen und gucken was die Hilfe so hergibt. (Warum hat die es nicht ins TIAP geschafft wenn die so gut sein soll?)
OK, dann gehe nochmal in die von Dir im Beitrag #1 verlinkte FAQ ans Ende des ersten Beitrags und downloade Dir die von Volker freundlicherweise angehängte "VBScript Sprachverzeichnis.zip" und entpacke diese auf Deinem TIA-Rechner.
Hier kann man sich eine "Windows Script Host Referenz" als CHM-Hilfedatei herunterladen, diese enthält auch die VBScript-Referenzen wie bei WinCCflex.

Es ist mir schleierhaft, warum Siemens die VBS-Hilfe nicht mehr mitinstalliert. Wo die doch sogar von Microsoft ist und keine Siemens-Fehler drin sind ;)
Siemens kann nur noch Dokumentationen mit tausenden Seiten, wo man wenn man endlich was gefunden hat, noch nicht mal sehen kann, wofür/welche SPS-Familie die gemachten Aussagen gelten, wenn sie denn nicht sogar falsch sind... und exakte, genaue und vollständige Informationen sind da auch meist gar nicht drin.

Ich möchte alle Dateien aus dem Ordner D:\MeineQuelle\ nach F:\MeinZiel\ kopieren.
[...]
Sehe ich es dann richtig, dass ich es wie folgt umsetzen müsste:

Code:
fso.CopyFile "D:\MeineQuelle\*.*", "F:\MeinZiel\", false
Ja, das sollte Deine Aufgabe erfüllen.

Grüße Harald
 
Hallo Harald, Hallo Helmut,

das ganze muss man nicht verstehen. Bisher kann ich nicht großartig über das TIAP meckern. Für mich macht es das was es soll, und bisher
hat es mich nur einmal richtig verarscht. Aber sowas gutes wie diese Doku einfach nicht mehr rein zu packen, finde ich echt schade.

Aber jetzt zum Positiven! Es funktioniert alles genau so wie ich es brauche, danke für eure Hilfe!

Grüße

Marcel
 
Zurück
Oben