LwIP obojsmerna komunikacia cez TCP port
David Belohrad
david na belohrad.ch
Čtvrtek Leden 2 12:11:05 CET 2014
netconn_recv nepouzivam, ale pouzivam 'standardni' lwip rozhranni. To je
rizene ciste pres hacky (hooks). Pri inicializaci socketu udelate:
--------------------------------------------------------------------------------
// create listening PCB and bind it
pcb = tcp_new();
tcp_bind(pcb, IP_ADDR_ANY, BBDIDTSOCKETS_SERVER_PORT);
pcb = tcp_listen(pcb);
/* initialize callback arg and accept callback */
tcp_arg(pcb, pcb);
tcp_accept(pcb, bbdidtSockets_accept);
--------------------------------------------------------------------------------
a pak jeste deklarujete funkci tcp_accept
--------------------------------------------------------------------------------
err_t bbdidtSockets_accept(void *arg, struct tcp_pcb *pcb, err_t err)
{
unsigned int remoteIP, point, i;
static char buff[1024];
LWIP_UNUSED_ARG(err);
/* Decrease the listen backlog counter */
tcp_accepted(((struct tcp_pcb_listen*)arg));
tcp_setprio(pcb, BBDIDTSOCKETS_TCP_PRIO);
/* Set up the various callback functions */
tcp_recv(pcb, bbdidtSockets_recv);
tcp_err(pcb, NULL);
tcp_poll(pcb, NULL, BBDIDTSOCKETS_POLL_INTERVAL);
tcp_sent(pcb, bbdidtSockets_sent);
.... atd
--------------------------------------------------------------------------------
ve ktere zadeklarujete hacky na tcp_recv a tcp_sent. tyhle dva se
spousteji kdyz neco prijde a kdyz neco bylo odeslane. cele je to popsane
v lwip manualu.
pak funkce tcp_write posila (bez cekani) data pres enet, a kdyz neco
dostanete, zavola se funkce, kterou posilate lwip pres tcp_recv. funguje
to dobre.
funkce lwip je take pekne popsana demonstracnim programem v am335x
starterware od TI. doporucuji stahnout, nainstalovat a probrat se
prikladem 'enet_lwip', kde je vsechno nazorne vysvetleno
.d.
Stano <stano.hw na gmail.com> writes:
> Dobry den
> Mam zaciatocnicku otazku na LwIP netconn + FreeRTOS
> Pokusam sa o obojsmernu komunikaciu cez jeden TCP port. Chcel by som
> dosiahnut
> asynchronnu komunikaciu, ked nieco pride na UART odoslu sa data cez TCP
> port,
> ked pridu nejake data po TCP odoslu sa na UART.Problem je v tom ze funkcia
> netconn_recv() caka na prijatie dat, a funkcia citajuca z UARTu zas caka
> na prijatie dat zo seriovej linky. Prosim skusenejsich o inspiraciu co
> hladat
> alebo ako riesit dany problem.
>
> Za odpovede vopred dakujem
> Stano
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list