ZYNQ LWIP实现任意长度数据接收发送

官方自带的LWIP测试回环程序,实现的功能只是一个单纯的把接收到的数据原封不动的回传回PC机,实际工程运用自然是用不起来的,这里介绍一下如何修改成任意长度数据接收及发送:
首先就是基本的配置代码,这里不采用自带的那种方式,前面的初始化配置基本上一样:
ZYNQ LWIP实现任意长度数据接收发送_第1张图片
这里为了方便自动重新连接,设计了一个定时器中断,每250ms检查一次网络连接状态:
这里重连及初始化配置主要用到了两个函数:
tcp_new及tcp_connect,两个函数都是socket自带的函数,具体使用如下图:
ZYNQ LWIP实现任意长度数据接收发送_第2张图片
注意圈主的回调函数,接收和发送主要靠
在这里插入图片描述
画横线部分的回调函数,下面讲一下如何做到任意长度数据的接收及发送,

接收:
对于长度长度不长的直接放入内存即可
ZYNQ LWIP实现任意长度数据接收发送_第3张图片
然后根据对应的数据格式定义结构体直接解析即可
ZYNQ LWIP实现任意长度数据接收发送_第4张图片

ZYNQ LWIP实现任意长度数据接收发送_第5张图片
对于发射,主要涉及的两个函数就是
ZYNQ LWIP实现任意长度数据接收发送_第6张图片

tcp_write及tcp_output
为了实现任意长度的数据发送,对数据进行拆包处理:
ZYNQ LWIP实现任意长度数据接收发送_第7张图片
最后只需给出数据的首地址及要发送的长度,即可实现任意数据的发送

你可能感兴趣的:(ZYNQ)