Uwe Gerlach
2014-10-20 19:30:07 UTC
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
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