LabVIEWForum.de
LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6 - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+---- Forum: Datenkommunikation (/Forum-Datenkommunikation)
+---- Thema: LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6 (/Thread-LabVIEW-Netzwerk-Library-mit-Support-fuer-SSL-Ping-und-IPv6)



LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6 - rolfk - 29.04.2010 14:10

Ich habe hier ein OpenG Package geposted das eine Library für LabVIEW 7.1 und neuer für Windows enthält die ähnlich funktioniert wie die eingebauten Netzwerkfunktionen aber verschiedene Extras unterstützt. Wer Interesse daran hat diese anzuschauen kann sie gerne mal downloaden. Bemerkungen und Anregungen sind willkommen.


LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6 - jg - 29.04.2010 20:55

Hört sich interessant an.Top1

Gruß, Jens


LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6 - RoLe - 30.04.2010 08:54

Top1
Super, nun können wir "richtig" Pingen in LabVIEW.

Was ich sehr interessant finde, sind die eigenen Property's.
Irgendwie steht das in den rc und rch File.

Wie macht man das, bzw. wie sind verkettet ?
Hast du da irgenwelche Links/Dokus?


LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6 - rolfk - 30.04.2010 09:31

' schrieb:Top1
Super, nun können wir "richtig" Pingen in LabVIEW.

Also mit einer Einschränkung! Das geht nur wenn der entsprechende Prozess Administratorprivileges hat (oder man die in der ICMP Funktion beschriebenen Registrysettings einstellt, was ich aber ehrlich gesagt noch nicht getestet habe).

Zitat:Was ich sehr interessant finde, sind die eigenen Property's.
Irgendwie steht das in den rc und rch File.

Wie macht man das, bzw. wie sind verkettet ?
Hast du da irgenwelche Links/Dokus?

Sorry das ist alles mit viel trial and error zusammengehackt und ist deutlich kein Feature das NI für Enduser gedacht hat. Vieles da drin funktioniert manchmal nur in bestimmten Kombinationen, obwohl das scheinbar nicht direkt sinnvoll ist. Auch muss man aufpassen da gewisse logische Dinge in 7.1 und 8.0 nicht oder nur scheinbar funktionieren und irgendwann in 8.x plötzlich schon. LabVIEW 8.6 und 2009 unterstützt auch noch ein RCVersion: 4 Format aber ich habe keine Idee was da die Neuerungen sind.

Ich werde mich mal hinsetzen und versuchen das bischen was ich weiss sauber zu dokumentieren, da ich im Moment allerlei schwer lesbare kleine Dokumente habe mit alles ausser sauberer Syntaxbeschreibung. Aber mit dem RC Format alleine ist es noch nicht getan. Die Userdata Refnums (die es auch noch in Tag Form (schaut aus wie ein VISA Refnum, und man kann im selben File keine Generic und Generic Tag Refnums mixen vor LabVIEW 8.2 weil das der Objekt Parser scheinbar nicht schnallt) und noch in verschiedenen weiteren Varianten gibt, Generic Tag Flatten, etc) sind völlig undokumentiert soweit ich weiss.

Es gibt da einige private Nodes mit denen man aus einem 32 bit Integer eine Userdata Refnum machen kann. Selber habe ich diese Funktionen aus verschiedenen technischen Gründen gleich im C code ausgeführt, was noch viel undokumentierter ist und absolut frustrierend weil man konstant crasht wenn man etwas nicht richtig hat, was bei undokumentierten Features absolut unvermeidlich ist Big Grin

Ein anderer frustrierender Aspekt ist das Syntax Errors im RC file die Objekte völlig unsichtbar machen und LabVIEW nirgendwo eine gute Fehlermeldung gibt. Eine minimale Lösung ist das hinzufügen zum INI File von:

createLogFile=True
DPrintfLogging=True
DPrintfToFile=True
promoteDWarnInternals=True

Ich weiss jetzt gerade nicht welche davon wirklich nötig sind und habe keine Lust das auszuprobieren.

Mit diesen Settings kriegt man manchmal eine Zeile mit der Angabe "OMParse: <kurze generike Fehlermeldung mit Zeilennummer>" im dprintf.txt file im LabVIEW Folder.

Die RC Files werden nur beim Starten geparst, (und es gibt scheinbar keine andere Möglichkeit das in LabVIEW anzustossen), also nach jedem Fehler: LabVIEW abschliessen, File editieren, LabVIEW starten, schauen, und in 99% der Fälle ganz fest fluchen Rolleyes.

