如何在lwip堆栈

时间:2017-11-07 18:02:36

标签: c tcp-ip xilinx lwip

我正在编写fpga板ZYNQ XC7Z010-1CLG400C。我从ADC连续测量数据,将数据保存在缓冲区(MesStrBuf)中,然后使用lwip satck通过以太网发送此缓冲区。
当我实现没有函数tcp_poll()的程序时,以太网上的数据传输被中止。以太网上的连接被中止的原因是缓冲区tcp_snd_buf正在变满并且数据部分使用tcp_write和tcp_output发送,尽管我在每个{{1}使用缓冲区(MesStrBuf)发送整个大小的tcp_send_buf }。

这就是为什么我要使用函数tcp_write()直到数据完全发送(我想等到数据发送)然后我可以连续运行程序并一次又一次地重复程序而没有问题正如我在想的那样。

所以我想实现命令

tcp_poll()

但是如何实现函数 tcp_poll(tpcb,poll_function,1);

我必须在poll_function()中实现的TCP连接的PCB(协议控制块)是poll_function()中使用的PCB(tpcb)吗?

如何在tcp_write()中致电tcp_write()?或者无需在poll_function()中致电tcp_write()

这是代码:

poll_function()

1 个答案:

答案 0 :(得分:1)

来自documentation

typedef err_t(* tcp_poll_fn) (void *arg, struct tcp_pcb *tpcb)