Hallo peewit!
Ich beobachte hier ein interessantes Phaenomen!
Fakt ist, dass kein Socket angelegt werden kann:
Der Returnwert von SysSockCreate(...) steht auf "-1" = "16#FFFFFFFF"
(vgl. Screenshot im Anhang)
und jetzt das Kuriose:
Wenn ich vor Aktivieren des Programms mit xTrigger in Zeile 74 einen
Breakpoint setze und mich dann per F10 (Einzelschritt ueber) durch
das Programm hangele, kommt irgendwann der Timeout
(SNTP.Error = 16#FF000000)
Hier die Liste der Zeilen, auf denen ich wieder F10 druecke:
74, 75, 76, 77, 78, 97, 213, 228, 246, 250, 256, 308, 309, 365,
395, 396, 397, 398, 399, 401, 402, 403, 406, 410, 413, 416, 420, 455,
IP_CONTROL wird verlassen -> F5 (Start) -> TimeOut-Fehlercode
Wenn ich beim Breakpoint auf Zeile 74 F5 (Start) druecke, dann habe ich
eine Endlosschleife aus der er sich nicht befreien kann.
Wenn ich jetzt den Breakpoint auf Zeile 73 aendere, bemerke ich, dass der
"state" nach jedem Druck auf F5 den Wert von 16#1F auf 16#FB wechselt.
Der Ablauf hier ist aehnlich, wie vorher:
73, 74, 75, 76, 77, 78, 97, 213, 228, 246, 250, 256, 308, 309, 365,
395, 396, 397, 398, 399, 401, 402, 403, 406, 410, 413, 416, 420, 455,
IP_CONTROL wird verlassen -> F5 (Start) -> Breakpoint (state = 16#FB)
73, 101, 120, 145, 168, 189, 196, 197, 198, 203, 208, 213 (state = 0), 228, 246,
250, 256, 308, 309, 365, 395, 406, 410, 411, 413, 416, 420, 455,
IP_CONTROL wird verlassen -> F5 (Start) -> Breakpoint (state = 16#1F)
Da es sich hier scheinbar um ein Timing-Problem beim Erstellen des Sockets
handelt, habe ich testweise mal einen weiteren Schritt in die CASE-Anweisung
eingebaut:
CASE state OF
UDP_INIT: (* UDP_CLIENT + SERVER *)
socket := SysSockCreate(SOCKET_AF_INET, SOCKET_DGRAM, SOCKET_IPPROTO_UDP);
state := UDP_INIT_2;
UDP_INIT_2:
IF socket < 0 THEN
c_status := 1; (* SysSockCreate failed *)
state := C_CLOSE;
ELSE
Mit dieser Aenderung kommt bei Ausfuehrung sofort der Fehlercode
16#01000000 (SysSockCreate nicht erfolgreich ausgefuehrt) und ich
kann wiederholt das Programm mit xTrigger aktivieren.
Es scheitert also bereits beim Erstellen des Socket und somit ist es
auch irrelevant, daß sich alle Geraete im Netzwerk im selben Subnetz
befinden.
[gelöscht durch Administrator]