# VB Script in WinCC flexible



## polybassa (17 Februar 2009)

Hi,
weis jemand wie ich ein VB Script für eine MP277er Baugruppe schreibe, das einen Neustart des Panels hervorruft??

MFG


----------



## Garog (17 Februar 2009)

Probiere mal das hier, sollte bei CE auch gehen:


```
Dim OpSysSet, obj
Set OpSysSet = GetObject("winmgmts:{impersonationLevel=impersonate," & _
"(Shutdown)}//./root/cimv2").ExecQuery _
("SELECT * FROM Win32_OperatingSystem" &_
" WHERE Primary=true")

For Each obj In OpSysSet
obj.Win32Shutdown(2)
Next
```

du kannst bei "obj.Win32Shutdown(#)" die # auch durch folgendes ersetzten:


```
0 = Logoff
1 = Shutdown 
2 = Reboot 
4 = Force 
8 = Poweroff
```


----------



## polybassa (19 Februar 2009)

hi, danke für den code.
leider Funktioniert der nicht so ganz.
positiv ist aber das WinCC flexible keinen Fehler meldet. nur das gerät führt das script halt nicht aus.

Weist du vlt noch eine andere Lösung??

mfg


----------



## xhasx (19 Februar 2009)

Ich hab hier nur Pc's und mein Vorschlag wird bei einigen Entsetzen hervorrufen...

