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?
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 | }
|
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?
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.