ich würde gerne mit dem Ethernet ATmega32 Experimentierboard ein
CAN-Ethernet-Gateway bauen, damit ich per W-LAN von meinem
Android-Tablet Daten in und von meinem Hausbus senden/empfangen kann.
Zum experimentieren habe ich mit ein paar Lampen, Taster und Sensoren
aufgebaut und kann diese jetzt unterschiedlich auswerten.. Das klappt
auch alles bisher ganz gut. Jetzt soll das Android-Tablet eingebunden
werden, weshalb ich das Gateway bauen will.
Hardware:
Das ETH_M32_EX habe ich mit einem MCP2515 CAN Controller
und MCP2551 CAN Treiber erweitert. Der Ethernet und der CAN Controller
werden beide über SPI angesteuert.
Software:
Als CAN-Lib verwende ich die Lib von kreatives-chaos.com
(http://www.kreatives-chaos.com/artikel/ ... bibliothek). Für
das Ethernet verwende ich den Stack von Ulrich Radig.
Nachdem ich mir einiges zu dem Thema durchgelesen habe, fällt meine Wahl auf eine Datenübertragung per UDP. Beim Senden des Tablets bzw. des ETH_M32_EX würde ich ein ACK des Gegenübers selber einbauen. Das Gateway muss alle ankommenden CAN-Nachrichten in den UDP-Rahmen packen und immer an die gleiche IP (Tablet) senden. Umgekehrt sendet die Software des Tablets immer nur an die IP des Gateways.
Eine ankommende CAN-Nachricht besteht aus uint32_t id, int rtr, int extended, uint8_t length, uint8_t data[8]. Was ist dann die richtige Vorgehensweise, um diese Daten in einen UDP-Rahmen zu packen und abzusenden??
Könnte das so klappen?
Initialisierung:
Code: Alles auswählen
stack_init();
add_udp_app (300, (void(*)(unsigned char))udp_get);
ETH_INT_ENABLE;
sei();
while(1)
{
eth_get_data();
}
Code: Alles auswählen
udp_send{
create_new_udp_packet(????);
Und dann??
}
Code: Alles auswählen
udp_get()
{
for (int a = UDP_DATA_START;a < UDP_DATA_END_VAR;a++)
{
irgendeinarray[a] = eth_buffer[a];
}
}
Was passiert eigentlich, wenn z.B. irgendeine Anfrage von einem anderen Teilnehmer aus dem LAN an das Gateway gestellt wird?! Antwortet es dann einfach nicht und gut ist?!
Vielen Dank für eure Hilfe. Hoffentlich liest sich diesen langen Text überhaupt jemand durch...