Home › Forum › Programmazione IEC 61131 (LogicLab) › Eseguire invio di una semplice stringa in UDP
- Questo topic ha 1 risposta, 2 partecipanti ed è stato aggiornato l'ultima volta 11 anni, 11 mesi fa da Sergio Bertana.
-
AutorePost
-
Maggio 31, 2012 alle 1:45 pm #35219MichelePartecipante
Salve a tutti, vorrei inviare una semplice stringa via UDP. Dove sbaglio ?
(* ———————————————————————- *)
(* ESEGUO INIZIALIZZAZIONI *)
(* ———————————————————————- *)
(* Eseguo apertura socket UDP. *)IF (SysFirstLoop) THEN
Fp:=Sysfopen(‘UDPSKT’, ‘rw’); (* File pointer *)
END_IF;SktLsn.File:=Fp; (* SysSktListen : Flusso dati stream *)
SktLsn.MyPort:=120; (* SysSktListen : Porta socket *)(* ———————————————————————- *)
(* “UDPStringOut” *)
(* ———————————————————————- *)
(* Gestione impulso di “Send”. *)IF NOT(Send) THEN SPulse:=FALSE; RETURN; END_IF;
IF SPulse THEN RETURN; END_IF;
SPulse:=TRUE; (* Send pulse *)(* Eseguo uscita stringa. *)
NrOfCh:=SysVarsnprintf(ADR(SOut), 32, ‘%s $r$n’, STRING_TYPE, ADR(‘Welcome !’));
NrOfCh:=SysUDPSktSend(Fp, ADR(SOut), TO_UINT(NrOfCh),’192.168.0.10′, 120);Giugno 1, 2012 alle 6:40 am #37259Sergio BertanaAmministratore del forumIntanto vedo che hai eseguito la chiamata del FB SysSktListen che non è necessario per la la trasmissione di dati in UDP, poi non hai inserito la chiamata al FB SysIPReach che controlla la presenza dell’IP a cui vuoi inviare i dati in UDP, per il resto è tutto corretto.
Ho modificato il tuo programma correggendolo nei punti indicati e funziona perfettamente, ecco la stampa ed il programma sorgente.
Per testare la ricezione del pacchetto UDP da un PC puoi utilizzare la nosta utility Toolly, devi attivare dal menù Utilities -> Terminal e poi scegliere il tab UDP Client server abilitando il server sulla porta 120 visto che nel tuo esempio utilizzi quella.
-
AutorePost
- Devi essere connesso per rispondere a questo topic.