(23.05.2013, 08:23)therme schrieb: [ -> ]Ich bekomms nicht hin.
Im Script.
HString=(VDF.ReadInt(2,24)) 'Intager
HString=Hex(VDF.WriteWord(2,25)) 'In Hex gewandelt
Was mache ich falsch?
Leider stimmt da gar nichts in Ihrem Script.So sollte s funktionieren:
ScriptCode schrieb:Wert1=VDF.ReadInt(2,24)
HString=""
HString=Hex(Wert1)
Wert2=val("&H" + HString)
VDF.Writeint 2,25,wert2
(23.05.2013, 16:51)S.Rings schrieb: [ -> ] (23.05.2013, 08:23)therme schrieb: [ -> ]Ich bekomms nicht hin.
Im Script.
HString=(VDF.ReadInt(2,24)) 'Intager
HString=Hex(VDF.WriteWord(2,25)) 'In Hex gewandelt
Was mache ich falsch?
Leider stimmt da gar nichts in Ihrem Script.So sollte s funktionieren:
ScriptCode schrieb:Wert1=VDF.ReadInt(2,24)
HString=""
HString=Hex(Wert1)
Wert2=val("&H" + HString)
VDF.Writeint 2,25,wert2
Bei dem Beispiel bekomme ich immer einen Fehler.
Ausschnitt aus meinem Script
VDF.WriteInt 1,0iJahr
wert1=VDF.ReadInt(1,0)
HString=""
Hstring=Hex(wert1)
wert2=val("&H + HString) 'Hir habe ich eine Fehlermeldung
VDF.WriteInt 2,24,wert2 'Hir möchte ich die VDF 1,0 in Hex Convertiert haben.
bei .... ("&h" + ...) evtl. das zweite 'Anführungszeichen' ( " ) vergessen? Oder nur hier beim Beispiel?
(27.05.2013, 16:36)mepkub schrieb: [ -> ]bei .... ("&h" + ...) evtl. das zweite 'Anführungszeichen' ( " ) vergessen? Oder nur hier beim Beispiel?
Sorry, hab es nur hier im Beispeil falsch.
(28.05.2013, 10:53)therme schrieb: [ -> ] (27.05.2013, 16:36)mepkub schrieb: [ -> ]bei .... ("&h" + ...) evtl. das zweite 'Anführungszeichen' ( " ) vergessen? Oder nur hier beim Beispiel?
Sorry, hab es nur hier im Beispeil falsch.
Was ist denn eigentlich das Zielsystem
und wie lautet denn der Fehler ?
Mir ist im übrigen aufgefallen das unter Windows CE (Also VTP-C Modelle)
die automatische Konvertierung von Double in Integer nicht vom Framework
unerstützt wird.
Das könnte auch hier zu einem Fehler führen.
Aus der Zeile:
Zitat:Wert2=val("&H" + HString)
muss dann folgendes werden:
Zitat:Wert2=Cint(val("&H" + HString))
Damit wird die Zahl die die Val() Funktion liefert automatisch in einen
Integer 'gecasted'.
(28.05.2013, 13:29)S.Rings schrieb: [ -> ] (28.05.2013, 10:53)therme schrieb: [ -> ] (27.05.2013, 16:36)mepkub schrieb: [ -> ]bei .... ("&h" + ...) evtl. das zweite 'Anführungszeichen' ( " ) vergessen? Oder nur hier beim Beispiel?
Sorry, hab es nur hier im Beispeil falsch.
Was ist denn eigentlich das Zielsystem
und wie lautet denn der Fehler ?
Mir ist im übrigen aufgefallen das unter Windows CE (Also VTP-C Modelle)
die automatische Konvertierung von Double in Integer nicht vom Framework
unerstützt wird.
Das könnte auch hier zu einem Fehler führen.
Aus der Zeile:
Zitat:Wert2=val("&H" + HString)
muss dann folgendes werden:
Zitat:Wert2=Cint(val("&H" + HString))
Damit wird die Zahl die die Val() Funktion liefert automatisch in einen
Integer 'gecasted'.
Das Zielsystem ist die S7 und auf dem PC ist Windows XP.
Um Unklarheiten zu besietugen.
Mein Vorhaben ist es die Daten Jahr Monat usw. vom PC die ja alle ein Intager sind in Hex zu wandeln da die S7 einen BCD Code erwartet.
iJahr=Year(Now) ' Lade Year in iJahr also das Jahr 2013
If iJahr>2000 Then iJahr=iJahr-2000 ' Int= 13
VDF.WriteInt 1,0,iJahr 'Ist das Jahr vom PC als Intager Bin= 1101
wert1=VDF.ReadInt(1,0) 'Schreibe VDF.ReadInt(1.0) in wert1
HString="" 'Macht einen String aus wert1 ??
Hstring=Hex(wert1) 'Wandle wert1 in Hex ??
VDF.WriteInt 2,24,HString 'Hir kommt kein Hex raus und auch kein Intager? Möchte Bin=0001 0011 für BCD 13
Bekomme aber bei VisAM eine Fehlermeldung.: System-Fehler/Error
Nr./No.:13in Modul:1809
(29.05.2013, 11:32)therme schrieb: [ -> ]Das Zielsystem ist die S7 und auf dem PC ist Windows XP.
Um Unklarheiten zu besietugen.
Mein Vorhaben ist es die Daten Jahr Monat usw. vom PC die ja alle ein Intager sind in Hex zu wandeln da die S7 einen BCD Code erwartet.
iJahr=Year(Now) ' Lade Year in iJahr also das Jahr 2013
If iJahr>2000 Then iJahr=iJahr-2000 ' Int= 13
VDF.WriteInt 1,0,iJahr 'Ist das Jahr vom PC als Intager Bin= 1101
wert1=VDF.ReadInt(1,0) 'Schreibe VDF.ReadInt(1.0) in wert1
HString="" 'Macht einen String aus wert1 ??
Hstring=Hex(wert1) 'Wandle wert1 in Hex ??
VDF.WriteInt 2,24,HString 'Hir kommt kein Hex raus und auch kein Intager? Möchte Bin=0001 0011 für BCD 13
Bekomme aber bei VisAM eine Fehlermeldung.: System-Fehler/Error
Nr./No.:13in Modul:1809
Hallo Therme,
es wäre ja schon früher wichtig gewesen für welches Zielsystem/Plattform (damit meinten wir Betriebsystem) und welche
VisAM Version sie verwenden.
Nun ist klar das Sie "Visam Win32" verwenden und nicht die DotNet Version(eigentlich auch das falsche Unterforum, aber egal) .
Da ist es ein klein wenig anders, und der Fehler im Scripteditor klar weil dort noch kein wert in wert1 stand.
Hier das funktioniert unter "Visam Win32"
Code:
iJahr=Year(Now) ' Lade Year in iJahr also das Jahr 2013
VDF.WriteInt 1,0,iJahr
If iJahr>2000 Then iJahr=iJahr-2000 ' Int= 13
VDF.WriteInt 1,1,iJahr 'Ist das Jahr vom PC als Intager Bin= 1101
wert1=VDF.ReadInt(1,1) 'Schreibe VDF.ReadInt(1,1) in wert1
aWert=Right("0000" & Cstr(wert1),4) '4 stellig rechtsbündig
wert2= Cint("&H"+awert)
VDF.WriteInt 2,24 , wert2'Möchte Bin=0001 0011 für BCD 13
Im Anhang noch ein voll lauffähiges Projekt für die BCD Umwandlung.
Besten Dank für die Antwort.
Das Script funktioniert jetzt super.
Ich möcht noch die Zeit automatisch einmal wöchentlich abgleichen, den Button zum übertragen (sagen wir am Mo 13:00 Uhr) für einen Zyklus betätigt wird.
(25.06.2013, 14:52)therme schrieb: [ -> ]Besten Dank für die Antwort.
Das Script funktioniert jetzt super.
Ich möcht noch die Zeit automatisch einmal wöchentlich abgleichen, den Button zum übertragen (sagen wir am Mo 13:00 Uhr) für einen Zyklus betätigt wird.
die Funktion:
gibt Ihnen den Tag als Zahl zurück.
Genauso erhalten sie die aktuelle Stunde mit: