OpenEdv-开源电子网

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

哪位大神帮我改下程序,实现stm32不间断向上位机发送数据,直到上位机断开网络连接

[复制链接]

14

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2015-3-24
在线时间
20 小时
发表于 2015-3-30 07:35:33 | 显示全部楼层 |阅读模式
5金钱
原程序,通过下位机判断接收上位机数据的长度,选择发送给上位机什么数据,我想实现如果上位机不断开网络连接,下位机一直发送数据,直到上位机断开网络连接。
我之前改动会死循环,

哪位大神来帮我改动一下,谢谢,不胜感激

static void tcpecho_thread(void *arg)
{
  struct netconn *conn, *newconn;
  err_t err, accept_err;
  struct netbuf *buf;
 void *data="abcdef";
 u16_t len;
  err_t recv_err;
  int m;    
  LWIP_UNUSED_ARG(arg);

  /* Create a new connection identifier. */
  conn = netconn_new(NETCONN_TCP);
  
  if (conn!=NULL)
  {  
    /* Bind connection to well known port number 7. */
    err = netconn_bind(conn, NULL, 7);//目标端口号,以太网通讯
    
    if (err == ERR_OK)
    {
      /* Tell connection to go into listening mode. */
      netconn_listen(conn);
    
      while (1) 
      {
        /* Grab new connection. */
         accept_err = netconn_accept(conn, &newconn);
    
        /* Process the new connection. */
        if (accept_err == ERR_OK) 
        {
          recv_err = netconn_recv(newconn, &buf);
        while ( recv_err == ERR_OK) 
          {
            do 
            {
              netbuf_data(buf, &data, &len);
           
 switch(len)
  {
    case 1:for(m=1;m<=10;m++)
{
netconn_write(newconn, e1, 12, NETCONN_COPY);
}//仅实现发送十个数据
 
 
   break;
case 2:netconn_write(newconn, e2, 12, NETCONN_COPY);
   break;
case 3:netconn_write(newconn, e3, 12, NETCONN_COPY);
   break;
 
    case 4:netconn_write(newconn, e4, 12, NETCONN_COPY);
   break;
case 5:netconn_write(newconn, e5, 12, NETCONN_COPY);
   break;
case 6:for(m=1;m<=10;m++)
{
    netconn_write(newconn, e6, 12, NETCONN_COPY);
}

   break;
case 7:netconn_write(newconn, b, 66, NETCONN_COPY);
   break;
case 8:for(m=1;m<=10;m++)
{
netconn_write(newconn, b, 66, NETCONN_COPY);
}
   break;
}

          
            } 
            while (netbuf_next(buf) >= 0);
          
            netbuf_delete(buf);
recv_err = netconn_recv(newconn, &buf);
          }
        
          /* Close connection and discard connection identifier. */
          netconn_close(newconn);
          netconn_delete(newconn);
        }
      }
    }
    else
    {
      netconn_delete(newconn);
      printf(" can not bind TCP netconn");
    }
  }
  else
  {
    printf("can not create TCP netconn");
  }
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2015-3-30 19:03:31 | 显示全部楼层
回复

使用道具 举报

14

主题

26

帖子

0

精华

初级会员

Rank: 2

积分
144
金钱
144
注册时间
2015-3-24
在线时间
20 小时
 楼主| 发表于 2015-4-7 21:11:14 | 显示全部楼层
求助大神~~
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-24 12:22

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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