Forum: Mikrocontroller und Digitale Elektronik webserver datenaustausch tcp udp telnet


von Karl K. (leluno)


Lesenswert?

ich möchte mit dem Radig-Webserver Daten austauschen, d.h. kurze 
Byte-Sequenzen im lan übertragen. Der enc28j60 läuft über einen Atmega 
1284. Die avr-webside wird auf dem PC angezeigt.

Datenaustausch funktioniert nach meiner bisherigen Kenntnis so, daß 
frames über den stack an den enc gesendet werden. Der enc überträgt sie 
dann ins Netz. Es gibt ein ARP-Tabelle, in der Requests eingetragen und 
abgearbeitet werden.

In dem äußerst umfangreichen code befinden sich die Dateien
-tcpcmd
-tcpsrv
-telnet
-telnet,
die offenbar für den Datenaustausch gedacht sind.

Was mir fehlt ist ein praktisches Anwendungsbeispiel.

Ich möchte als Anfang per
command_ping/tcpcmd ein ping an den pc senden

Wie geht das? Wer kann weiterhelfen?

von Karl K. (leluno)


Lesenswert?

vielen Dank für die breite Unterstützung. Es gibt eine Ergänzung zum 
Programm von UR von Dietmar Misch, der das UDP-Problem wie fogt lößt:
1
//Senden der aktuellen Daten zu einen UDP Server
2
void udp_send (unsigned long UDP_IP_SEND)
3
{
4
#if (UDP_SENDE_PORT!=0)  
5
  //oeffnet eine Verbindung zu einem UDP Server
6
  unsigned int byte_count,var=0;
7
    
8
  //ARP Request senden
9
  if (arp_request(UDP_IP_SEND) == 1)
10
  {  
11
    for (byte_count = 0;byte_count<(MAX_VAR_ARRAY*2);byte_count=byte_count+2)
12
    {
13
      eth_buffer[UDP_DATA_START + byte_count]   = (unsigned char)var_array[var];
14
      eth_buffer[UDP_DATA_START + byte_count+1] = (unsigned char)((var_array[var]) >> 8);
15
      var++;
16
    }
17
    create_new_udp_packet(byte_count,UDP_EMPFANGS_PORT,UDP_SENDE_PORT,UDP_IP_SEND);
18
    UDP_DEBUG("** UDP Daten gesendet! **\r\n");
19
    return;
20
  }
21
  UDP_DEBUG("Kein UDP Server gefunden!!\r\n");
22
#endif  
23
  return;
24
}

von leluno (Gast)


Lesenswert?

Der Datenaustausch per udp funktioniert jetzt. Nun möchte ich das ganze 
auf tcp umstellen.

Gibt es eine vergleichbare fertige Funktion wie
void udp_send (unsigned long UDP_IP_SEND)
{....

für tcp?

von Georg G. (df2au)


Lesenswert?

Das wird schwierig.

UDP ist ein verbindungsloses Protokoll. Das Frame wird gesendet und 
damit ist es gut. Es gibt keine Garantie, dass es ankommt, keine 
Bestätigung.

TCP ist verbindungsorientiert, mit allem Schnickschnack, Verbindung 
aufbauen, Daten senden, Bestätigung empfangen, Timeout, Resync bei 
Problemen usw.

Im Radig Server sind TCP Funktionen rudimentär vorhanden, auf Grund des 
sehr kleinen RAM aber mit vielen Einschränkungen. Du wirst wohl oder 
übel selbst Hand anlegen müssen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.