WinCC Flex. Daten per VBS ins Netzwerk kopieren

Feldmann

Level-1
Beiträge
35
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

ich habe mal eine Frage.
Ich habe ein MP277 in dem ich eine Protokolldatei (.csv) zusammenbaue.
Diese möchte ich gerne mit einem Trigger an einen Netzwerkpartner schicken.

Wie heißt der Befehl dazu? Hab nichts gefunden

Danke für eure Unterstützung
 
Hallo,
die Methode, die du verwenden müßtest heißt FILECOPY.
Wie das verwendet wird findest du in der VB-Script-Sprachreferenz von WinCE oder in der FAQ hier .
Den Trigger, der das Ganze startet, mußt du dir schon selbst erzeugen - vielleicht ein Bit, das gesetzt wird und bei dem du "bei Wertänderung" desselben das Copy-Script startest ...

Gruß
LL
 
Hallo,

danke für die Antworten,

die Funktion FileCopy klappt nicht.

die funktion wird nicht durchlaufen. Was kann das für gründe haben?

Hier mal der Funktionsinhalt

If SmartTags("MP 277.Bool_Variablen.Daten_Senden") = True Then

Dim Dateiname, Ablageort, Zielordner, Jahrestag
Dim fso

Set Jahrestag = SmartTags("MP 277.Seriennummer.Tag_im_Jahr")
Dateiname = "Tabelle Tag_" & Jahrestag
Ablageort = "\My Dokuments\OrdnerX\" & Dateiname & ".csv"
Zielordner = "\\NotebookXY\OrdnerX\"

Set fso = CreateObject("Scripting.FileSystemObject")
fso.MoveFile Ablageort, Zielordner

SmartTags("MP 277.Bool_Variablen.Daten_Senden") = False

End If
 
Zuletzt bearbeitet:
Mach Dir mal in das Vorlage-Bild ein Meldefenster rein für die Meldeklasse System, damit Du die
Runtime-Errors angezeigt bekommst.
Zum Debuggen empfiehlt es sich auch, im Programmablauf Panelvariablen (SmartTags) zu beschreiben
und/oder Systemmeldungen auszugeben.

Da Dein Script auf dem MP277 laufen soll, mußt Du die Filefunktionen für WinCE benutzen.

Code:
[COLOR="green"]'MP277 WinCE[/COLOR]
    [COLOR="RoyalBlue"]Set fso = CreateObject("FileCtl.FileSystem")[/COLOR]
    ShowSystemAlarm "Filesystem-ActiveX-Objekt wurde erstellt"
    [COLOR="RoyalBlue"]fso.FileCopy "\FLASH\meinedatei.csv", "\\computername\sicher\"[/COLOR]
    ShowSystemAlarm "meinedatei.csv wurde kopiert"
Code:
[COLOR="Green"]'Simulation unter PC-Windows[/COLOR]
    [COLOR="royalblue"]Set fso = CreateObject("Scripting.FileSystemObject")[/COLOR]
    ShowSystemAlarm "Filesystem-ActiveX-Objekt wurde erstellt"
    [COLOR="RoyalBlue"]fso.CopyFile "C:\FLASH\meinedatei.csv", "D:\sicher\"[/COLOR]
    ShowSystemAlarm "meinedatei.csv wurde kopiert"
Gruß
Harald
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
folgende Meldung erscheint:
"The system cannot find the path specified
'in skript <Daten_Senden> in Zeile 14

Zeile 14: fso.filecopy "\My Documents\Ordner\Datei.csv", "\\MeinRechner\Ordner"

was ist hier falsch?
 
es fängt schon mal damit an, das du mit wince arbeitest.
da ist das anders. das steht aber auch FAQ -----> hier

Set f= CreateObject("filectl.file")
Set fs = CreateObject("filectl.filesystem")

der copierbefehl sollte dann so aussehen
fs.filecopy t_root_path & "\"&zs_jahr&"\BS_"&zs_jahr&"-"&zs_monat&".csv", t_net_path &"\Betriebsstunden\"&zs_jahr&"\BS_"&zs_jahr&"-"&zs_monat&".csv"
 
