jum 发表于 2019-4-1 00:30:38

关于TCP接收到的数据使用



这是开发板自带的程序。我要使用接收的数据和事先定义的值进行比较,为真LED3_ON,为假LED3_OFF.
需要如何操作。请赐教》》》》》》》》》》》

#include "main.h"
int aa,jj;
/***********************************************************************
º¯ÊýÃû³Æ£ºtcp_server_recv(void *arg, struct tcp_pcb *pcb,struct pbuf *p,err_t err)
¹¦    ÄÜ£ºTCPÊý¾Ý½ÓÊպͷ¢ËÍ
×¢    Ò⣺ÕâÊÇÒ»¸ö»Øµ÷º¯Êý£¬µ±Ò»¸öTCP¶Îµ½´ïÕâ¸öÁ¬½Óʱ»á±»µ÷ÓÃ
***********************************************************************/
static err_t tcp_server_recv(void *arg, struct tcp_pcb *pcb,struct pbuf *p,err_t err)
{
      
struct pbuf *p_temp = p;

if(p_temp != NULL)
{   
      
      aa++;
          if(aa==1)
          { LED2_ON;}
          if (aa==2)
          {
            LED2_OFF;
            aa=0;
         }
         
         
         
tcp_recved(pcb, p_temp->tot_len);//»ñÈ¡Êý¾Ý³¤¶È tot_len£ºtcpÊý¾Ý¿éµÄ³¤¶È

         
         
         
         while(p_temp != NULL)
         
{   
   /******½«Êý¾ÝÔ­Ñù·µ»Ø*******************/
   tcp_write(pcb,p_temp->payload,p_temp->len,TCP_WRITE_FLAG_COPY);// payloadΪTCPÊý¾Ý¿éµÄÆðʼλÖà     
   tcp_output(pcb);
   p_temp = p_temp->next;
}
}
else
{
tcp_close(pcb);            /* ×÷ΪTCP·þÎñÆ÷²»Ó¦Ö÷¶¯¹Ø±ÕÕâ¸öÁ¬½Ó£¿ */
}
/* ÊͷŸÃTCP¶Î */
pbuf_free(p);
err = ERR_OK;
return err;
}

/***********************************************************************
º¯ÊýÃû³Æ£ºtcp_server_accept(void *arg, struct tcp_pcb *pcb,struct pbuf *p,err_t err)
¹¦    ÄÜ£º»Øµ÷º¯Êý
×¢    Ò⣺ÕâÊÇÒ»¸ö»Øµ÷º¯Êý£¬µ±Ò»¸öÁ¬½ÓÒѾ­½ÓÊÜʱ»á±»µ÷ÓÃ
***********************************************************************/
static err_t tcp_server_accept(void *arg,struct tcp_pcb *pcb,err_t err)
{
tcp_setprio(pcb, TCP_PRIO_MIN);   /* ÉèÖûص÷º¯ÊýÓÅÏȼ¶£¬µ±´æÔÚ¼¸¸öÁ¬½ÓÊ±ÌØ±ðÖØÒª,´Ëº¯Êý±ØÐëµ÷ÓÃ*/
tcp_recv(pcb,tcp_server_recv);   /* ÉèÖÃTCP¶Îµ½Ê±µÄ»Øµ÷º¯Êý */
err = ERR_OK;
return err;
}

/***********************************************************************
º¯ÊýÃû³Æ£ºTCP_server_init(void)
¹¦    ÄÜ£ºÍê³ÉTCP·þÎñÆ÷µÄ³õʼ»¯£¬Ö÷ÒªÊÇʹµÃTCPͨѶ¿ì½øÈë¼àÌý״̬
***********************************************************************/
void TCP_server_init(void)
{
struct tcp_pcb *pcb;
/*****************************************************/
pcb = tcp_new();         /* ½¨Á¢Í¨ÐŵÄTCP¿ØÖÆ¿é(pcb) */
tcp_bind(pcb,IP_ADDR_ANY,TCP_SERVER_PORT);      /* °ó¶¨±¾µØIPµØÖ·ºÍ¶Ë¿ÚºÅ£¨×÷Ϊtcp·þÎñÆ÷£© */
pcb = tcp_listen(pcb);      /* ½øÈë¼àÌý״̬ */
tcp_accept(pcb,tcp_server_accept);      /* ÉèÖÃÓÐÁ¬½ÓÇëÇóʱµÄ»Øµ÷º¯Êý */
}


butterflyspring 发表于 2019-5-31 16:38:37

看一下官方的例程,或者试着跑一下,参照一下:)
[‎5/‎31/‎2019 4:35 PM]Felix SHI:
stm32cube_fw_f4_v1210\STM32Cube_FW_F4_V1.21.0\Projects\STM324xG_EVAL\Applications\LwIP\LwIP_TCP_Echo_Client\Src

页: [1]
查看完整版本: 关于TCP接收到的数据使用