Das ist also wirklich eine frustrierende Erfahrung!

EDIT: Was ich noch zu sagen vergass, dies alles ist eindeutig nur sinnvoll im Zusammenhang mit einer externen Library (DLL, shared library) da das ganze "Object Manager" Interface darauf gebaut ist. Das RC File übernimmt die Aufgabe zwischen dieser externen Library und dem LabVIEW Property und Method Interface zu vermitteln und gibt LabVIEW die nötigen Informationen um den Maschinencode zu erzeugen um diese externe Library aufzurufen. Das bedeutet aber auch dass die externe Library ganz spezifische Funktionen exportieren muss und alle Datentypen die diese Funktion empfängt für Property und Method Implementation sind immer native LabVIEW Datentypen (String und Array Handles) und müssen mit den entsprechenden LabVIEW Manager Funktionen erzeugt, verändert und frei gegeben werden.

Das alles wird es für die meisten potentielen Benützer wohl eher unwahrscheinlich machen dass sie sich überhaubt da hinein arbeiten wollen da die shared Library ganz explizit für LabVIEW und dieses Interface geschrieben werden muss, und man wirklich sehr viele Kenntnisse über die LabVIEW C Datentypen und Schnittstellen haben muss.


LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6 - RoLe - 30.04.2010 14:21

' schrieb:Also mit einer Einschränkung! Das geht nur wenn der entsprechende Prozess Administratorprivileges hat (oder man die in der ICMP Funktion beschriebenen Registrysettings einstellt, was ich aber ehrlich gesagt noch nicht getestet habe).
Das ist aber schade.
Ev. könnte man das ICMP-Open mit einem Login versehen. Weis nicht ob es das als C gibt.
Mit C# habe ich ein RunProcessAsAdmin gemacht, jedoch geht das bis jetzt nur mit Filename. (Ersatz für das SystemExec.vi)
Oder, wie starte ich einen Prozess mit Adminrechten, aussert LabVIEW (oder die erstellte EXE) als Admin zu starten?

Ich habe mir ein Ping mit c#/net gemacht, dort gibt es extra System.Net.NetworkInformation.Ping das mit den User-Rechten läuft. Jedoch mit 8.2 geht es nicht, mit 9.0 schon (unter Vista, denke es geht erst mit einem Vista-Ready LV)


LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6 - RoLe - 30.04.2010 14:31

' schrieb:Sorry das ist alles mit viel trial and error zusammengehackt und ist deutlich kein Feature das NI für Enduser gedacht hat.
...
Das ist also wirklich eine frustrierende Erfahrung!
...

Das alles wird es für die meisten potentielen Benützer wohl eher unwahrscheinlich machen dass sie sich überhaubt da hinein arbeiten wollen da die shared Library ganz explizit für LabVIEW und dieses Interface geschrieben werden muss, und man wirklich sehr viele Kenntnisse über die LabVIEW C Datentypen und Schnittstellen haben muss.
Besten Dank für die ausführliche Antwort, extrem Advanced ist das schon.
Aufgefallen ist es mir gleich, das du da was neues in deine DLL-Künste implementiert hast.


LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6 - rolfk - 30.04.2010 17:08

' schrieb:Das ist aber schade.
Ev. könnte man das ICMP-Open mit einem Login versehen. Weis nicht ob es das als C gibt.
Mit C# habe ich ein RunProcessAsAdmin gemacht, jedoch geht das bis jetzt nur mit Filename. (Ersatz für das SystemExec.vi)
Oder, wie starte ich einen Prozess mit Adminrechten, aussert LabVIEW (oder die erstellte EXE) als Admin zu starten?

Ich habe mir ein Ping mit c#/net gemacht, dort gibt es extra System.Net.NetworkInformation.Ping das mit den User-Rechten läuft. Jedoch mit 8.2 geht es nicht, mit 9.0 schon (unter Vista, denke es geht erst mit einem Vista-Ready LV)