...aber wie wärs wenn du dir über ein Relais der Steuerung nen Öffner für zwei Sekunden ansteuerst? (Wenn's auf die schnelle sein muss)

An alle - ich weiß dass ist absolut schwach aber es funktioniert!


----------



## Garog (19 Februar 2009)

polybassa schrieb:


> hi, danke für den code.
> leider Funktioniert der nicht so ganz.
> positiv ist aber das WinCC flexible keinen Fehler meldet. nur das gerät führt das script halt nicht aus.
> 
> ...



Hast du das mal kurz als Runtime auf deinem PC gestartet und probiert ?
Auf meinen System als Runtime geht es.
Bei Windows CE sollte das "eigentlich" auch gehen, wenn kein Fehler kommt ist das ja schonmal eine gute Vorraussetzung 

hast du mal versucht einen Shutdown zu machen oder Force ?

@xhasx

er hat ja ein MP277... da gibt es keinen Knopf den man überbrücken könnte


----------



## xhasx (20 Februar 2009)

Aber man könnte einen "Knopf" oder "Skript" in der Hmi projektieren das die Steuerung veranlasst ein Schütz kurzzeit zu betätigen... Und dieses nimmt dann die Versorgungsspannung vom MP  (Halt nen Öffner dass beim Cpu hochlauf das Panel auf jeden Fall unter Spannung ist)
Ich weiss - sehr unschön!


----------



## polybassa (3 März 2009)

Hi,

Danke für eure Ideen. Die Sache mit dem Relai wollt ich zuerst auch machen, aber das fällt vollkommen flach, weil ich ein MP277 WLan Mobile Panel hab.
Und des Ding hat nen Ein-Taster. Des dumme daran ist, das ich net einfach die Stromversorgung wegnehmen kann und des ding Startet dann wieder, sondern ich muss jedes mal die Taste drücken.... naja egal

Hab jetzt einen USB Stick mit ner netten kleinen exe Datei, die das Panel sofort killt und dann wieder startet. Des ganze ruf ich einfach über "Starte progamm" im Winccflexible auf, und wolla Problem gelöst.

MFG


----------



## polybassa (24 März 2009)

Hi ich bins nochmal. 
Ich hab zwar zuerst gedacht, das sich mein Problem erledigt hat, aber nach etlichen Tests hat sich herausgestellt, das mein exe file ab und zu das Panel dazu bringt sich aufzuhängen. 
Wegen dem vb scribt, gibts vielleicht die Möglichkeit das script für mein Panel anzupassen? 
Ich hab das script auch mal in der pc runtime getestet, da funktionierts wunderbar. Nur halt auf dem Panel nicht. Ich Versteh zwar nichts von scripten, aber kann es sein das du eine Datei die irgendwo hinterlegt sein muss aufrufst? Und die evtl nur in der runtime vorhanden ist? 

Nächste Frage: 
Ich hab in der Systemsteuerung des Panels unter "OP" einen "reboot" Knopf. Gibts vlt irgenwie die Möglichkeit den von wincc aus auszulosen, oder vlt durch ne bat Datei? 

Schon mal danke für eure Hilfe


----------



## JesperMP (25 März 2009)

Garog schrieb:
			
		

> Set OpSysSet = GetObject("*winmgmts*:{impersonationLevel=impersonate," & _
> "(Shutdown)}//./root/cimv2").ExecQuery _
> ("SELECT * FROM Win32_OperatingSystem" &_
> " WHERE Primary=true")


 
_winmgmts_ gehört zu Windows Management Instrumentation (WMI)
WMI funzt nur auf Windows 2000 oder Windows XP:
http://www.microsoft.com/technet/scriptcenter/guide/sas_wmi_jgfx.mspx?mfr=true


> you can write WMI scripts that automate the management of the following aspects of your enterprise:•*Computers based on Windows XP Professional and Windows 2000*


----------



## polybassa (25 März 2009)

JesperMP schrieb:


> _winmgmts_ gehört zu Windows Management Instrumentation (WMI)
> WMI funzt nur auf Windows 2000 oder Windows XP:
> http://www.microsoft.com/technet/scriptcenter/guide/sas_wmi_jgfx.mspx?mfr=true



Ok 
sowas in der Art hab ich mir schon gedacht,
weis jemand obs für WinCE auch so ein WMI oder ähnliches gibt?

Mfg


----------



## Ralle (25 März 2009)

Ich das hier gefunden für C, aber ob das mit VBS und WinCCFlex geht?

http://www.experts-exchange.com/Programming/Languages/C_Sharp/Q_23380535.html

Immerhin kann man ja mal im Panel nach der genutzten DLL suchen.


----------



## polybassa (25 März 2009)

Hi,
also die coredll.dll hab ich in meinem Panel,
nur wie mach ich daraus jetzt ne exe Datei die ich dann aufrufen kann?


----------



## Ralle (25 März 2009)

polybassa schrieb:


> Hi,
> also die coredll.dll hab ich in meinem Panel,
> nur wie mach ich daraus jetzt ne exe Datei die ich dann aufrufen kann?



Du könntest dir von MS die richtigen SDK's für das in den Panels genutzte WinCE (war das V5?) und den richtigen Compiler besorgen (hab ich vor Jahren mal mit den TP270 gemacht, hat sogar funktioniert).

Oder du bekommst raus (ich weiß das leider nicht), ob man die DLL in VBScript einbinden kann und wenn ja, wie man auf die in der DLL enthaltenen Funktionen dann Zugriff nimmt.

Vielleicht findet sich hier im Forum noch jemand, der das schon einmal gemacht hat.


----------



## polybassa (26 März 2009)

Hi,

ich hab bei ner Seite von Microsoft ein VB Code gefunden, der einen Neustart von WinCE V5 auslöst. 
Problem bei der sache is nur das ich den nicht einfach so in WinCC flexible einbinden kann.
In dem Code sind, wenn ich alles richtig interpretiere, vier Unterprogramme.
Das letzt Unterprogamm ist für mich unwichtig. Is glaub ich blos des ausgeben von am Meldefenster.
Der eigentliche Restart findet glaub ich in der Reset pocket pc funktion statt. Dabei wird glaub ich irgendein wert aus dem ctlcode in den IOKernel geschoben. 
Weis jemand wie ich aus den drei Funktionen eine Funktion mach die ich unter Wincc flexible einbinden kann?



> Private Const FILE_DEVICE_HAL As Integer = &H101
> Private Const METHOD_BUFFERED As Integer = 0
> Private Const FILE_ANY_ACCESS As Integer = 0
> 
> ...


 
Mfg 
polybassa


----------



## quax (27 März 2009)

Du könntest doch den VB Code in ein *.exe file kompilieren und dieses dann von WinCC flex aus starten ?

Gruss


----------



## xhasx (27 März 2009)

Hallo

Ich schau mir das Spielchen jetzt schon ne Weile an...
Ich behaupte mal dass man in VBS (man beachte das S) keine DLL's einbinden kann. Wenn du aber die DLL als Eigenes Control (Drag and Drop auf ein Bild ziehen) einbinden kannst, kannst du mittels Skripten auf das Objekt und deren Funktionen zugreifen.

Meine Schnelllösung wäre glaub bis zum heutigen das einfachste und billigste. Klar versuche ich soweit es geht alles per SW zu erschlagen - an manchen Punkten wo aber Zeit und Geld ins Spiel kommen kommt man um "Unsaubere" Lösungen nicht vorbei! Ihr müsst Geld haben wenn man sich so lange mit dem Thema beschäftigen kann...


----------



## polybassa (27 März 2009)

@xhasx
Wenn die Sache mit dem Relai funktionieren würd, hätt ichs schon längst gemacht, aber das Problem an der Sache ist, das die Panels einen Ein-Taster haben (so wie ein normaler PC zuhause). Und wenn ich einfach die Versorgungsspannung aus-und einschalte, passiert erstmal garnichts.
Solange bis der Eintaster gedrückt wird. 
Und Blockieren kann ich den Eintaster auch nicht. Sonst passiert des gleiche wie bei deinen PC's. Des Panel fährt ca 5 Sekunden hoch und dann wird es wieder ausgeschalten. 
Da der Taster fest in der Folientastatur des Panels integriert ist kann ich den auch nicht kontaktieren und über ein Relai künstlich einen Einschaltimpuls erzeugen. 
So wenn dir jetzt noch eine weiter Unsaubere Lösung einfällt, dann schieß los.


----------



## xhasx (27 März 2009)

Ups, das wusste ich nicht...
Ich versuch mich mal schlau zu machen... Also irgendwo hab ich noch ein MP370. Das hat keinen Knopf aber CE... Vielleicht bring ich was raus...


----------

