野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 13834|回复: 11

6. Ethernet_TCP_server 怎么发送和接收数据?求指点

[复制链接]
发表于 2017-10-31 20:46:53 | 显示全部楼层 |阅读模式
     例程  6. Ethernet_TCP_server 测试成功。电脑发的数据反射回来,串口也发出。查看调用串口位置大概知道接收数据在static err_t tcp_echoserver_recv
估计发送应该是static void tcp_echoserver_send 但是就是整不出来。求大神把这例程完善一下吧
回复

使用道具 举报

发表于 2017-11-1 08:44:47 | 显示全部楼层
所以例程不是能正常工作么,问题在哪
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-1 08:48:55 | 显示全部楼层
flyleaf 发表于 2017-11-1 08:44
所以例程不是能正常工作么,问题在哪

我要自己发送和接收数据,目前只能测试连接。能整个发送和接收的接口吗?
回复 支持 反对

使用道具 举报

发表于 2017-11-1 09:08:25 | 显示全部楼层
549747249 发表于 2017-11-1 08:48
我要自己发送和接收数据,目前只能测试连接。能整个发送和接收的接口吗?

就是tcp_echoserver_send函数,最终调用lwip的tcp发送接口
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-1 09:15:09 | 显示全部楼层
flyleaf 发表于 2017-11-1 09:08
就是tcp_echoserver_send函数,最终调用lwip的tcp发送接口

static void tcp_echoserver_send(struct tcp_pcb *tpcb, struct tcp_echoserver_struct *es)估计是这个函数,tpcb,es这两个参数怎么给。麻烦说明一下咯
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-1 10:19:18 | 显示全部楼层
flyleaf 发表于 2017-11-1 09:08
就是tcp_echoserver_send函数,最终调用lwip的tcp发送接口

//LWIP数据发送,用户应用程序调用此函数来发送数据
//tpcb:TCP控制块
//返回值:0,成功;其他,失败
const u8 *tcp_server_sendbuf="Apollo STM32F4/F7 TCP Server send data\r\n";
u8 tcp_server_flag;       

err_t tcp_server_usersent(struct tcp_pcb *tpcb)
{
    err_t ret_err;
        struct tcp_echoserver_struct *es;
        es=tpcb->callback_arg;
        if(es!=NULL)  //连接处于空闲可以发送数据
        {
        es->p=pbuf_alloc(PBUF_TRANSPORT, strlen((char*)tcp_server_sendbuf),PBUF_POOL);        //申请内存
        pbuf_take(es->p,(char*)tcp_server_sendbuf,strlen((char*)tcp_server_sendbuf));        //将tcp_server_sentbuf[]中的数据拷贝到es->p_tx中
        tcp_echoserver_send(tpcb,es);   //将tcp_server_sentbuf[]里面复制给pbuf的数据发送出去
        tcp_server_flag&=~(1<<7);            //清除数据发送标志
        if(es->p!=NULL)pbuf_free(es->p);//释放内存
                    ret_err=ERR_OK;
        }
        return ret_err;
}
void send(void)
{
        tcp_server_usersent(tcp_echoserver_pcb);
}
我抄来的,复制进去也不行发送数据。求解答
回复 支持 反对

使用道具 举报

发表于 2017-11-1 10:55:48 | 显示全部楼层
549747249 发表于 2017-11-1 10:19
//LWIP数据发送,用户应用程序调用此函数来发送数据
//tpcb:TCP控制块
//返回值:0,成功;其他,失败

例程那里有演示怎么调用的啊,学例程里就可以了,这个好久没搞都忘记了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-1 10:57:12 | 显示全部楼层
flyleaf 发表于 2017-11-1 10:55
例程那里有演示怎么调用的啊,学例程里就可以了,这个好久没搞都忘记了

例程里没有,只有连接上
回复 支持 反对

使用道具 举报

发表于 2017-11-1 11:06:35 | 显示全部楼层
549747249 发表于 2017-11-1 10:57
例程里没有,只有连接上

Z@[[%}61G1{S3R3GH2$A${H.png
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-11-1 16:24:10 | 显示全部楼层

根本无法发送自己的数据啊!整了几天了,自动接收数据是有数据
  es->p=pbuf_alloc(PBUF_TRANSPORT, strlen((char*)tcp_server_sendbuf),PBUF_POOL);        //申请内存
        pbuf_take(es->p,(char*)tcp_server_sendbuf,strlen((char*)tcp_server_sendbuf));        //将tcp_server_sentbuf[]中的数据拷贝到es->p_tx中
        tcp_echoserver_send(tpcb,es);   //将tcp_server_sentbuf[]里面复制给pbuf的数据发送出去

根本没有数据发出来啊,帮忙看一下
回复 支持 反对

使用道具 举报

发表于 2017-11-1 18:02:22 | 显示全部楼层
549747249 发表于 2017-11-1 16:24
根本无法发送自己的数据啊!整了几天了,自动接收数据是有数据
  es->p=pbuf_alloc(PBUF_TRANSPORT, str ...

那你还是直接看tcp_echoserver_send函数怎么实现的吧,它调用了tcp_write函数,用它发送数据的
回复 支持 反对

使用道具 举报

发表于 2019-4-19 14:05:24 | 显示全部楼层
问一下,你的出来了吧,能告诉我怎么设的吗
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 15:09 , Processed in 0.066224 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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