MP 370 Screenshot weiterverarbeiten

maccap

Level-2
Beiträge
96
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe folgendes Problem.

WinCCFlex 2007 mit MP370

Ich möchte mittels Captce screenshots machen und diese definiert auf der Storage Card2 ablegen. CaptCE legt die Shots immer im Systemverzeichnis \ ab und nummeriert diese aufsteigend. Meineswissens gibt es keine Möglichkeit dem Captce direkt zu sagen, dass es die Shots auf der Storage Cars abspeichern soll. Deswegen möchte ich dies selber mit nem Skript machen. Nun bin ich mit VBscript nicht so firm. Habe folgenden Code versucht den ich hier im Forum gefunden habe:

Dim QuellName
Dim ZielName
Dim fs
QuellName = "\*.bmp"
ZielName = "\Storage Card2\"
Set fs = CreateObject("filectl.filesystem")
fs.filecopy QuellName, ZielName

Leider funktioniert das so nicht.
Dann habe ich festgestellt, dass jedesmal wenn ich Captce beende und neu startet, es mit der Nummer 0000 anfängt, falls die Datei mit dier Nummer noch nicht vorhanden ist. Mein Plan nun:
Captce starten, Captce ausführen für Shot, CaptCE schliessen und dann die datei capt0000.bmp auf die Karte kopieren, jedoch mit neuem Namen, der noch nicht vorhanden ist. Dieser kann meinet wegen aus aufsteigenden zahlen bestehen oder lieber aus Datum und Uhrzeit.

Meine Defizite:

wie kann ich das Captce per Skript beenden?

wie kann ich den neuen Dateinamen generieren?

Vielen Dank.

Gruß Mario
 
Kann man eigentlich Programme auf dem MP370 laufen lassen, die mit VS.NET2003 geschrieben sind? DH lääst sich das Panel wie ein PDA über ActiveSync ansprechen und das CompactFramework drauf installieren?

Gruß maccap
 
Zuviel Werbung?
-> Hier kostenlos registrieren
MP370 hat WinCE 3.0, also wird die Software dafür normalerweise mit embedded VC 3 gebaut (MIPSFP), VS2003 dürfte nicht gehen. .NET gibt es dafür AFAIK keins, ActiveSync lässt sich evtl. nachinstallieren (oder man kopiert das Programm einfach per CF-karte oder bastelt sich ein ProSave-AddOn).
 
Also wenn man Wikipedia Glauben schenkt, dann sollt das compact framework ab wince 3.0 laufen. Frage ist nur, ob das Panel eine erweiterbare ce version hat oder ob Siemens was getrickst hat. werde es auf jeden fall nächste woche im büro mal testen.

Gruß maccap
 
melde mich nach 3 wochen urlaub auch mal wieder. ;)

Dim QuellName
Dim ZielName
Dim fs
QuellName = "\*.bmp"
ZielName = "\Storage Card2\"
Set fs = CreateObject("filectl.filesystem")
fs.filecopy QuellName, ZielName

der ansatz ist korrekt. funzt nicht weil ce keine wildcards unterstützt.
versuchs mal so
QuellName = "\capt0000.bmp"
ZielName = "\Storage Card2\capt_" & date & "_" & time & ".bmp"

nach dem umkopieren die capt0000.bmp löschen

zusatzinfo:
die zieldatei darf nicht vorhanden sein. überschreiben geht nicht.
falls zieldatei schon vorhanden mit fs.kill vorher löschen
 
Ich möchte das ganze automatisiert im Hintergrund laufen lassen.

Kann wohl kaum dem Kunden sagen, dass er jedes mal auf nem

Touchpanel diese Orgie zum beenden des Programms durchführt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ob Du das kannst oder nicht interessiert hier wohl nicht, wir sind ja hier ein Forum und kein Plannungsbüro oder?!

Wenn Du diese "Orgie" nicht verkauft bekommst, dann wäre es ja wohl besser dem Kunden zu einem besseren System zu raten...ala Panel PC mit XP/2000 OS. WinCE ist nunmal nicht XP und dort brauch man auch keine Wunder erwarten es ist und bleibt bei der Situation. Oder wie Bohlen schon sagte:"Schweine können auch nicht Stabhochspringen".
 
warum läst du captce nicht einfach aktiv?

im script

captce ausführen.
do
'warten bis capt0000.bmp erzeugt wurde 'If fs.dir
'oder 5 sekunden vergangen sind (zur sicherheit um endlosschleife zu verhindern)
'schleife verlassen
loop
capt0000.bmp wie oben beschrieben kopieren.
capt0000.bmp löschen.

soweit ich weiss, legt captce dann wieder win neues capt0000.bmp an.

einen prozess killen, kann man mit vbscript nicht.
auf meiner hp findest du hier das prog itaskmgr. ob das über eine komandozeilenoption verfügt weiss ich nicht.
 
soweit ich weiss, legt captce dann wieder win neues capt0000.bmp an.

Wenn das so gehen würde, hätte ich ja nicht das Problem. Aber leider ist die Zahl hinten aufsteigend. Nur wenn CaptCE beendet wird und neu gestartet wird fängt es wieder bei 0000 an, sofern diese Datei nicht vorhanden ist. Habs ausprobiert.

Ich denke ich werde es über eine WinCC-Variable lösen, die inkrementiert wird, wenn captce nen shot macht, bzw. auf Null gesetzt wird, wenn die runtime neu gestartet wird. Muss eben davon ausgehen, dass dies nur bei nem reboot geschieht, was auch zur folge hat, dass captce neu gestartet wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Aber leider ist die Zahl hinten aufsteigend.
...
Ich denke ich werde es über eine WinCC-Variable lösen, die inkrementiert wird,
gut, ok.
aber das ist keine gute lösung. das kann schnell mal durcheinandergeraten.

versuchs mal so.

for i = 0 to 9999
if i < 1000 then vor = "0"
if i < 100 then vor = "00"
if i < 10 then vor = "000"
name = "capt" & vor & i & ".bmp"
if fs.dir name then fs.filecopy name, ziel
exit for 'dies evtl weglassen
next

wie zeitaufwändig die schleife ist musst du mal probieren.
 
Vielen Dank für den Verbesserungsvorschlag.

Habe Ihn jetzt so umgesetzt:

Dim i
Dim QuellName
Dim ZielName
Dim fs
Dim var,vor
Dim test
Set fs = CreateObject("filectl.filesystem")
ZielName = "\Storage Card2\capt_" & Day(Now)&Month(Now)&Year(Now)&"_"&Hour(Now)& Minute(Now)&Second(Now) & ".bmp"
For i = 0 To 9999
If i < 1000 Then vor = "0"
If i < 100 Then vor = "00"
If i < 10 Then vor = "000"
QuellName = "\capt" & vor & i & ".bmp"
If fs.dir(QuellName)<> "" Then
fs.filecopy QuellName, ZielName
fs.kill QuellName
End If
Next


Die Performance auf dem MP370 ist auch ausreichend. Das Skript braucht ca. 3s zum ausführen.

Das einzige was noch fehlt, ist die Zeitverzögerung zwischen captce und diesem Skript. Würde gerne 2s vorher warten. Habe es schon mit sleep und wait versucht, kennt der aber nicht. beim googlen war ich leider auch erfolglos.
 
zeitverzögerung

t1 = timer
do
t2 = timer
if t2 - t1 > 2 then exit do
if t2 > 2 and t2 < 4 then exit do 'wegen 0 uhr durchgang
loop
 
Zurück
Oben