TCP/IP STACK, bir sıkıntı var...

Başlatan RcALTIN, 24 Aralık 2011, 13:14:08

iyildirim

Yok hocam.
Bilgisayara program kurup TCP paketlerini loglamışsınız ya. 
O log dan  hem istek hem de dönen bilgi içeren kısım. Ne gitmiş, ne dönmüş.

 

gokhangokcen

#16



hocam resimleri yükledim
192.168.1.150 olan kendi yaptığım kart
diğeri ise bilgisayar üzerinden bağlanma isteği

muhtemelen işlemci ile ister iken birşeyleri eksik olarak talep ediyorum. ondan dolayı isteği geriye döndürüyor. Ama neyi eksik istediğimi bilmiyorum :(
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

gokhangokcen

konuyla alakalı sıkıntılar devam ediyor başına böyle bir durum gelen var mı ? ya da çözüm yolu önerebilecek  :-\
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

iyildirim

Hocam IP paketleri ile sorunumuz yok.
Görmek istediğimiz IP headerlarından ayıklanmış, HTTP header ları ile birlikte aşağıdakine benzer bir şey.
Request için buna benzer bir şey görmek gerek ki, hatalı olan yer neresi anlayabilelim.

GET index.asp HTTP/1.1
Accept:  */*
Accept-Charset: 1254
Accept-Language: tr
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Host: mysite.com
Content-Length: 102

cmd=SORGU&username =xxx&pass=yyy&.....
....


GET /images/banner.jpg HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Accept-Encoding: gzip
Accept-Charset: 1254
Accept-Language: tr
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022)
Host: mysite.com
Connection: Keep-Alive


gokhangokcen

#19
hocam demek istediğinizi anlayamadım eğer mümkünse skype msn vs ekleyebilir misiniz oradan görüşsek ve eğer müsait iseniz team ile bağlantı atsak bir incelesek çok memnun olurum

resim olarak yüklüyorum. bahsettiğiniz kısımları buldum bir tanesi telefonla bağlandığım başarılı olan diğeri karttan gelen istek.


Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

gokhangokcen

 iyildirim hocam elleriniz ağzınız yüreğiniz dert görmesin Allah razı olsun okudum sonunda asp dosyasını sıkıntısız bir vaziyette. Çalışan kod örneği aşağıda belki birilerinin ihtiyacı olur takıldıkları yerde yardımcı olmaya hazırım.

Kodun amacı; internet üzerinden bir bilgiyi sorgulama,içeriğini okumak,hava durumu vs gibi şeylerde okunabilir.

#include <main.h>

#fuses hs,nowdt,nolvp,nodebug,noprotect,nomclr

#use rs232(BAUD=9600,XMIT=PIN_C6,RCV=PIN_C7,BITS=8,PARITY=N,STOP=1)

int1 g_MyHttpSending = FALSE;
char g_MyHttpResponse[100];

long i=0;
int deger;

#use fast_io(a)
#use fast_io(b)
#use fast_io(c)
#use fast_io(d)
#use fast_io(e)

void MyHttpSend(void)
{
   // there are also non-ROM versions of these functions if you want to
   // dynamically control the parameters.

   HttpClientSetHostNameROM((rom char*)"192.168.1.106");
   HttpClientSetUrlROM((rom char*)"/a.asp");
  HttpClientSetCustomHeadersROM((rom char*)"nAccept: *.*\r\nAccept-Language: tr-tr\r\nHost: 192.168.1.106\r\nAccept-Encoding: gzip\r\nConnection: Close\r\n\r\n");
   HttpClientSetHostPort(80);
   HttpClientSetResponseBuffer(g_MyHttpResponse,sizeof(g_MyHttpResponse));

   HttpClientStart();

}

void StackPrintfChanges(void)
{
   static enum {PRINT_INIT=0, PRINT_NO_MAC, PRINT_NO_DHCP, PRINT_IDLE} state=0;

   switch(state)
   {
      case PRINT_INIT:
         printf("\n\rNo MAC Link: %X:%X:%X:%X:%X:%X", MY_MAC_BYTE1, MY_MAC_BYTE2, MY_MAC_BYTE3, MY_MAC_BYTE4, MY_MAC_BYTE5, MY_MAC_BYTE6);
         state = PRINT_NO_MAC;
         break;

      case PRINT_NO_MAC:
         if (MACIsLinked())
         {
           #if defined(STACK_USE_DHCP_CLIENT)
            if (!DHCPIsEnabled(0))
           #else
            if (0)
           #endif
            {
               printf("\n\rDHCP Disabled: %u.%u.%u.%u", MY_IP_BYTE1, MY_IP_BYTE2, MY_IP_BYTE3, MY_IP_BYTE4);
               state = PRINT_IDLE;
            }
            else
            {
               printf("\n\rDHCP Not Bound");
               state = PRINT_NO_DHCP;
            }
         }
         break;

     #if defined(STACK_USE_DHCP_CLIENT)
      case PRINT_NO_DHCP:
         if (!MACIsLinked())
         {
            state = PRINT_INIT;
            break;
         }
         if (DHCPIsBound(0))
         {
            state = PRINT_IDLE;
            printf("\n\rDHCP Bound: %u.%u.%u.%u", MY_IP_BYTE1, MY_IP_BYTE2, MY_IP_BYTE3, MY_IP_BYTE4);
         }
         break;
     #endif

      case PRINT_IDLE:
         if (
               !MACIsLinked()
              #if defined(STACK_USE_DHCP_CLIENT)
               || (DHCPIsEnabled(0) && !DHCPIsBound(0))
              #endif
            )
         {
            state = PRINT_INIT;
         }
         break;
   }
}

void IPAddressInit(void)
{
   //MAC address of this unit
   MY_MAC_BYTE1=MY_DEFAULT_MAC_BYTE1;
   MY_MAC_BYTE2=MY_DEFAULT_MAC_BYTE2;
   MY_MAC_BYTE3=MY_DEFAULT_MAC_BYTE3;
   MY_MAC_BYTE4=MY_DEFAULT_MAC_BYTE4;
   MY_MAC_BYTE5=MY_DEFAULT_MAC_BYTE5;
   MY_MAC_BYTE6=MY_DEFAULT_MAC_BYTE6;

   //IP address of this unit
   MY_IP_BYTE1=MY_DEFAULT_IP_ADDR_BYTE1;
   MY_IP_BYTE2=MY_DEFAULT_IP_ADDR_BYTE2;
   MY_IP_BYTE3=MY_DEFAULT_IP_ADDR_BYTE3;
   MY_IP_BYTE4=MY_DEFAULT_IP_ADDR_BYTE4;

   //network gateway
   MY_GATE_BYTE1=MY_DEFAULT_GATE_BYTE1;
   MY_GATE_BYTE2=MY_DEFAULT_GATE_BYTE2;
   MY_GATE_BYTE3=MY_DEFAULT_GATE_BYTE3;
   MY_GATE_BYTE4=MY_DEFAULT_GATE_BYTE4;

   //subnet mask
   MY_MASK_BYTE1=MY_DEFAULT_MASK_BYTE1;
   MY_MASK_BYTE2=MY_DEFAULT_MASK_BYTE2;
   MY_MASK_BYTE3=MY_DEFAULT_MASK_BYTE3;
   MY_MASK_BYTE4=MY_DEFAULT_MASK_BYTE4;
}

void main()
{
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_comparator(NC_NC_NC_NC);
setup_wdt(WDT_OFF);
setup_ccp1(CCP_OFF);

set_tris_a(0b00000010);
set_tris_b(0x00);
set_tris_c(0b10010000);
set_tris_d(0x00);
set_tris_e(0x00);

output_a(0x00);
output_b(0x00);
output_c(0x00);
output_d(0x00);
output_e(0x00);

   IPAddressInit();
   TickInit();
   enable_interrupts(GLOBAL);
   StackInit();


   while(TRUE)
   {

      StackTask();

      StackPrintfChanges();

      StackApplications();

   if (!input(PIN_A1))    // todo: specify action condition, like a button press
      {
         g_MyHttpSending = TRUE;
         MyHttpSend();

         output_high(PIN_B1);
         puts(g_MyHttpResponse);
         delay_ms(1000);
         output_low(PIN_B1);
         deger=HttpClientGetResult();
         putc(deger);
      }
      else if (!HttpClientIsBusy() && g_MyHttpSending)
      {
         g_MyHttpSending = FALSE;

         // todo: if you want to see the pass/fail of the request,
         //       use HttpClientGetResult()

         // todo: if you want to see the data read from the server,
         //       look at the g_MyHttpResponse[] string
      }

      //TODO: User Code
      i++;
      if(i>=1000)
      {
      output_toggle(PIN_B0);
      i=0;
      }
      
      if(g_MyHttpResponse[0]=='O')
      {output_high(PIN_B3);}
      else{output_low(PIN_B3);}
      //TODO: User Code
   }

}
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.