关于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); /* ÉèÖÃÓÐÁ¬½ÓÇëÇóʱµÄ»Øµ÷º¯Êý */
}
看一下官方的例程,或者试着跑一下,参照一下:)
[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]