Login ginge wohl schon ist aber nicht etwas das ich machen möchte. Das geht einfach zu weit wenn eine einzelne Funktion das macht. Dass Raw sockets beschränkt sind auf Admin Rechte, respektieve unter Linux alternativ auch mit speziellen Applikationsrechten (die durch einen Administrator gegeben werden müssen), ist etwas Platformübergreifendes. Es gibt unter Windows eine spezielle ICMP DLL die das scheinbar umgeht, wahrscheinlich durch einen eigenen Kerneltreiber der sich da irgenwie in die Winsocks einklinkt, aber diese Schnittstelle ist auf neueren Windows Versionen offiziel als "not for new designs" deklariert. Deshalb habe ich mich auch noch nicht weiter mit dieser Variante abgegeben. Die ICMP Implementation in dieser Library ist im Prinzip ein Nebeneffekt weil ich einen Testcase für den Rawsocketzugang nötig hatte und das ICMP Echo Reply ist an sich recht einfach zu implementieren.

Kannst ja mal den Registry Hack probieren. Für das Distributieren von Applikationen an andere Benützer ist das zwar keine wirkliche Lösung (da man auf diese Weise den Raw-Socket Zugang für alle Applikationen, inklusive eventuelle Trojans und Backdoors öffnet) aber es ist zumindest eine mögliche Variante.

Unter Windows XP und neuer wird die sinnvollste Variante sein, dem Executable ein Manifest mitzugeben das angibt dass man explicit ein Admin Login beim Aufstarten verlangt. Vielleicht schaue ich noch mal ob es eine Möglichkeit gibt das ICMP DLL Interface auf eine saubere Art in meine Library einzubauen, aber hohe Priorität hat das nicht.


LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6 - RoLe - 05.05.2010 09:23

' schrieb:Kannst ja mal den Registry Hack probieren.
Nein, das mache ich nicht. Big Grin

' schrieb:Unter Windows XP und neuer wird die sinnvollste Variante sein, dem Executable ein Manifest mitzugeben das angibt dass man explicit ein Admin Login beim Aufstarten verlangt. Vielleicht schaue ich noch mal ob es eine Möglichkeit gibt das ICMP DLL Interface auf eine saubere Art in meine Library einzubauen, aber hohe Priorität hat das nicht.
Das geht, jedenfalls bei mir, so nicht unter Vista.
Ich bin lokal Admin, kann das "als Admin ausführen" nur bestätigen, kein Login.
Aber, wenn ich "richtig" Admin bin, nach Bestätigung, habe ich aus Sicherheitsgründen kein Netzwerkzugriff mehr.
Ob das so üblich ist, weis ich nicht. Jedenfalls geht es bei mir nur mit einem User-Ping.

Nochmals Danke für die ausführlichen Erläuterungen, für mich ist hier fertig.


LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6 - rolfk - 05.05.2010 10:31

' schrieb:Nein, das mache ich nicht. Big Grin
Das geht, jedenfalls bei mir, so nicht unter Vista.
Ich bin lokal Admin, kann das "als Admin ausführen" nur bestätigen, kein Login.
Aber, wenn ich "richtig" Admin bin, nach Bestätigung, habe ich aus Sicherheitsgründen kein Netzwerkzugriff mehr.
Ob das so üblich ist, weis ich nicht. Jedenfalls geht es bei mir nur mit einem User-Ping.
Funktioniert die ICMP Open als lokal Admin bei Dir wirklich nicht? Und als normaler User hast Du schon ein UAC? Ich werde mal schauen ob es da etwas gibt um eine Applikation beim "Starten explicit zu "elevaten". Irgendetwas muss da sein, weil Windows macht es auch bei bestimmten Applikationen nach einem ziemlich verqueren Algorithme der unter anderem sagt dass Programme die setup.exe heissen so einen UAC haben sollten.


LabVIEW Netzwerk Library mit Support für SSL, Ping und IPv6 - RoLe - 05.05.2010 11:59

' schrieb:Funktioniert die ICMP Open als lokal Admin bei Dir wirklich nicht?
Habe das nochmal mal durchgespielt.

Wenn ich LabVIEW 8.2/9.0 normal starte (lokal Admin), bekomme ich immer Fehler 54 vom ICMP-Open.

Wenn ich LabVIEW mit UAC starte (rechte Taste als Admin, ok) dann geht folgendes:
- Localhost oder Computername oder die eigene IP 172.16.60.81 - geht
- 172.16.10.54 eine SPS, die geht nicht.
- http://www.ni.com geht auch nicht, da ich mit UAC kein Netzwerk mehr habe.

Mit dem DOS Ping.exe geht alles, ohne UAC.