OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4775|回复: 4

请教下,lwip 轮询发送函数 ??

[复制链接]

259

主题

806

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1887
金钱
1887
注册时间
2012-10-28
在线时间
353 小时
发表于 2017-11-20 14:14:54 | 显示全部楼层 |阅读模式
3金钱
本帖最后由 hpdell 于 2017-11-20 14:17 编辑

请教下,关于lwip 轮询函数

tcp_poll(tpcb,tcp_echoclient_poll,1);  //每秒中轮询2次,lwip最大一次只能够发送 1500-40 个字节,那么我如果一共有20MB字节的数据需要发送,该如何处理啊 ???

/*
轮询函数,
*/
static err_t tcp_echoclient_poll(void *arg, struct tcp_pcb *tpcb)
{
        err_t ret_err;
        struct tcp_client_struct *es;
        es = (struct tcp_client_struct*)arg;

        if(es != NULL)  //连接处于空闲可以发送数据
        {
                if(ReadDataTxStatus())        //判断是否有数据要发送
                {
                        es->p=pbuf_alloc(PBUF_TRANSPORT, strlen((char*)tcp_client_sendbuf),PBUF_POOL);        //申请内存
                        pbuf_take(es->p,(char*)tcp_client_sendbuf,strlen((char*)tcp_client_sendbuf));        //将tcp_client_sentbuf[]中的数据拷贝到es->p_tx中
                        tcp_echoclient_send(tpcb,es);//将tcp_client_sentbuf[]里面复制给pbuf的数据发送出去
                        CLIENT_DATA_SEND_CLEAR_FLAG;        //清除数据发送标志
                        if(es->p)pbuf_free(es->p);        //释放内存
                }
    else if(es->state == ES_TCPCLIENT_CLOSING)
                {
                        tcp_echoclient_connection_close(tpcb,es);//关闭TCP连接
                }
                ret_err=ERR_OK;
        }
  else
        {
                tcp_abort(tpcb);//终止连接,删除pcb控制块
                ret_err=ERR_ABRT;
        }
        return ret_err;
}








最佳答案

查看完整内容[请看2#楼]

把跟数据发送有关的从tcp_poll函数中提出来,专门做一个发送函数,然后直接调用这个发送函数发送!参考F429和F767开发板的例程,至于你的20M字节,分开发送啊!多发送几次不就行了。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-11-20 14:14:55 | 显示全部楼层
把跟数据发送有关的从tcp_poll函数中提出来,专门做一个发送函数,然后直接调用这个发送函数发送!参考F429和F767开发板的例程,至于你的20M字节,分开发送啊!多发送几次不就行了。
回复

使用道具 举报

259

主题

806

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1887
金钱
1887
注册时间
2012-10-28
在线时间
353 小时
 楼主| 发表于 2017-11-21 15:35:51 | 显示全部楼层
zuozhongkai 发表于 2017-11-20 14:14
把跟数据发送有关的从tcp_poll函数中提出来,专门做一个发送函数,然后直接调用这个发送函数发送!参考F429 ...


回复

使用道具 举报

1

主题

10

帖子

0

精华

新手上路

积分
49
金钱
49
注册时间
2016-2-26
在线时间
8 小时
发表于 2018-4-27 14:14:55 | 显示全部楼层
大神  请问问题解决了吗?我现在也想把发送过程从回调函数中提取出来,但是不会提去啊?
回复

使用道具 举报

259

主题

806

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1887
金钱
1887
注册时间
2012-10-28
在线时间
353 小时
 楼主| 发表于 2018-5-3 11:57:08 | 显示全部楼层
EasyC 发表于 2018-4-27 14:14
大神  请问问题解决了吗?我现在也想把发送过程从回调函数中提取出来,但是不会提去啊?

你好,整点院子的有历程啊,你可以参考就行了,我也是参考他们的历程的

历程f429, f767随便哪个都可以
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 20:44

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表