Zugriff auf bool-Variable via C#

SteffenP

Level-1
Beiträge
15
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich möchte gerne eine Variable vom Typ bool via C# aus meiner TC3.1 Umgebung lesen können.

Dabei wäre es wünschenswert, wenn ich die Variable direkt ansprechen könnte z.B. (MAIN.Bool1).
Meine Verbindung zum TC3AdsClient steht. Ich lese schon Variablen vom Typ int aus. Jedoch schaffe ich es nicht eine boolsche Variable zu lesen.

Bitte nicht auf die Beckhoff Doku verweisen, die kenn ich schon;)

Hat Jemand eine Idee?

Vielen Dank
 
Mit welcher Funktion versuchst Du die Variable zu lesen und was geht schief?

Bei mir hat ReadAny() eigentlich immer funktioniert.

Also zuerst mit:

Code:
hVar1 = adsClient.CreateVariableHandle("MAIN.Bool1");

nen Handle holen und dann mit:

Code:
xBool = adsClient.ReadAny(hVar1, typeof(Boolean));

lesen.

Gruß Tygan

edit: Oh sehe gerade Du nutzt Twincat3, meine Aussage bezieht sich auf TC2 bin mir nicht sicher ob das da genauso funktioniert...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi, danke für deine schnelle Hilfe :)

Wenn ich so versuche, bekomme ich immer eine Fehlermeldung:
Fehler 1 Der Typ "object" kann nicht implizit in "bool" konvertiert werden. Es ist bereits eine explizite Konvertierung vorhanden. (Möglicherweise fehlt eine Umwandlung.)

Zum Verständnis: Für die Handle Variable habe ich den Type int verwendet und für xbool natürlich bool.
Anscheinend brauche ich einen anderen Datentyp für die Handle Variable. TC verlangt aber an dieser Stelle explizit int und nicht etwa bool.

Irgendwie habe ich da ein generelles Verständnis Problem.
Mit ReadAny , müsste es ja funktionieren, aber wie?

Gruß
Steffen
 
ReadAny gibt ein Object zurück. Wenn du die Rückgabe in eine boolsche Variable schreiben willst, muss du explizit konvertieren.

z.B.

Code:
xBool =  Convert.ToBoolean(ReadAny(hVar1, typeof(Boolean)));
oder
Code:
xBool =  (bool)ReadAny(hVar1, typeof(Boolean));
 
Super Leute! Vielen Dank! Jetzt klappt es!

Hier noch mal die Lösung.

hVar = adsClient.CreateVariableHandle("MAIN.Bool1");
xbool = Convert.ToBoolean(adsClient.ReadAny(hVar, typeof(Boolean)));
 
Zurück
Oben