User manual
267 C-Control Pro IDE
© 2013 Conrad Electronic
char text[10];
ETH_SetConnBuf(tcp_buf, 4000, 6); // 4000 byte Puffer und 6 Connections
ETH_ListenTCP(23); // Listen Telnet port
while(1)
{
ip= ETH_CheckReceiveBuf(info);
if(ip)
{
plen= info[3]; //
if(plen > 200) plen= 200; // Begrenze auf 200 bytes
ETH_ReceiveData(rbuf, plen);
txt= "Cmd:\n";
ETH_SendTCP(info[0], txt, 5); // Sende Cmd String
}
}
}
5.11.3 UDP Programmierung
UDP Pakete können direkt mit ETH_SendUDP versendet werden. Dabei beträgt die Maximalgröße
1460 Byte. Dies entspricht einer MTU von 1500 und einem 40 Byte UDP/IP header.
Um UDP Pakete empfangen zu können, wird mit ETH_SetConnBuf ein Empfangspuffer (Ringpuf-
fer) reserviert und mit ETH_ListenUDP ein listening Port eingerichtet. Danach landen alle Pakete
im Empfangspuffer. Wenn der Puffer voll ist, gehen die weiteren empfangenen Daten verloren. Der
Puffer sollte daher regelmäßig mit der Funktion ETH_CheckReceiveBuf überprüft werden. Der Auf-
ruf von ETH_ReceiveData kopiert die Pufferdaten in ein Bytearray. Wird dabei eine kleinere Daten-
länge angegeben, als Paketbytes im Puffer sind, werden die auch die übrigen Bytes des Pakets
aus dem Ringpuffer gelöscht.
Es ist zu empfehlen, sich die Demoprogramme für UDP und TCP/IP anzuschauen.
Als Default sind 4kb für den TCP/IP Stack reserviert. Je nach Nutzung braucht der Stack mehr
oder weniger RAM. Der benötigte Speicher ist nur aufwendig zu berechnen, und sollte selbst durch
Tests ermittelt werden.
Beispiele
1. Programm Sendet jede Sekunde einen String auf den Syslog Port 514: