contiki:simple-udp-workshop
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
contiki:simple-udp-workshop [2015/05/10 06:22] – [5. Interaktion mit dem UDP-Server] admin | contiki:simple-udp-workshop [2018/12/03 14:53] (aktuell) – admin | ||
---|---|---|---|
Zeile 5: | Zeile 5: | ||
* Die Installation von [[http:// | * Die Installation von [[http:// | ||
* Anmeldung an //Instant Contiki// mit dem Passwort: '' | * Anmeldung an //Instant Contiki// mit dem Passwort: '' | ||
- | * Die folgende Beschreibung bezieht sich immer auf das Quellcode-Verzeichnis: | + | * Die folgende Beschreibung bezieht sich immer auf das Quellcode-Verzeichnis: |
==== 2. Anpassungen des Quellcodes ==== | ==== 2. Anpassungen des Quellcodes ==== | ||
Zeile 12: | Zeile 12: | ||
=== 2.1 Erstellen eines neuen Projekt-Verzeichnisses === | === 2.1 Erstellen eines neuen Projekt-Verzeichnisses === | ||
- | - Erstellen Sie das Verzeichnis: | + | - Erstellen Sie das Verzeichnis: |
- | === 2.2 Erstellen des Quellcodes | + | === 2.2 Erstellen des Makefiles |
Für das Projekt werden eine C-Datei und ein Makefile benötigt. | Für das Projekt werden eine C-Datei und ein Makefile benötigt. | ||
- | - Erstellen Sie folgendes '' | + | - Erstellen Sie folgendes '' |
<code make> | <code make> | ||
Zeile 28: | Zeile 28: | ||
include $(CONTIKI)/ | include $(CONTIKI)/ | ||
</ | </ | ||
+ | |||
+ | Für die Verwendung von IPv6 verwenden Sie das folgende Makefile: | ||
+ | |||
+ | <code make> | ||
+ | CONTIKI_PROJECT = simpleUDP | ||
+ | all: $(CONTIKI_PROJECT) | ||
+ | |||
+ | UIP_CONF_IPV6=1 | ||
+ | UIP_CONF_RPL=0 | ||
+ | |||
+ | CFLAGS += -DUIP_CONF_IPV6=1 | ||
+ | |||
+ | CONTIKI = ../.. | ||
+ | include $(CONTIKI)/ | ||
+ | </ | ||
+ | |||
+ | === 2.3 Erstellen des Quellcodes === | ||
- Erstellen Sie die C-Datei '' | - Erstellen Sie die C-Datei '' | ||
Zeile 41: | Zeile 58: | ||
#include " | #include " | ||
#include " | #include " | ||
- | #include " | + | #include "net/ip/ |
#include " | #include " | ||
#include < | #include < | ||
Zeile 119: | Zeile 136: | ||
<code bash> | <code bash> | ||
- | Sollte es notwenig sein nachträglich Änderungen am Makefile durchzuführen, | + | Sollte es notwenig sein nachträglich Änderungen am Makefile durchzuführen |
+ | um zwischen IPv4 und IPv6 zu wechseln), sollte das | ||
Projekt vor der erneuten Übersetzung zurückgesetzt werden: | Projekt vor der erneuten Übersetzung zurückgesetzt werden: | ||
<code bash> | <code bash> | ||
- | ==== 4. Ausführung des UDP-Servers | + | ==== 4. Ausführung des UDP-Service |
Nach der erfolgreichen Übersetzung kann die Anwendung gestartet werden. Das muss | Nach der erfolgreichen Übersetzung kann die Anwendung gestartet werden. Das muss | ||
Zeile 132: | Zeile 150: | ||
<code bash> | <code bash> | ||
- | Contiki richtet jetzt ein neues Netzwerkinterface '' | + | Contiki richtet jetzt ein neues Netzwerkinterface '' |
Dabei werden die verwendeten Netzwerkeinstellungen angezeigt. | Dabei werden die verwendeten Netzwerkeinstellungen angezeigt. | ||
Zeile 138: | Zeile 156: | ||
werden. | werden. | ||
- | ==== 5. Interaktion mit dem UDP-Server | + | ==== 5. Interaktion mit dem UDP-Service |
Starten Sie ein zweites Terminalfenster und testen Sie den Service | Starten Sie ein zweites Terminalfenster und testen Sie den Service | ||
- Pingen Sie den Contiki UDP-Service: | - Pingen Sie den Contiki UDP-Service: | ||
- | - Senden Sie mit dem Programm '' | + | - Senden Sie mit dem Programm '' |
+ | ==== 6. Contiki UDP-Client ==== | ||
+ | |||
+ | <code c> | ||
+ | /** | ||
+ | * \file | ||
+ | | ||
+ | * \author | ||
+ | | ||
+ | */ | ||
+ | |||
+ | #include " | ||
+ | #include " | ||
+ | #include " | ||
+ | #include " | ||
+ | #include " | ||
+ | #include < | ||
+ | #include < | ||
+ | |||
+ | #include " | ||
+ | #define UDP_PORT 40000 | ||
+ | #define SEND_INTERVAL | ||
+ | |||
+ | static struct simple_udp_connection client_connection; | ||
+ | |||
+ | / | ||
+ | PROCESS(client_example_process, | ||
+ | AUTOSTART_PROCESSES(& | ||
+ | / | ||
+ | static void | ||
+ | receiver(struct simple_udp_connection *c, | ||
+ | const uip_ipaddr_t *sender_addr, | ||
+ | | ||
+ | const uip_ipaddr_t *receiver_addr, | ||
+ | | ||
+ | const uint8_t *data, | ||
+ | | ||
+ | { | ||
+ | printf(" | ||
+ | | ||
+ | } | ||
+ | / | ||
+ | PROCESS_THREAD(client_example_process, | ||
+ | { | ||
+ | static struct etimer periodic_timer; | ||
+ | uip_ipaddr_t addr; | ||
+ | |||
+ | PROCESS_BEGIN(); | ||
+ | //ohne simple_udp_register funktioniert das Senden nicht! | ||
+ | simple_udp_register(& | ||
+ | NULL, UDP_PORT, receiver); | ||
+ | |||
+ | etimer_set(& | ||
+ | while(1) | ||
+ | { | ||
+ | PROCESS_WAIT_EVENT_UNTIL(etimer_expired(& | ||
+ | etimer_reset(& | ||
+ | |||
+ | printf(" | ||
+ | |||
+ | // senden auf die eigene Adresse 172.18.0.2 funktioniert bei | ||
+ | // Instant-Contiki nicht: arp auf tun0-Interface? | ||
+ | // | ||
+ | uip_ipaddr(& | ||
+ | simple_udp_sendto(& | ||
+ | } | ||
+ | PROCESS_END(); | ||
+ | } | ||
+ | </ |
contiki/simple-udp-workshop.1431238958.txt.gz · Zuletzt geändert: 2017/01/24 18:49 (Externe Bearbeitung)