TIA TP900 Comfort Script USB

Matze001

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

es wird mal wieder lustig. Ich habe Ideen :sw14:


Mein Gedankenspiel ist folgendes:

Nach dem Stecken eines USB-Sticks soll ein Script ausgeführt werden, welches eine Textdatei auf diesem Stick ausliest und als nice to have noch alle Rezepturen mit aktuellem Zeitstempel archiviert.

Dazu folgende Fragen:

1. Gibt es die Möglichkeit zu erkennen ob ein USB-Stick gesteckt wird? Im Aufgabenplaner finde ich dazu nichts, ich könnte zwar jede Minute das Script starten und prüfen ob der Ordner verfügbar ist.
Aber das ist ja nicht wirklich schön, und im schlimmsten Fall dauert es bis zu 59 Sek. bis der Stick erkannt wird. Falls das nicht klappt muss halt ein Button her, aber automatisch wäre chick!

2. ExportiereDatensätze gibt es ja als Ereignis. Wie setze ich das in einem Script um?

3. Kann ich Meldungen direkt in einem Script absetzen oder muss ich eine interne Variable anlegen die ich dann als Bitmeldung verknüpfe?

Wäre super wenn ihr Ideen hättet! Danke!

Grüße

Marcel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

diese Abfrage habe ich natürlich drin.
Ich will nicht wissen ob ein Stick gesteckt ist wenn mein Script läuft, sondern ein Script aufrufen wenn der Stick gesteckt wird.

Grüße

Marcel
 
hallo,

ohne Hilfsskript welches dir sagt das ein USB-Gerät angesteckt ist, wird sich nichts tun.

Ist selbst unter Windows nicht ganz einfach zu lösen.

MfG
 
So weiter geht es. Habe nun ein Panel zum spielen da...

Folgendes hat sich ergeben:

1. Nagut

2. steht noch aus!

3. ShowSystemAlarm "Hier könnte Ihre Werbung stehen!"

Neu hinzugekommen:

4. Ich bekomme einen String z.B. "DiesisteinString09". Mich interessiert die 09 am Ende des Strings. Wie kann ich die in einem VB Script vom Rest des Strings trennen und ggf. nach INT wandeln (meinetwegen auch den Byte wert des ASCII Chars, bin noch nicht 100% sicher ob es bei INT oder DINT bleiben wird...).

Grüße

Marcel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
4. Ich bekomme einen String z.B. "DiesisteinString09". Mich interessiert die 09 am Ende des Strings. Wie kann ich die in einem VB Script vom Rest des Strings trennen und ggf. nach INT wandeln (meinetwegen auch den Byte wert des ASCII Chars, bin noch nicht 100% sicher ob es bei INT oder DINT bleiben wird...).

Code:
MeineZf = Right("DiesisteinString09", 2)

MeineZahl = CInt(MeineZf)
 
Nachtrag zu 2:

Du kannst im Script Editor, Rechts oben, Systemfunktionen auswählen.
Dor findest du bestimmt auch die Funktion 'ExportiereDatensatz', diese
kannst du gleich mit Parameter befüllen und dann den Button 'Einfügen'
(Oder so ähnlich) drücken. Dann wird die Systemfunktion an der Cursor
Position im richtigen Syntax eingefüght.
 
So ein Update...

1. Mache ich gerade indem ich einen Blinktakt auf eine Variable gebe (2 Sek) und immer bei Wertänderung (Also jede Sekunde) das Script anschubse das schaut ob der Ordner "Storage Card USB\bla" vorhanden ist und wenn ja etwas tut, wenn nein Script Ende. Dadurch rennt zwar jede Sekunde das Script, aber bisher merke ich keine Einschränkung (Scripte lassen sich nicht unterbrechen etc).

2. Erledigt -> Danke RN

3. Hab das drin was ich geschrieben hatte ShowSystemAlarm "Hier könnte Ihre Werbung stehen!" ... kommt aber keine Meldung... muss mal gucken ob ich meine Meldeanzeige falsch eingestellt habe...

4. Die Lösung von RN funktioniert. Kaum gefreut, dass es tut einen Fehler in meinem makellosen Plan entdeckt... ich muss mehrere Stellen im String abfragen. In SCL hätte ich das nun als Array of Char gemacht und jedes Zeichen einzeln behandelt... geht das in einem VB Script auch? (Elegant) an was ich denke ist statt Left und Right eine Operation bei der ich links und rechts abschneide, also zwei Grenzen setze...

Grüße

Marcel
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es gibt da auch noch 'mid', wenn die Deppen von Siemens nicht die Script
Hilfe aus Flexible in TIA rausgeschmissen hätten, könntest du mit F1
schnell den Syntax lesen. Aber bei TIA ist die Devise 'Wir verschlechtern die
Software, damit wir den Kunden Ärgern können'
 
Man RN was würde ich nur tun... hab mir schon angewöhnt bei google nur nach vb zu suchen. In Zukunft mach ich lieber Flex auf :-D

Vielen Dank....

So aus dem Bauch raus würde ich es jetzt so machen:

Code:
dim string1
dim chars(20)
dim cnt_i

string1 = "test123"

; Chars initialisieren
for cnt_i = 0 to 19

  chars(cnt_i) = ""

endfor

; String Zeichenweise in Char-Array kopieren
for cnt_i = 0 to len(string1)

  chars(cnt_i) = mid(string1,cnt_i, 1)

endfor

somit sollte sich dann das hier einstellen:

chars(0) = t
chars(1) = e
chars(2) = s
chars(3) = t
chars(4) = 1
chars(5) = 2
chars(6) = 3

Ich werde es Morgen mal testen...

Grüße

Marcel
 
Zuletzt bearbeitet:
So wir haben "Morgen"...

es geht viel einfacher mit:

Code:
Encode ZIEL_BYTE_ARRAY, QUELLE_STRING, hmiEncodeUTF16LE

Damit wird der Quell-String in ein Array of Byte (oder USint wenn Interne Variable) kopiert.
Warum auch immer wird nur jedes zweite Byte belegt... aber wir haben es ja ;)

Grüße

Marcel
 
Zurück
Oben