"The system cannot find the path specified
'in skript <Daten_Senden> in Zeile 14

Zeile 14: fso.filecopy "\My Documents\Ordner\Datei.csv", "\\MeinRechner\Ordner"
Die Meldung ist doch eindeutig, entweder wird "\My Documents\Ordner\Datei.csv" oder "\\MeinRechner\Ordner" nicht gefunden.

Das MP277 hat einen Windows Explorer (Start > Programs > Windows Explorer). Damit kannst Du die Pfade überprüfen.

Ich vermute, der Netzwerkpfad wird nicht gefunden. Wenn das so ist, dann siehe die in meinem Beitrag #3 verlinkte FAQ.

Oder Dein tatsächliches "Datei.csv" enthält irgendwelche unzulässigen Sonderzeichen im Dateiname.
Versuche doch erst einmal, eine ganz einfache Datei "Test.txt" (oder so) innerhalb des Panels zu kopieren.

Gruß
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
VBS-Skript FileCopy

Aus meinem WCCF/VBS-Fundus:
Code:
[COLOR="Green"]' Sub FileCopy(SourceFile, DestFile) kopiert eine Datei
' Skript kann unter Panel-WinCE und PC-Windows laufen
'[/COLOR]
[COLOR="Blue"]Dim[/COLOR] fso
[COLOR="blue"]If[/COLOR] SmartTags([COLOR="Sienna"]"_System\!_RT-Sim_!"[/COLOR]) [COLOR="blue"]Then[/COLOR] [COLOR="Green"]'PC-Windows[/COLOR]
    [COLOR="blue"]Set[/COLOR] fso = [COLOR="blue"]CreateObject[/COLOR]([COLOR="sienna"]"Scripting.FileSystemObject"[/COLOR])
    fso.CopyFile SourceFile, DestFile
[COLOR="blue"]Else[/COLOR] [COLOR="green"]'WinCE[/COLOR]
    [COLOR="blue"]Set[/COLOR] fso = [COLOR="blue"]CreateObject[/COLOR]([COLOR="sienna"]"FileCtl.FileSystem"[/COLOR])
    [COLOR="green"]'fso.FileCopy erzeugt Runtime-Error, wenn DestFile schon existiert[/COLOR]
    [COLOR="blue"]If[/COLOR] fso.Dir(DestFile) <> [COLOR="sienna"]""[/COLOR] [COLOR="blue"]Then[/COLOR] fso.Kill DestFile
    fso.FileCopy SourceFile, DestFile
[COLOR="blue"]End If[/COLOR]
Damit ich meine Panel-Projekte komplett unter Windows XP testen/simulieren kann,
habe ich im WCCflexible-Projekt eine interne Panel-Variable "_System\!_RT-Sim_!"
vom Typ Byte, deren Startwert ich auf 0 oder 1 festlege, je nachdem, ob die Runtime
auf dem Panel oder auf dem WinXP-Testsystem laufen soll:
0 = RT auf WinCE-Panel / >=1 = RT auf PC (Simulation/Test)

Gruß
Harald
 
Moin,

Tausend Dank noch mal für die hilfreichen Antworten.

Mittlerweile hab ich es auch geschafft. Es funzt!! :D

Jetzt wäre halt noch interessant, vor dem Senden zu prüfen, ob der Netzwerkteilnehmer erreichbar ist. Ansonsten macht das Senden keinen sinn.

Auch hier eine Frage an die Gemeinschaft.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Lesehilfe

Zitat aus der hier schon mehrfach verlinkten FAQ:
Code:
' Function FolderExist(Path) prüft, ob ein angegebener Ordner existiert
' z.B. ob eine MemoryCard im angegebenen Slot steckt
' oder der angegebene Netzwerk-Pfad erreichbar ist
Das Prüfen der Erreichbarkeit eines Netzwerkpfades kann aber mehrere Sekunden dauern.

Gruß
Harald
 
Hallo noch mal

@ Volker: Ich brauche eine Funktion "CopyFile" für Win CE. Die Befehle die in deinem Link stehen sind nicht für CE.

Da habe ich "set fso = createobject("SCRIPTING.FileSystemObject")"
In Win CE ist das nicht SCRIPTING sondern FILECTL.

Das haut nicht hin. Bin mir nicht mal sicher, ob FileSystemObject überhaupt klappt.

Die Hilfe von WinCC Flex. beschränkt sich dort auch nur auf die Scripting-Variante.

Was mache ich falsch??
 
Ich brauche eine Funktion "CopyFile" für Win CE.
Dann blättere doch einfach mal in diesem Deinem Thread eine Seite zurück und schau Dir den Beitrag #9 an:
(Ich hatte mir damals extra Mühe mit dem Syntax-Highlightning gegeben.)
VBS-Skript FileCopy
Aus meinem WCCF/VBS-Fundus:
Code:
[COLOR="Green"]' Sub FileCopy(SourceFile, DestFile) kopiert eine Datei
' Skript kann unter Panel-WinCE und PC-Windows laufen[/COLOR]
...

Was mache ich falsch??
Was hat Volker Dich im Beitrag #11 gefragt?
Lesen können ist echt ein Vorteil. ;)

Gruß
Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin,

ich bekenne mich schuldig in allen Punkten.
hab noch nicht so viel erfahrung mit skripten in WinCC Flex.

ich habe auch mal versucht mir den Microsoft Script Debugger herunterzuladen.
Achtung: Installation hat funktioniert.
Jetzt das Problem: ich verstehe nicht ganz, wie ich den Debugger in WinCC Flex verwende?

Nehme auch gerne zu diesem Thema euren Rat in Anspruch...

Danke und schönes Wochenende
 
ich bekenne mich schuldig in allen Punkten.
Na gut, Hauptsache Du hast nun gefunden was Du brauchst. :-D

Zum Microsoft Script Debugger gibt es im WinCC flexible Information System (Hilfe) ein paar Kapitel:
Arbeiten mit WinCC flexible > Systemfunktionen und Runtime Scripting > Debuggen
(oder im Index nach Debuggen suchen).

Zum Debugger bedienen
Wie Sie den Debugger bedienen, erfahren Sie in der Dokumentation des verwendeten Debuggers.
Detaillierter kann ich Dir da nicht helfen, ich habe noch keinen Debugger in WCCf benutzt
(und auch nicht gebraucht).

Nehme auch gerne zu diesem Thema euren Rat in Anspruch...
Das kannst Du gerne machen, Du brauchst nur konkrete Fragen stellen. Dann wird sicher jemand antworten.

Gruß
Harald
 
Brauche noch mal hilfe

Hallo Harald,

vielleicht kannst du mir noch mal helfen.

ich habe folgendes Problem. Es kann sein, dass eine zeit lang das Netzwerk nicht vorhanden ist, dann schreibe ich die Daten zur zeit unter My Documents\... ab. Wenn das Panel dann einmal abgeschaltet wurde, sind alle Daten verloren.
Jetzt habe ich es so gemacht, dass ich die Daten auf der Storage Card MMC speicher. Das klappt sogar :)
nur bekomme ich jetzt beim Verschieben der Daten folgende Meldung:
"The System cannot move the File to a different disk drive". Wie gehe ich jetzt damit um?
ich habe folgendes:
dim fs
set fs = createobject("FileCtl.FileSystem")
fs.MoveFile "\Storage Card MMC\Ordner\Datei.csv", "\\MeinNotebook\Protokoll\"

was mache ich denn jetzt schon wieder falsch?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Schönen guten Morgen,

MoveFile
Function:​
This method renames an existing file or a directory, including all its subdirectories.

Syntax:​
filesystem.MoveFile PathName, NewPathName

daher Funktion FileCopy verwenden! Wenn man die Source-Datei nicht mehr benötigt, kann man diese mit "Kill" löschen.

FileCopy
Function:​
This method copies an existing file to a new file.

Syntax:​
Filesystem.FileCopy PathName, NewPathName

Kill
Function:​
This method deletes files from a disk.

Syntax:​
filesystem.Kill pathname

Wenn ich mich nicht täusche, findest du die Beschreibungen der Scriptfunktionen in Volkers Link in der Datei "VBScript für Windows CE"

 
Zurück
Oben