Discussion:
[ethersex-devel] UESEND verschluckt Inhalte
Uwe Gerlach
2014-10-20 19:30:07 UTC
Permalink
Hallo Liste,

ich habe in Control6 eine Ausgabeschleife, die beim Vorliegen bestimmter
Bedingungen einen String per UESEND verschickt. So etwa:

THREAD(main_loop)

for (;;) {

if (Bedingung1)

UESEND(255.255.255.255, "%s", buffer1);

if (Bedingung2)

UESEND(255.255.255.255, "%s", udp_buffer2);

PT_YIELD(pt);

}

THREAD_END(main_loop)


Funktioniert meist sehr gut. Nur wenn beide Bedingungen zutreffen, kommt
die zweite Nachricht nicht an. Ich nehme an es liegt daran, dass die erste
Nachricht im Hintergrund noch verschickt wird und daher die zweite
Nachricht verworfen wird.

WAITs vor und nach dem UESEND und auch zusÀtzliche PT_YIELDs haben nichts
geholfen.

Gibt es eine Möglichkeit, dien Sendezustand abzufragen und solange zu
warten, bis der Versand einer Nachricht abgeschlossen ist?


GrÌße,

Uwe
Christian Dietrich
2014-10-24 19:56:07 UTC
Permalink
Post by Uwe Gerlach
Hallo Liste,
ich habe in Control6 eine Ausgabeschleife, die beim Vorliegen
bestimmter Bedingungen einen String per UESEND verschickt. So
THREAD(main_loop)
for (;;) {
if (Bedingung1)
UESEND(255.255.255.255, "%s", buffer1);
if (Bedingung2)
UESEND(255.255.255.255, "%s", udp_buffer2);
PT_YIELD(pt);
}
THREAD_END(main_loop)
Funktioniert meist sehr gut. Nur wenn beide Bedingungen zutreffen,
kommt die zweite Nachricht nicht an. Ich nehme an es liegt daran,
dass die erste Nachricht im Hintergrund noch verschickt wird und
daher die zweite Nachricht verworfen wird.
WAITs vor und nach dem UESEND und auch zusätzliche PT_YIELDs haben
nichts geholfen.
Ohne es jetzt tatsaechlich probiert zu haben. Und nachdem ich nach
langen Jahren wieder in den Code geschaut habe wuerde ich die
send_data variabele anschauen.

Vor den THREAD(

extern char * send_data;

und dann pruefen ob send_data == NULL ist. Wenn es NULL ist sollte die
Nachricht weg sein. Vielleicht hilfts.

chris
Uwe Gerlach
2014-10-25 13:50:42 UTC
Permalink
Hallo chris,

danke fÃŒr den Tipp.
Ich habe inzwischen den UESEND-Aufruf ersetzt durch

UDP_DIRECT_SEND(255.255.255.255, 44444, 44445, "%s", buffer);
Funktioniert damit perfekt. Nur warum ich zwei Ports angeben muss leuchtet
mir nicht ganz ein.

GrÌße,
Uwe


Am 24. Oktober 2014 21:56 schrieb Christian Dietrich <
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512
Post by Uwe Gerlach
Hallo Liste,
ich habe in Control6 eine Ausgabeschleife, die beim Vorliegen
bestimmter Bedingungen einen String per UESEND verschickt. So
THREAD(main_loop)
for (;;) {
if (Bedingung1)
UESEND(255.255.255.255, "%s", buffer1);
if (Bedingung2)
UESEND(255.255.255.255, "%s", udp_buffer2);
PT_YIELD(pt);
}
THREAD_END(main_loop)
Funktioniert meist sehr gut. Nur wenn beide Bedingungen zutreffen,
kommt die zweite Nachricht nicht an. Ich nehme an es liegt daran,
dass die erste Nachricht im Hintergrund noch verschickt wird und
daher die zweite Nachricht verworfen wird.
WAITs vor und nach dem UESEND und auch zusÀtzliche PT_YIELDs haben
nichts geholfen.
Ohne es jetzt tatsaechlich probiert zu haben. Und nachdem ich nach
langen Jahren wieder in den Code geschaut habe wuerde ich die
send_data variabele anschauen.
Vor den THREAD(
extern char * send_data;
und dann pruefen ob send_data == NULL ist. Wenn es NULL ist sollte die
Nachricht weg sein. Vielleicht hilfts.
chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG/MacGPG2 v2.0.22 (Darwin)
Comment: GPGTools - https://gpgtools.org
iQIcBAEBCgAGBQJUSq7WAAoJEPmM1YIahVOuZBsP/RayUfm3aenPNU6Bm1veVSWv
oP1iWeJZ7JuhI0yZehwfI8h+vqNb1F31RQopxoDi6vgma+xpxnG9FC3TfWWR448m
zpoBujMWZz/ob0FgWMxgnHGEPnOwJFp2P0ca/kOnpqOBJcQrawX3W5NXOcAcBCG8
mhlk/505L+zxAMsNG2bBvlXsBZPUCe1gddXMEluVgXHA1VESlDG69qxxCna+Ds42
ZUpLhWjBxgu5YdlSTz2H/800nwO1sRX1O2EOJGXvkZGiVvqqaZooDlDxXJihRbtO
e5cAF1I3lZMKC3fe6rAW5ZCmiHWQKBB2lvNnL3/IjUbOpz4NPgrfRT/+fsJoKgJS
9YOZwreL+2L+Wf1jiRNj6D+DOpU0T9HGuT1q2wSjaT68ozsU5+PlKTUHhn+h1God
xhay6MUGuacb+/iXu7MAS75xWWAARwQQhDMIUoZxMnfQ9q/CkmCq5C4tYy2RsevH
d1JqoBf6sutIv+5bzvWOYc0wjQrIAGHdAP2JDHnvyrnst6bfrgtbBLYNsOcULyrp
IY10R0kkoYrwExpr8xgSkEL4JcVfReX2WXRwMx3shoM/ir58poPpmcQMgjbntxnY
YMpRGw+hDsaa7TUs+fTLEgGXDNgmT8WD795LSOywHl3mbgDlS4wzbmbCc1FboFXo
hXrsySSURZoALgm3nwtr
=SPW+
-----END PGP SIGNATURE-----
_______________________________________________
Ethersex-devel mailing list
http://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel
Loading...