LPC1768 easyweb TCP/IP stack

Başlatan erenbasturk, 10 Temmuz 2014, 16:35:52

erenbasturk

Merhabalar,

LPC1768'le birlikte easyweb tcp/ip stack'yle çalışıyorum. Host'tan LPC'ye gönderdiğim paketin boyutunu gene aynı şekilde host tarafına geri göndermesini istiyorum. Bu işlemi yaparken bana gelen boyut bilgisi bir önceki bilgiyle yada aynı bilgiyle berbaber  tekrar geliyor. Gönderme işleminden sonra Buffer'ı temizliyorum fakat neden bu şekilde bir sorun var bilmiyorum.

Örneğin 12byte'lık bir veri gönderiyorum.
Giden:123456789121
Gelen:Gelen Datanin Uzunlugu 12 byte'dir.Gelen Datanin Uzunlugu 12 byte'dir.

2 Defa data'yı gönderiyor sizce problemim nerede?

/******************************************************************
 *****                                                        *****
 *****  Name: easyweb.c                                       *****
 *****  Ver.: 1.0                                             *****
 *****  Date: 07/05/2001                                      *****
 *****  Auth: Andreas Dannenberg                              *****
 *****        HTWK Leipzig                                    *****
 *****        university of applied sciences                  *****
 *****        Germany                                         *****
 *****  Func: implements a dynamic HTTP-server by using       *****
 *****        the easyWEB-API                                 *****
 *****                                                        *****
 ******************************************************************/

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

#include "lpc17xx.h"
#include "type.h"

#define extern            // Keil: Line added for modular project management

#include "easyweb.h"

#include "EMAC.h"         // Keil: *.c -> *.h    // ethernet packet driver
#include "tcpip.h"        // Keil: *.c -> *.h    // easyWEB TCP/IP stack
#include "webpage.h"                             // webside for our HTTP server (HTML)



int main(void)
{ 
  /* SystemClockUpdate() updates the SystemFrequency variable */
  SystemClockUpdate();

  TCPLowLevelInit();
	LPC_SC->PCONP |= (1U<<15); // GPIO port'unun clocklarini aktif et
	LPC_GPIO2->FIODIR |= (1U << 3) | (1U << 4) | (1U << 5); //GPIO2.3,4,5 pinlerini çikis olarak ayarla	

/*
  *(unsigned char *)RemoteIP = 24;               // uncomment those lines to get the
  *((unsigned char *)RemoteIP + 1) = 8;          // quote of the day from a real
  *((unsigned char *)RemoteIP + 2) = 69;         // internet server! (gateway must be
  *((unsigned char *)RemoteIP + 3) = 7;          // set to your LAN-router)

  TCPLocalPort = 2025;
  TCPRemotePort = TCP_PORT_QOTD;

  TCPActiveOpen();

  while (SocketStatus & SOCK_ACTIVE)             // read the quote from memory
  {                                              // by using the hardware-debugger
    DoNetworkStuff();
  }
*/

  HTTPStatus = 0;                   // clear HTTP-server's flag register
  TCPLocalPort = TCP_PORT_HTTP;     // set port we want to listen to

  while (1)                         // repeat forever
  {
    if (!(SocketStatus & SOCK_ACTIVE))
    { 
      TCPPassiveOpen();   // listen for incoming TCP-connection
    }
    DoNetworkStuff();     // handle network and easyWEB-stack
                          // events
    datasendreceive();
  }
}

// This function implements a very simple dynamic HTTP-server.
// It waits until connected, then sends a HTTP-header and the
// HTML-code stored in memory. Before sending, it replaces
// some special strings with dynamic values.
// NOTE: For strings crossing page boundaries, replacing will
// not work. In this case, simply add some extra lines
// (e.g. CR and LFs) to the HTML-code.




void datasendreceive(void)
{
	if( SocketStatus & SOCK_CONNECTED) //TCP baglantisi icin bagli birisi varmi
	{
		if(SocketStatus & SOCK_DATA_AVAILABLE) //gelen bir data var mi?
		{
			
			
			TCPReleaseRxBuffer();
		}
		
		if(SocketStatus & SOCK_TX_BUF_RELEASED)
		{
		
		unsigned char katar[50];
		sprintf(katar,"Gelen Datanin Uzunlugu %d byte'dir.",TCPRxDataCount);
		
		
		memcpy(TCP_TX_BUF,katar,30);
		TCPTxDataCount = 	30;
		
	
				
		TCPTransmitTxBuffer();
	
		TCPClose();
		}
		
		//if(deneme == 1) LPC_GPIO2->FIOSET |=(1U << 3);  else LPC_GPIO2->FIOCLR |= (1U << 3);
		//if(deneme == 2) LPC_GPIO2->FIOSET |=(1U << 4);  else LPC_GPIO2->FIOCLR |= (1U << 4);
		//if(deneme == 3) LPC_GPIO2->FIOSET |=(1U << 5);  else LPC_GPIO2->FIOCLR |= (1U << 5);
		//if(strstr(gelen_veri,"led0=on")) LPC_GPIO2->FIOSET |=(1U << 3);  else LPC_GPIO2->FIOCLR |= (1U << 3);
		//if(strstr(gelen_veri,"led1=on")) LPC_GPIO2->FIOSET |=(1U << 4);  else LPC_GPIO2->FIOCLR |= (1U << 4);
		//if(strstr(gelen_veri,"led2=on")) LPC_GPIO2->FIOSET |=(1U << 5);  else LPC_GPIO2->FIOCLR |= (1U << 5);
		
	
	
	
	
	
	
	
	
	}
	
	
	

}

erenbasturk

sorun çözüldü. Sorun ağı izlediğim programdan kaynaklanmış.