TwinCAT HMI IntelliSense in Visual Studio 2019

Privatprogramm

Level-1
Beiträge
17
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
ich habe ein Problem mit der intelliSense-Funktion bei der TwinCAT HMI, bei der Erstellung einer eigenen Javascript Funktion.

Ich nutze Visual Studio 2019 und die Framework Version 12.752.0.

Wenn ich eine Javascript(function) erstelle und als Übergabeparameter ein Control verwenden möchte, wird dieser Parameter im Code nicht erkannt, sodass ich auch nicht auf Unterfunktionen etc. zugreifen kann.

Ich habe Mal eine Standard Funktion erstellt und unverändert gesnipped (siehe Bild im Anhang).

Das Control Objekt ist: par1 (siehe Bild im Anhang)

Nachdem Punktoperator erscheint die Meldung (siehe Bild im Anhang):
"IntelliSense kann die Genauigkeit dieses Vervollständigungselements nicht ermitteln"

Ich würde mich sehr freuen, wenn jemand da vielleicht eine Idee hat, wie man das beheben kann oder eventuell kennt jemand von euch sogar dieses Problem.

LG
 

Anhänge

  • IntelliSense_Code.png
    IntelliSense_Code.png
    25,7 KB · Aufrufe: 12
  • IntelliSense_Control.png
    IntelliSense_Control.png
    21,6 KB · Aufrufe: 12
Hallo,
meines Wissens geht das nicht mit JavaScript. JavaScript ist untyped.
Mit TypeScript Functions funktioniert es.
Grüße,
Stefan
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo @Hack , danke für die schnelle Rückmeldung !
ich habe zusätzlich noch den TwinCAT Support angeschrieben und eine ähnliche Rückmeldung bekommen.

"Guten Tag,

In einem JavaScript haben Sie keine Typenüberprüfung. Das Bedeutet alle Parameter sind vom Type Any und können somit nicht über den Punktoperator ergänzt werden.

Wenn Sie mit Typen und definierten Objekten arbeiten wollen müssen Sie Type Script Functions verwenden. In diesen können Sie die Typen der Parameter definieren und somit auch mit dem IntelliSense arbeiten."


Jetzt habe ich das gleiche Mal mit einer Typescript(Function) Datei probiert, aber auch wenn ich hier den Datentypen Control verwende, habe ich keinen Zugriff auf die Objektparameter des Controls. Auch hier ist der Typ "any":
1645626301592.png
1645626061391.png
Gehe ich vielleicht ganz falsch an die Sache dran ?

Ich möchte eine Funktion Schreiben, die in Abhängigkeit einer beliebigen Variable das Control "Textblock" ändert.
Also sowas wie:
- Textinhalt
- Hintergrundfarbe
- etc.

Die Funktion möchte ich dann unter im Control selber unter "Common--> Text" aufrufen bzw. ein "function-binding" erstellen.

LG
 

Anhänge

  • 1645626180107.png
    1645626180107.png
    21,2 KB · Aufrufe: 2
Hallo,
ich kann dir nicht sagen wieso dort any eingetragen wird. Wenn du es manuell änderst funktioniert es.
1645628656709.png
Alternativ kannst du auch in der Funktion einen TypeCast machen, danach geht es auch.

Gruß
 
Hallo @Hack,

sorry für die späte Rückmeldung und danke für deinen Bespielcode. So klappt es jetzt auch bei mir (also beide Varianten).

Ich hatte Zeitweise noch das Problem, dass ich den Datentyp "Control" als Binding- "Yes, pass symbol reference" deklariert hatte. Daraufhin erschien eine Fehlermeldung, weil das übergebene Control innerhalb der Funktion nicht vorhanden/erkannt wurde.

Die Javascriptfunktion hat anschließend auch funktioniert, nur halt ohne intelliSense.
Ohne intelliSense zu arbeiten ist mir persönlich zu fehleranfällig, daher werde ich erstmal weiterhin Typescriptfunktionen verwenden.

Nochmals, Vielen Dank.

LG
 
Zurück
Oben