Forum: Mikrocontroller und Digitale Elektronik udp/tcp webserver


von Karl K. (leluno)


Lesenswert?

Ich benutze den U-Radig-Webserver mit einem Atmega 1284. Ziel ist im 
Prinzip Übertragung von Steuerbefehlen, zur Zeit nur UDP. Folgendes 
Problem ist aufgetreten:

Den ENC-Eingangsport habe ich per add_udp_app in die Anwendungsliste 
eingetragen.

Ich schicke eine UDP-Sequenz mit IP/Eingangsport an den Atmega.

Die Funktion eth_get_data() wertet die einkommenden Daten aus. Die 
Funktion
check_packet() leitet eingehende UDP-Daten an die Funktion
1
//Diese Routine verwaltet die UDP Ports
2
void udp_socket_process(void)
3
{
4
  unsigned char port_index = 0;  
5
  struct UDP_Header *udp;
6
    
7
  udp = (struct UDP_Header *)&eth_buffer[UDP_OFFSET];
8
9
  //UDP DestPort mit Portanwendungsliste durchführen
10
  while (UDP_PORT_TABLE[port_index].port && UDP_PORT_TABLE[port_index].port!=(htons(udp->udp_DestPort)))
11
  { 
12
    port_index++;
13
14
DEBUG("\r\nport   %1i.%1i\r\n",port_index, UDP_PORT_TABLE[port_index].port);
15
DEBUG("\r\nhtons   %1i.%1i\r\n",udp->udp_DestPort,htons(udp->udp_DestPort) );
16
    
17
    
18
  }
19
  
20
  // Wenn index zu gross, dann beenden keine vorhandene Anwendung für den Port
21
  if (!UDP_PORT_TABLE[port_index].port)
22
  { 
23
    //Keine vorhandene Anwendung eingetragen! (ENDE)
24
    DEBUG("UDP Keine Anwendung gefunden!\r\n");
25
    return;
26
  }
27
28
  //zugehörige Anwendung ausführen
29
  UDP_PORT_TABLE[port_index].fp(0); 
30
  return;
31
}
 weiter.

Wenn ich verschiedene Ports durchprobiere, werden die ports über die 
Funktion htons() richtig angezeigt. Wenn ich aber den Port ansteuere, 
der in der Anwendungstabelle gelistet ist, wandelt htons den Wert 6121 
in 6120 um. Der Wert für den Port wurde offenbar vorher im Programm 
geändert. Auf diese Weise wird die dem Port zugewiesene Anwendung nie 
angesprochen.

Warum? Was mache ich falsch? Bin für jeden Hinweis dankbar.

von Karl K. (leluno)


Lesenswert?

war hardware-problem, spi-lcd verträgt sich nicht mit spi-enc...

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.