Abilitare JavaScript per vedere questo sito.

Funzione per la ricezione di una risposta da un server ad un messaggio UDP precedentemente inviato.

Questa chiamata ha senso solo dopo aver chiamato la corrispondente funzione udp_send_notify(). La funzione può essere usata solo per comunicazioni da parte del client.

Sintassi

i32 udp_recv_notify (i32 idx, buff, i32 buffLen, real tOutRx, real tOutTot)

idx

Numero dell'handler della comunicazione UDP.

buff

Buffer generico destinato a contenente il pacchetto dati ricevuto. Può essere una variabile string, una struct_p (struttura packed) oppure un array di struct_p. Nel caso di struct_p, la variabile deve essere dichiarata globale.

Se struttura, il primo membro deve essere dichiarato di tipo u32 e rappresenta l'identificatore del messaggio msgId; il valore viene attribuito dalla funzione udp_send_notify(). msgId deve essere utilizzato lato server nel messaggio di risposta e serve per garantire l'instradamento al client corretto. Tutti gli altri dati sono ad uso utente.

La dimensione massima di questa struttura è: MAX_UDP_DATA=508 byte.

buffLen

Numero di byte massimo da ricevere (compreso msgId).

tOutRx

Allo scadere di questo tempo di timeout viene automaticamente ritrasmesso il messaggio.

tOutTot

Allo scadere di questo tempo di timeout la funzione viene abortita.

È possibile chiamare la funzione con tOutTot=0 per provocare l'abort della funzione stessa.

Risultato

Rende:

Valore

Significato

> 0

Operazione eseguita con successo. Viene reso il numero di caratteri inviati.

0

In attesa di risposta.

-1

idx illegale.

-2

Socket non aperto.

-3

Socket aperto come server e non come client.

-4

buffLen maggiore del massimo consentito.

-5

Non risulta una udp_send_notify() in corso per l'idx specificato.

-6

tOutTot scaduto.

-1000 -:- -2000

Codice di errore della funzione di S.O. sendto(), con offset 1000 (ha reso errore la funzione sendto() di S.O. chiamata per ritentare la trasmissione dopo tmOutRx).

Per vedere più nello specifico alcuni errori resi, vedi Tabella errori resi.

Validità

Rule, Task.

Note

I due timeout potranno funzionare correttamente solo se la funzione viene chiamata a una frequenza sufficientemente alta rispetto ai tempi specificati.

Per un esempio concreto vedi in ambiente RDE: Workspace -> Speciali -> Libreria degli esempi.

 

  

Keyboard Navigation

F7 for caret browsing
Hold ALT and press letter

This Info: ALT+q
Page Header: ALT+h
Topic Header: ALT+t
Topic Body: ALT+b
Contents: ALT+c
Search: ALT+s
Exit Menu/Up: ESC