Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

lpc2368 ethernet örnek

Başlatan armsistem, 28 Ocak 2012, 22:42:10

armsistem

Arkadaşlar merhaba , lpc2368 ethernetle ilgili araştırma yapıyorum ,bulduğum bilgileri ve takıldığım noktaları sizinle paylaşmak istedim. (Barış Samancı Arkadaşımızın yaptığı çalışmaya göre çok daha basit bir örnek.) ('http://www.keil.com/download/docs/295.asp') Sayfasından örneği indirdim ve lpc2368+dp83848 bir pcb üzerinde test ettim, vede çalıştı.

Aşağıda web sayfasına bir progress bar var , genişliği ölçtüğü ADC'den alıyor (benim çalıştığım mcb200 olmadığından adc değeri gönderemiyorum.)

<table bgcolor="#ff0000" border="5" cellpadding="0" cellspacing="0" width="500">
<tr>
<td>
<table width="AD7%" border="0" cellpadding="0" cellspacing="0">
<tr><td bgcolor="#00ff00">&nbsp;</td></tr>
</table>
</td>
</tr>
</table>



web sayfasına veri gönderme aşağıda ;web sayfasında AD7 değişkenine veri gönderiyor.

void InsertDynamicValues(void)
{
  unsigned char *Key;
           char NewKey[5];
  unsigned int i;
  
  if (TCPTxDataCount < 4) return;                     // there can't be any special string
  
  Key = TCP_TX_BUF;
  
  for (i = 0; i < (TCPTxDataCount - 3); i++)
  {
    if (*Key == 'A')
     if (*(Key + 1) == 'D')
       if (*(Key + 3) == '%')
         switch (*(Key + 2))
         {
           case '7' :                                 // "AD7%"?
           {
             sprintf(NewKey, "%3u", GetAD7Val());     // insert AD converter value
             memcpy(Key, NewKey, 3);                  // channel 7 (P6.7)
             break;
           }
           case 'A' :                                 // "ADA%"?
           {
             sprintf(NewKey, "%3u", GetTempVal());    // insert AD converter value
             memcpy(Key, NewKey, 3);                  // channel 10 (temp.-diode)
             break;
           }
         }
    Key++;
  }
}


Takıldığım nokta ; diyelim web sayfasında bir textbox ve buton var. Web sayfasındaki textbox'taki verileri işlemciyle nasıl okurum. Veya butona basılıp basılmadığını nasıl kontrol ederim. Yardımlarınız için şimdiden teşekkür ederim.

yamak

Bunu html ile yapamazsınız. Meselan bir check box ın durumunu değiştirmek vesayre tarzı işlemler için javascript gibi diller kullanmalısınız. Mesela o check box a da tıklandığında devre üzerindeki ledleri yakmak istiyosanız bunun için de CGI gibi script diller kullanmalısınız

armsistem

#2
Yani veri göndermek kolay ama okumak biraz daha zor.

iyildirim

Aslında sadece HTML ile de yapmak mümkün.. 

HTML kodunuz da textbox vs. leri bir form nesnesi üzerine yerleştirin. Form etiketinde GET veya POST şeklinde methodu belirleyin.

Adı submit olan bir button da ekleyin..

Butona tıkladığınızda  form içeriği post veya get stringinde gönderilecek.. 
Örneğin ..../index.htm?led1=1&text1=yaksöndür gibi..

mcu da yapmanız gereken gelen stringi çözüp uygun işlemi yapmak..

Teknik olarak bakarsak bu konuda olduğu şekilde,  PC de-WEB sunucuda NULL porta bir program yardımıyla oluşturduğunuz stringleri basarak HTML sayfalarını oluşturursanız bir CGI.exe yapmış olursunuz.  Zamanında server side scripting dilleri bu kadar çeşitli ve güçlü değilken çok kullanılırdı.



armsistem

İlk önce yanıt olarak teşekkürler ama , şu an itibariyle seviyem söylediğiniz teknikleri kod çeviremiyeğim doğrultusunda yinede teşekkür ederim.

armsistem

Arkadaşlar merhaba,basit bir örnek verebilecek yokmu,webte bir butona basilsin kitte bir led yakmak istiyorum.

Yardimlariniz için şimdiden teşekkür ederim.

haydarpasamikro

Biraz html kodlama, biraz ip networking frame fromatları, bi de wireshirk ile paket analizi ile işler güzel gider..
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

haydarpasamikro

Keil in RL-ARM indirip kurunuz. Bu Realtime kütüphanesini(TCPnet) inceleyiniz. Gelen örneklerde bendeki Keil MCB1700 deneme kartıma hazırlanmış örnekler de var. Kart üzerindeki ledleri vs. kontrol edebiliyorsunuz.
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

armsistem

#8
Merhaba ; haydarpasamikro arkadaşımızın dediklerini yaptrım mcb2300 kiti için yapılmış http_demo örneği var , lakin derlerken hata veriyor uğraştım çözülmedi hata aşağıda.
FCARM.exe ile web sayfalarını web.c dosyasını dönüştürüyorum.


Build target 'MCB2300'
custom translating Web.inp...
Custom: FCARM.exe index.htm, keil.gif, nxp_logo.gif,llblue.jpg,pabb.gif,home.png,network.cgi,leds.cgi,tcp.cgi,system.cgi,lcd.cgi,language.cgi,ad.cgi Web.c nopr
compiling HTTP_demo.c...
compiling HTTP_CGI.c...
compiling WEB.C...
Web\WEB.C(1133): error:  #29: expected an expression
Web\WEB.C(1133): error:  #67: expected a "}"
Web\WEB.C(1579): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1579): error:  #146: too many initializer values
Web\WEB.C(1580): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1580): error:  #146: too many initializer values
Web\WEB.C(1581): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1581): error:  #146: too many initializer values
Web\WEB.C(1582): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1582): error:  #146: too many initializer values
Web\WEB.C(1583): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1583): error:  #146: too many initializer values
Web\WEB.C(1584): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1584): error:  #146: too many initializer values
Web\WEB.C(1585): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1585): error:  #146: too many initializer values
Web\WEB.C(1586): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1586): error:  #146: too many initializer values
Web\WEB.C(1587): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1587): error:  #146: too many initializer values
Web\WEB.C(1588): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1588): error:  #146: too many initializer values
Web\WEB.C(1589): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1589): error:  #146: too many initializer values
Web\WEB.C(1597): error:  #40: expected an identifier
Web\WEB.C(1597): error: At end of source:  #65: expected a ";"
Web\WEB.C(19): warning:  #177-D: variable "Web" was declared but never referenced
compiling Net_Config.c...
assembling LPC2300.s...
compiling LPC23_EMAC.c...
compiling LCD.c...
Target not created





Kod aşağıda

/*---------------------------------------------------------------------------*/

const U8 network_cgi[] = {
   "#=====================================================================================\r\n"
   "# ----- This is a TcpNet Script file which runs on TcpNet -------\r\n"
   "# It generates a dynamic page to edit/change IP address, Net mask and Default"
   " Gateway\r\n"
   "#=====================================================================================\r\n"
   "t <body text=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF ALINK=#FF0000>\r\n"
   "t <br><H2 ALIGN=CENTER>Network Settings</H2>\r\n"
   "t <FORM ACTION=oprresult.cgi METHOD=GET NAME=CGI>\r\n"
   "t <TABLE ALIGN=\"CENTER\" BORDER=0 WIDTH=60%><TR BGCOLOR=#aaccff>\r\n"
   "t <TH WIDTH=40%>Item</TH><TH WIDTH=60%>Setting</TH></TR>\r\n"
   "# Here begin data setting which is formatted in HTTP_CGI.C module\r\n"
   "t <TR><TD>Device Name</TD>\r\n"
   "c n n <TD><INPUT NAME=dname SIZE=16 MAXLENGTH=16 VALUE=\"%s\"></TD></TR>\r\n"
   "t <TR><TD>LAN IP Address</TD>\r\n"
   "c n i <TD><INPUT TYPE=TEXT NAME=ip VALUE=\"%d.%d.%d.%d\" SIZE=18 MAXLENGTH=18></TD></TR>\r\n"
   "t <TR><TD>LAN Net Mask</TD>\r\n"
   "c n m <TD><INPUT TYPE=TEXT NAME=msk VALUE=\"%d.%d.%d.%d\" SIZE=18 MAXLENGTH=18></TD></TR>\r\n"
   "t <TR><TD>Default Gateway</TD>\r\n"
   "c n g <TD><INPUT TYPE=TEXT NAME=gw VALUE=\"%d.%d.%d.%d\" SIZE=18 MAXLENGTH=18></TD></TR>\r\n"
   "t <TR><TD>Primary DNS Server</TD>\r\n"
   "c n p <TD><INPUT TYPE=TEXT NAME=pdns VALUE=\"%d.%d.%d.%d\" SIZE=18 MAXLENGTH=18></TD></TR>\r\n"
   "t <TR><TD>Secondary DNS Server</TD>\r\n"
   "c n s <TD><INPUT TYPE=TEXT NAME=sdns VALUE=\"%d.%d.%d.%d\" SIZE=18 MAXLENGTH=18></TD></TR>\r\n"
   "# t <TR><TD>Remote IP Address(only for slaves)</TD>\r\n"
   "# c n 2 <TD><INPUT TYPE=TEXT NAME=remip VALUE=\"%d.%d.%d.%d\" SIZE=18 MAXLENGTH=18></TD></TR>\r\n"
   "t <TR><TD>Listen Port Number</TD>\r\n"
   "c n 1 <TD><INPUT TYPE=TEXT NAME=tcpport VALUE=\"%d\" SIZE=5 MAXLENGTH=5></TD></TR>\r\n"
   "t <TR><TD align=center colspan=2><br><br><br>\r\n"
   "# Here begin button definitions\r\n"
   "t <INPUT TYPE=SUBMIT NAME=set VALUE=\"Change\" id=\"sbm\">\r\n"
   "t <INPUT TYPE=RESET VALUE=\"Undo\">\r\n"
   "t </TD></TR></FORM></BODY></HTML>\r\n"
   ".\r\n"
};


/*---------------------------------------------------------------------------*/

const U8 system_cgi[] = {
   "#=====================================================================================\r\n"
   "# ----- This is a TcpNet Script file which runs on TcpNet -------\r\n"
   "# It generates a dynamic page to edit/change System Password.\r\n"
   "#=====================================================================================\r\n"
   "t <body text=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF ALINK=#FF0000>\r\n"
   "t <br><H2 ALIGN=CENTER>System Password</H2>\r\n"
   "t <FORM ACTION=oprresult.cgi METHOD=POST NAME=CGI>\r\n"
   "t <TABLE ALIGN=\"CENTER\" BORDER=0 WIDTH=60%><TR BGCOLOR=#aaccff>\r\n"
   "t <TH WIDTH=40%>Item</TH><TH WIDTH=60%>Setting</TH></TR>\r\n"
   "# Here begin data setting which is formatted in HTTP_CGI.C module\r\n"
   "t <TR><TD>User :</TD>\r\n"
   "t <TD>admin</TD></TR>\r\n"
   "t <TR><TD>Password :</TD>\r\n"
   "c d 2 <TD><INPUT TYPE=PASSWORD NAME=pw SIZE=10 MAXLENGTH=10 VALUE=\"%s\"></TD></TR>\r\n"
   "t <TR><TD>Retype your password :</TD>\r\n"
   "c d 2 <TD><INPUT TYPE=PASSWORD NAME=pw2 SIZE=10 MAXLENGTH=10 VALUE=\"%s\"></TD></TR>\r\n"
   "t <TR><TD align=center colspan=2><br><br><br>\r\n"
   "# Here begin button definitions\r\n"
   "t <INPUT TYPE=SUBMIT NAME=set VALUE=\"Change\" id=\"sbm\">\r\n"
   "t <INPUT TYPE=RESET VALUE=\"Undo\">\r\n"
   "t </TD></TR></FORM></BODY></HTML>\r\n"
   ".\r\n"
};


/*---------------------------------------------------------------------------*/

const U8 MACSetup_cgi[] = {
   "#=====================================================================================\r\n"
   "# ----- This is a TcpNet Script file which runs on TcpNet -------\r\n"
   "# It generates a dynamic page to change MAC Address\r\n"
   "#=====================================================================================\r\n"
   "t <body text=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF ALINK=#FF0000>\r\n"
   "t <br><H2 ALIGN=CENTER>MAC Address Configuration</H2>\r\n"
   "t <FORM ACTION=oprresult.cgi METHOD=GET NAME=CGI>\r\n"
   "t <TABLE ALIGN=\"CENTER\" BORDER=0 WIDTH=60%><TR BGCOLOR=#aaccff>\r\n"
   "t <TH WIDTH=40%>Item</TH><TH WIDTH=60%>Setting</TH></TR>\r\n"
   "# Here begin data setting which is formatted in HTTP_CGI.C module\r\n"
   "t <TR><TD>MAC Address</TD>\r\n"
   "c m 1 <TD><INPUT NAME=mac SIZE=12 MAXLENGTH=12 VALUE=\"%.2X%.2X%.2X%.2X%.2X%.2X\"></TD></TR>\r\n"
   "t <TR><TD align=center colspan=2><br><br><br>\r\n"
   "# Here begin button definitions\r\n"
   "t <INPUT TYPE=SUBMIT NAME=set VALUE=\"Change\" id=\"sbm\">\r\n"
   "t <INPUT TYPE=RESET VALUE=\"Undo\">\r\n"
   "t </TD></TR></FORM></BODY></HTML>\r\n"
   ".\r\n"
   "\r\n"
   "\r\n"
   "\r\n"
   "\r\n"
   "\r\n"
   "\r\n"
};


/*---------------------------------------------------------------------------*/

const U8 app_cgi[] = {
   "t <body text=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF ALINK=#FF0000>\r\n"
   "t <br><H2 ALIGN=CENTER>Application Settings</H2>\r\n"
   "t <FORM ACTION=oprresult.cgi METHOD=POST NAME=CGI>\r\n"
   "t <TABLE ALIGN=\"CENTER\" BORDER=0 WIDTH=60%><TR BGCOLOR=#aaccff>\r\n"
   "t <TH WIDTH=40%>Item</TH><TH WIDTH=60%>Setting</TH></TR>\r\n"
   "# Here begin data setting which is formatted in HTTP_CGI.C module\r\n"
   "t <TR><TD>Device No</TD>\r\n"
   "c a 1 <TD><INPUT NAME=dn SIZE=3 MAXLENGTH=3 VALUE=\"%d\"></TD></TR>\r\n"
   "t <TR><TD>&nbsp;</TD><TD>&nbsp;</TD></TR>\r\n"
   "t <TR><TD>Operation Mode</TD>\r\n"
   "c a 2 1 <TD><table width=\"300%\" border=\"2\"><TR><TD><INPUT type=radio %s NAME=om"
   " VALUE=\"153\">Normal</TD>\r\n"
   "c a 2 2 <TD><INPUT type=radio %s NAME=om VALUE=\"136\">Read ID</TD></TR>\r\n"
   "c a 2 3 <TR><TD><INPUT type=radio %s NAME=om VALUE=\"85\">ID(ASCII)</TD>\r\n"
   "c a 2 4 <TD><INPUT type=radio %s NAME=om VALUE=\"119\">Read Block</TD></TR>\r\n"
   "c a 2 5 <TR><TD><INPUT type=radio %s NAME=om VALUE=\"68\">BLOCK(ASCII)</TD>\r\n"
   "c a 2 6 <TD><INPUT type=radio %s NAME=om VALUE=\"102\">Read Sector</TD></TR> </table></TD></TR>\r\n"
   "t <TR><TD>MasterKey Type No</TD>\r\n"
   "c a 3 <TD><INPUT NAME=kn SIZE=3 MAXLENGTH=3 VALUE=\"%d\"></TD></TR>\r\n"
   "t <TR><TD>Block No</TD>\r\n"
   "c a 4 <TD><INPUT NAME=bn SIZE=3 MAXLENGTH=3 VALUE=\"%d\"></TD></TR>\r\n"
   "t <TR><TD>Sector No</TD>\r\n"
   "c a 5 <TD><INPUT NAME=sn SIZE=3 MAXLENGTH=3 VALUE=\"%d\"></TD></TR>\r\n"
   "t <TR><TD>Default Beep Time</TD>\r\n"
   "c a 6 <TD><INPUT NAME=bt SIZE=3 MAXLENGTH=3 VALUE=\"%d\"></TD></TR>\r\n"
   "t <TR><TD>Default Output Time</TD>\r\n"
   "c a 7 <TD><INPUT NAME=rt SIZE=3 MAXLENGTH=3 VALUE=\"%d\" sec></TD></TR>\r\n"
   "t <TR><TD>&nbsp;</TD></TR>\r\n"
   "t <TR><TD> Inverted Output</TD><TD>\r\n"
   "c a g <INPUT type=radio %s NAME=outinv VALUE=\"1\">Enable<INPUT type=radio %s"
   " NAME=outinv VALUE=\"0\">Disable\r\n"
   "t </TD></TR><TR><TD> White List Engine</TD><TD>\r\n"
   "c a i <INPUT type=radio %s NAME=wlsten VALUE=\"1\">Enable<INPUT type=radio %s"
   " NAME=wlsten VALUE=\"0\">Disable\r\n"
   "t </TD></TR><TR><TD>&nbsp;</TD></TR>\r\n"
   "t <TR><TD>UDP Log</TD><TD>\r\n"
   "c a 8 <INPUT type=radio %s NAME=udplog VALUE=\"1\">Enable<INPUT type=radio %s"
   " NAME=udplog VALUE=\"0\">Disable\r\n"
   "t </TD></TR><TR><TD>Remote IP Address</TD>\r\n"
   "c a a <TD><INPUT TYPE=TEXT NAME=udpip VALUE=\"%d.%d.%d.%d\" SIZE=18 MAXLENGTH=18></TD></TR>\r\n"
   "t <TR><TD>Remote Port</TD>\r\n"
   "c a b <TD><INPUT NAME=urp SIZE=5 MAXLENGTH=5 VALUE=\"%d\"></TD></TR>\r\n"
   "# t <TR><TD>Local Port</TD>\r\n"
   "# c a c <TD><INPUT NAME=ulp SIZE=5 MAXLENGTH=5 VALUE=\"%d\"></TD></TR>\r\n"
   "t <TR><TD align=center colspan=2><br><br><br>\r\n"
   "# Here begin button definitions\r\n"
   "t <INPUT TYPE=SUBMIT NAME=set VALUE=\"Change\" id=\"sbm\">\r\n"
   "t <INPUT TYPE=RESET VALUE=\"Undo\">\r\n"
   "t </TD></TR></FORM></BODY></HTML>\r\n"
   ".\r\n"
};


/*---------------------------------------------------------------------------*/

const U8 frmupdate_cgi[] = {
   "t <body text=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF ALINK=#FF0000>\r\n"
   "t <br><H2 ALIGN=CENTER>Firmware Update</H2>\r\n"
   "t <form action=oprresult.cgi method=POST enctype=\"multipart/form-data\" name=frmupdate>\r\n"
   "t <p align=\"center\"><br><br><br>File to upload:\r\n"
   "t <input name=\"File\" type=\"file\" size=\"100\" maxlength=\"1000\">\r\n"
   "t </p><p align=\"center\"><br><br>\r\n"
   "t  <input type=button value=\"Send\" OnClick=\"this.form.submit()\">\r\n"
   "t </p>\r\n"
   ".\r\n"
};


/*---------------------------------------------------------------------------*/

const U8 devoprs_htm[] = {
   "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\r\n"
   "<body text=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF ALINK=#FF0000>\r\n"
   "<br><H2 ALIGN=CENTER>Extra Device Operations</H2>\r\n"
   "<FORM ACTION=oprresult.cgi METHOD=POST>\r\n"
   "<p align=\"CENTER\"><input type=\"submit\" value=\"Set Factory Defaults\" name=\"sfdbtn\"><br>\r\n"
   "<b>Set factory defaults operation lasts about 2 minutes</b><br><br><br><br>\r\n"
   "<input type=\"submit\" value=\"Reboot Device\" name=\"rstbtn\"><br>\r\n"
   "<b>After the operation, the device will be rebooted automatically. Please reconnect.</b></p>\r\n"
   "</FORM></BODY>"
};


/*---------------------------------------------------------------------------*/

const U8 oprresult_cgi[] = {
   "t <body text=#000000 BGCOLOR=#ccddff LINK=#0000FF VLINK=#0000FF ALINK=#FF0000>\r\n"
   "t <br><H2 ALIGN=CENTER>Result Page</H2><br><br><br>\r\n"
   "c r 1 <p align=\"center\"><font size=\"5\" color=\"#FF0000\">%s</font></p>\r\n"
   ".\r\n"
};


/*---------------------------------------------------------------------------*/

const U8 main_htm[] = {
   "<body text=#000000 BGCOLOR=#ccddff><br><br><H2 ALIGN=CENTER>Welcome to RDR12ME</H2></body>\r\n"
};


/*---------------------------------------------------------------------------*/

const U8 menu_cgi[] = {
   "t <body background=\"llblue.jpg\" style=\"background-repeat: repeat-y;\">\r\n"
   "t <h2 align=\"center\"><font face=\"verdana\" color=\"#006699\">RDR12ME</font></h2><br><br>\r\n"
   "t <p align=\"center\"><font face=\"Verdana\" size=3><b>\r\n"
   "t <a href=\"/network.cgi\" target=\"main\">Network Settings</a><br><br>\r\n"
   "t <a href=\"/system.cgi\" target=\"main\">System Password</a><br><br>\r\n"
   "t <a href=\"/app.cgi\" target=\"main\">Application Settings</a><br><br>\r\n"
   "#t <a href=\"/currinfo.cgi\" target=\"main\">Current Info</a><br><br>\r\n"
   "t <a href=\"/devoprs.htm\" target=\"main\">Extra Device Operations</a><br><br>\r\n"
   "t <a href=\"/frmupdate.cgi\" target=\"main\">Firmware Update</a></b></font></p><br><br><br><br>\r\n"
   "t <p align=\"center\"><font face=\"Verdana\" size=2>\r\n"
   "t <a href=\"http://www.idanddc.com/\" target=\"main\">www.idanddc.com</a><br><br><br><br><br><br>\r\n"
   "c a d <B>FW Version :%s</B></font></p></body>\r\n"
   "# This is end of script. It must be closed with period.\r\n"
   ".\r\n"
};


/*---------------------------------------------------------------------------*/

const struct http_file FileTab[FILECNT] = {
   { "index.htm", (U8 *)&index_htm, 252 },
   { "llblue.jpg", (U8 *)&llblue_jpg, 3008 },
   { "network.cgi", (U8 *)&network_cgi, 1878 },
   { "system.cgi", (U8 *)&system_cgi, 1161 },
   { "MACSetup.cgi", (U8 *)&MACSetup_cgi, 1013 },
   { "app.cgi", (U8 *)&app_cgi, 2567 },
   { "frmupdate.cgi", (U8 *)&frmupdate_cgi, 436 },
   { "devoprs.htm", (U8 *)&devoprs_htm, 570 },
   { "oprresult.cgi", (U8 *)&oprresult_cgi, 206 },
   { "main.htm", (U8 *)&main_htm, 92 },
   { "menu.cgi", (U8 *)&menu_cgi, 904 },
};


/*----------------------------------------------------------------------------
 * end of file
 *---------------------------------------------------------------------------*/

 *---------------------------------------------------------------------------*/

haydarpasamikro

u32 tip dönüşümü yapılmış. yani unsigned int tipi u32 olarak bir yerde (type.h) tanımlanmış. Onu dahil etmek lazım.
Mikro Dünyası.Haydarpaşa Teknik ve Endüstri Meslek Lisesi Mikrodenetleyici Atl. Şefi

armsistem

Ekli dostum.


/*----------------------------------------------------------------------------
 *      RL-ARM - A P I 
 *----------------------------------------------------------------------------
 *      Name:    RTL.H 
 *      Purpose: Application Programming Interface. 
 *      Rev.:    V4.21
 *----------------------------------------------------------------------------
 *      This code is part of the RealView Run-Time Library.
 *      Copyright (c) 2004-2011 KEIL - An ARM Company. All rights reserved.
 *---------------------------------------------------------------------------*/

#ifndef __RTL_H__
#define __RTL_H__

/* RL-ARM version number. */
#define __RL_ARM_VER    421
 
#define __task          __declspec(noreturn)
#define __used          __attribute__((used))

#ifndef NULL
 #ifdef __cplusplus              // EC++
  #define NULL          0
 #else
  #define NULL          ((void *) 0)
 #endif
#endif

#ifndef EOF
 #define EOF            -1
#endif

#ifndef __size_t
 #define __size_t       1
 typedef unsigned int   size_t;
#endif

typedef signed char     S8;
typedef unsigned char   U8;
typedef short           S16;
typedef unsigned short  U16;
typedef int             S32;
typedef unsigned int    U32;
typedef long long       S64;
typedef unsigned long long U64;
typedef unsigned char   BIT;
typedef unsigned int    BOOL;

#ifndef __TRUE
 #define __TRUE         1
#endif
#ifndef __FALSE
 #define __FALSE        0
#endif

#ifdef __BIG_ENDIAN
 #define U32_LE(v)     	(U32)(__rev(v))
 #define U16_LE(v) 		(U16)(__rev(v) >> 16)
 #define U32_BE(v)      (U32)(v)
 #define U16_BE(v)      (U16)(v)
#else
 #define U32_BE(v) 		(U32)(__rev(v))
 #define U16_BE(v)      (U16)(__rev(v) >> 16)
 #define U32_LE(v)      (U32)(v)
 #define U16_LE(v)      (U16)(v)
#endif
#define ntohs(v)        U16_BE(v)
#define ntohl(v)        U32_BE(v)
#define htons(v)        ntohs(v)
#define htonl(v)        ntohl(v)

/*----------------------------------------------------------------------------
 *                             RTX Kernel API
 *---------------------------------------------------------------------------*/

#ifdef __cplusplus               // EC++
extern "C"  {
#endif

/* Definition of Semaphore type */
typedef U32 OS_SEM[2];

/* Definition of Mailbox type */
#define os_mbx_declare(name,cnt)    U32 name [4 + cnt]
typedef U32 OS_MBX[];

/* Definition of Mutex type */
typedef U32 OS_MUT[3];

/* Task Identification number. */
typedef U32 OS_TID;

/* Function return of system calls returning an object identification */
typedef void *OS_ID;

/* Function return of system calls indicating an event or completion state */
typedef U32 OS_RESULT;

/* Return codes */
#define OS_R_TMO        0x01
#define OS_R_EVT        0x02
#define OS_R_SEM        0x03
#define OS_R_MBX        0x04
#define OS_R_MUT        0x05

#define OS_R_OK         0x00
#define OS_R_NOK        0xff

#define OS_TCB_SIZE     48
#define OS_TMR_SIZE     8

/* Error Codes */
#define OS_ERR_STK_OVF  1
#define OS_ERR_FIFO_OVF 2
#define OS_ERR_MBX_OVF  3

#if !(__TARGET_ARCH_6S_M || __TARGET_ARCH_7_M || __TARGET_ARCH_7E_M)

/*----------------------------------------------------------------------------
 *      Functions ARM
 *---------------------------------------------------------------------------*/

/* Task Management */
#define os_sys_init(tsk)              os_sys_init0(tsk,0,NULL)
#define os_sys_init_prio(tsk,prio)    os_sys_init0(tsk,prio,NULL)
#define os_sys_init_user(tsk,prio,stk,size)                                   \
                                      os_sys_init0(tsk,prio|(size<<8),stk)
#define os_tsk_create(tsk,prio)       os_tsk_create0(tsk,prio,NULL,NULL)
#define os_tsk_create_user(tsk,prio,stk,size)                                 \
                                      os_tsk_create0(tsk,prio|(size<<8),stk,NULL)
#define os_tsk_create_ex(tsk,prio,argv) os_tsk_create_ex0(tsk,prio,NULL,argv)
#define os_tsk_create_user_ex(tsk,prio,stk,size,argv)                         \
                                      os_tsk_create_ex0(tsk,prio|(size<<8),stk,argv)
#define os_tsk_delete_self()          os_tsk_delete(0)
#define os_tsk_prio_self(prio)        os_tsk_prio(0,prio)
#define isr_tsk_get()                 os_tsk_self()

extern void      os_sys_init0 (void (*task)(void), U32 prio_stksz, void *stk);
extern OS_TID    os_tsk_create0 (void (*task)(void), U32 prio_stksz, 
                                 void *stk, void *argv);
extern OS_TID    os_tsk_create_ex0 (void (*task)(void *), U32 prio_stksz, 
                                    void *stk, void *argv);
extern OS_TID    os_tsk_self (void);
extern void      os_tsk_pass (void);
extern OS_RESULT os_tsk_prio (OS_TID task_id, U8 new_prio);
extern OS_RESULT os_tsk_delete (OS_TID task_id);

/* Event flag Management */
#define os_evt_wait_or(wflags,tmo)      os_evt_wait(wflags,tmo,__FALSE)
#define os_evt_wait_and(wflags,tmo)     os_evt_wait(wflags,tmo,__TRUE)

extern OS_RESULT os_evt_wait (U16 wait_flags, U16 timeout, BOOL and_wait);
extern void      os_evt_set (U16 event_flags, OS_TID task_id);
extern void      os_evt_clr (U16 clear_flags, OS_TID task_id);
extern void      isr_evt_set (U16 event_flags, OS_TID task_id);
extern U16       os_evt_get (void);

/* Semaphore Management */
extern void      os_sem_init (OS_ID semaphore, U16 token_count);
extern OS_RESULT os_sem_send (OS_ID semaphore);
extern OS_RESULT os_sem_wait (OS_ID semaphore, U16 timeout);
extern void      isr_sem_send (OS_ID semaphore);

/* Mailbox Management */
#define isr_mbx_check(mbx)              os_mbx_check(mbx)

extern void      os_mbx_init (OS_ID mailbox, U16 mbx_size);
extern OS_RESULT os_mbx_send (OS_ID mailbox, void *message_ptr, U16 timeout);
extern OS_RESULT os_mbx_wait (OS_ID mailbox, void  **message, U16 timeout);
extern OS_RESULT os_mbx_check (OS_ID mailbox);
extern void      isr_mbx_send (OS_ID mailbox, void *message_ptr);
extern OS_RESULT isr_mbx_receive (OS_ID mailbox, void **message);

/* Mutex Management */
extern void      os_mut_init (OS_ID mutex);
extern OS_RESULT os_mut_release (OS_ID mutex);
extern OS_RESULT os_mut_wait (OS_ID mutex, U16 timeout);

/* Time Management */
extern void      os_dly_wait (U16 delay_time);
extern void      os_itv_set (U16 interval_time);
extern void      os_itv_wait (void);

/* User Timer Management */
extern OS_ID     os_tmr_create (U16 tcnt, U16 info);
extern OS_ID     os_tmr_kill (OS_ID timer);

/* System Functions */
extern void      tsk_lock (void) __swi (5);
extern void      tsk_unlock (void);

/* Fixed Memory Block Management Functions */
extern int       _init_box (void *box_mem, U32 box_size, U32 blk_size);
extern void     *_alloc_box (void *box_mem) __swi (1);
extern void     *_calloc_box (void *box_mem);
extern int       _free_box (void *box_mem, void *box) __swi (2);

#else

/*----------------------------------------------------------------------------
 *      Functions Cortex-M
 *---------------------------------------------------------------------------*/

#define __SVC_0         __svc_indirect(0)

/* Task Management */
extern void      os_set_env    (void);
extern void      rt_sys_init   (void (*task)(void), U8 priority, void *stk);
extern void      rt_tsk_pass   (void);
extern OS_TID    rt_tsk_self   (void);
extern OS_RESULT rt_tsk_prio   (OS_TID task_id, U8 new_prio);
extern OS_TID    rt_tsk_create (void (*task)(void), U8 priority, void *stk, void *argv);
extern OS_RESULT rt_tsk_delete (OS_TID task_id);

#define os_sys_init(tsk)              os_set_env();                           \
                                      _os_sys_init((U32)rt_sys_init,tsk,0,NULL)
#define os_sys_init_user(tsk,prio,stk,size)                                   \
                                      os_set_env();                           \
                                      _os_sys_init((U32)rt_sys_init,tsk,prio|(size<<8),stk)
#define os_sys_init_prio(tsk,prio)    os_set_env();                           \
                                      _os_sys_init((U32)rt_sys_init,tsk,prio,NULL)
#define os_tsk_create(tsk,prio)       _os_tsk_create((U32)rt_tsk_create,tsk,prio,NULL,NULL)
#define os_tsk_create_user(tsk,prio,stk,size)                                 \
                                      _os_tsk_create((U32)rt_tsk_create,tsk,prio|(size<<8),stk,NULL)
#define os_tsk_create_ex(tsk,prio,argv) _os_tsk_create_ex((U32)rt_tsk_create,tsk,prio,NULL,argv)
#define os_tsk_create_user_ex(tsk,prio,stk,size,argv)                         \
                                      _os_tsk_create_ex((U32)rt_tsk_create,tsk,prio|(size<<8),stk,argv)
#define os_tsk_self()                 _os_tsk_self((U32)rt_tsk_self)
#define os_tsk_pass()                 _os_tsk_pass((U32)rt_tsk_pass)
#define os_tsk_prio(task_id,new_prio) _os_tsk_prio((U32)rt_tsk_prio,task_id,new_prio)
#define os_tsk_prio_self(prio)        _os_tsk_prio((U32)rt_tsk_prio,0,prio)
#define os_tsk_delete(task_id)        _os_tsk_delete((U32)rt_tsk_delete,task_id)
#define os_tsk_delete_self()          _os_tsk_delete((U32)rt_tsk_delete, 0)
#define isr_tsk_get()                 rt_tsk_self()

extern void      _os_sys_init(U32 p, void (*task)(void), U32 prio_stksz,
                                     void *stk)                        __SVC_0;
extern OS_TID    _os_tsk_create (U32 p, void (*task)(void), U32 prio_stksz,
                                        void *stk, void *argv)         __SVC_0;
extern OS_TID    _os_tsk_create_ex (U32 p, void (*task)(void *), U32 prio_stksz,
                                           void *stk, void *argv)      __SVC_0;
extern OS_TID    _os_tsk_self (U32 p)                                  __SVC_0;
extern void      _os_tsk_pass (U32 p)                                  __SVC_0;
extern OS_RESULT _os_tsk_prio (U32 p, OS_TID task_id, U8 new_prio)     __SVC_0;
extern OS_RESULT _os_tsk_delete (U32 p, OS_TID task_id)                __SVC_0;

/* Event flag Management */
extern OS_RESULT rt_evt_wait (U16 wait_flags,  U16 timeout, BOOL and_wait);
extern void      rt_evt_set  (U16 event_flags, OS_TID task_id);
extern void      rt_evt_clr  (U16 clear_flags, OS_TID task_id);
extern U16       rt_evt_get  (void);

#define os_evt_wait_or(wflags,tmo)    _os_evt_wait((U32)rt_evt_wait,wflags,tmo,__FALSE)
#define os_evt_wait_and(wflags,tmo)   _os_evt_wait((U32)rt_evt_wait,wflags,tmo,__TRUE)
#define os_evt_set(evt_flags,task_id) _os_evt_set((U32)rt_evt_set,evt_flags,task_id)
#define os_evt_clr(clr_flags,task_id) _os_evt_clr((U32)rt_evt_clr,clr_flags,task_id)
#define os_evt_get()                  _os_evt_get((U32)rt_evt_get)

extern OS_RESULT _os_evt_wait(U32 p, U16 wait_flags, U16 timeout,
                                     BOOL and_wait)                    __SVC_0;
extern void      _os_evt_set (U32 p, U16 event_flags, OS_TID task_id)  __SVC_0;
extern void      _os_evt_clr (U32 p, U16 clear_flags, OS_TID task_id)  __SVC_0;
extern U16       _os_evt_get (U32 p)                                   __SVC_0;
extern void      isr_evt_set (U16 event_flags, OS_TID task_id);

/* Semaphore Management */
extern void      rt_sem_init (OS_ID semaphore, U16 token_count);
extern OS_RESULT rt_sem_send (OS_ID semaphore);
extern OS_RESULT rt_sem_wait (OS_ID semaphore, U16 timeout);

#define os_sem_init(sem,t_count)     _os_sem_init((U32)rt_sem_init,sem,t_count)
#define os_sem_send(sem)             _os_sem_send((U32)rt_sem_send,sem)
#define os_sem_wait(sem,tmo)         _os_sem_wait((U32)rt_sem_wait,sem,tmo)

extern void      _os_sem_init (U32 p, OS_ID semaphore, 
                                      U16 token_count)                 __SVC_0;
extern OS_RESULT _os_sem_send (U32 p, OS_ID semaphore)                 __SVC_0;
extern OS_RESULT _os_sem_wait (U32 p, OS_ID semaphore, U16 timeout)    __SVC_0;
extern void      isr_sem_send (OS_ID semaphore);

/* Mailbox Management */
extern void      rt_mbx_init  (OS_ID mailbox, U16 mbx_size);
extern OS_RESULT rt_mbx_send  (OS_ID mailbox, void *p_msg,    U16 timeout);
extern OS_RESULT rt_mbx_wait  (OS_ID mailbox, void **message, U16 timeout);
extern OS_RESULT rt_mbx_check (OS_ID mailbox);

#define os_mbx_init(mbx,mbx_size)     _os_mbx_init((U32)rt_mbx_init,mbx,mbx_size)
#define os_mbx_send(mbx,p_msg,tmo)    _os_mbx_send((U32)rt_mbx_send,mbx,p_msg,tmo)
#define os_mbx_wait(mbx,message,tmo)  _os_mbx_wait((U32)rt_mbx_wait,mbx,message,tmo)
#define os_mbx_check(mbx)             _os_mbx_check((U32)rt_mbx_check,mbx)
#define isr_mbx_check(mbx)            rt_mbx_check(mbx)

extern void      _os_mbx_init (U32 p, OS_ID mailbox, U16 mbx_size)     __SVC_0;
extern OS_RESULT _os_mbx_send (U32 p, OS_ID mailbox, void *message_ptr,
                                      U16 timeout)                     __SVC_0;
extern OS_RESULT _os_mbx_wait (U32 p, OS_ID mailbox, void  **message,
                                      U16 timeout)                     __SVC_0;
extern OS_RESULT _os_mbx_check (U32 p, OS_ID mailbox)                  __SVC_0;
extern void      isr_mbx_send (OS_ID mailbox, void *message_ptr);
extern OS_RESULT isr_mbx_receive (OS_ID mailbox, void **message);

/* Mutex Management */
extern void      rt_mut_init    (OS_ID mutex);
extern OS_RESULT rt_mut_release (OS_ID mutex);
extern OS_RESULT rt_mut_wait    (OS_ID mutex, U16 timeout);

#define os_mut_init(mutex)         _os_mut_init((U32)rt_mut_init,mutex)
#define os_mut_release(mutex)      _os_mut_release((U32)rt_mut_release,mutex)
#define os_mut_wait(mutex,timeout) _os_mut_wait((U32)rt_mut_wait,mutex,timeout)

extern void      _os_mut_init (U32 p, OS_ID mutex)                     __SVC_0;
extern OS_RESULT _os_mut_release (U32 p, OS_ID mutex)                  __SVC_0;
extern OS_RESULT _os_mut_wait (U32 p, OS_ID mutex, U16 timeout)        __SVC_0;

/* Time Management */
extern void      rt_dly_wait (U16 delay_time);
extern void      rt_itv_set  (U16 interval_time);
extern void      rt_itv_wait (void);

#define os_dly_wait(delay_time)    _os_dly_wait((U32)rt_dly_wait,delay_time)
#define os_itv_set(interval_time)  _os_itv_set((U32)rt_itv_set,interval_time)
#define os_itv_wait()              _os_itv_wait((U32)rt_itv_wait)

extern void      _os_dly_wait (U32 p, U16 delay_time)                  __SVC_0;
extern void      _os_itv_set (U32 p, U16 interval_time)                __SVC_0;
extern void      _os_itv_wait (U32 p)                                  __SVC_0;

/* User Timer Management */
extern OS_ID     rt_tmr_create (U16 tcnt, U16 info);
extern OS_ID     rt_tmr_kill   (OS_ID timer);

#define os_tmr_create(tcnt,info)   _os_tmr_create((U32)rt_tmr_create,tcnt,info)
#define os_tmr_kill(timer)         _os_tmr_kill((U32)rt_tmr_kill,timer)

extern OS_ID     _os_tmr_create (U32 p, U16 tcnt, U16 info)            __SVC_0;
extern OS_ID     _os_tmr_kill (U32 p, OS_ID timer)                     __SVC_0;

/* System Functions */
extern void      rt_tsk_lock   (void);
extern void      rt_tsk_unlock (void);

#define tsk_lock()                 _os_tsk_lock((U32)rt_tsk_lock)
#define tsk_unlock()               _os_tsk_unlock((U32)rt_tsk_unlock)

extern void      _os_tsk_lock (U32 p)                                  __SVC_0;
extern void      _os_tsk_unlock (U32 p)                                __SVC_0;

/* Fixed Memory Block Management Functions */
extern int       _init_box (void *box_mem, U32 box_size, U32 blk_size);
extern void     *_alloc_box (void *box_mem);
extern void     *_calloc_box (void *box_mem);
extern int       _free_box (void *box_mem, void *box);

#endif

#define BOX_ALIGN_8     0x80000000
#define _declare_box(pool,size,cnt)   U32 pool[(((size)+3)/4)*(cnt) + 3]
#define _declare_box8(pool,size,cnt)  U64 pool[(((size)+7)/8)*(cnt) + 2]
#define _init_box8(pool,size,bsize)   _init_box (pool,size,bsize | BOX_ALIGN_8)

/* For compatibility with older configurations.*/
#define os_stk_overflow         os_error

/*----------------------------------------------------------------------------
 *                        Flash File System API
 *---------------------------------------------------------------------------*/

typedef struct {                        /* RL Time format (FFS, TCPnet)      */
  U8  hr;                               /* Hours    [0..23]                  */
  U8  min;                              /* Minutes  [0..59]                  */
  U8  sec;                              /* Seconds  [0..59]                  */
  U8  day;                              /* Day      [1..31]                  */
  U8  mon;                              /* Month    [1..12]                  */
  U16 year;                             /* Year     [1980..2107]             */
} RL_TIME;

typedef struct {                        /* Search info record                */
  S8  name[256];                        /* Name                              */
  U32 size;                             /* File size in bytes                */
  U16 fileID;                           /* System Identification             */
  U8  attrib;                           /* Attributes                        */
  RL_TIME time;                         /* Create/Modify Time                */
} FINFO;

extern int finit (const char *drive);
extern int funinit (const char *drive);
extern int fdelete (const char *filename);
extern int frename (const char *oldname, const char *newname);
extern int ffind (const char *pattern, FINFO *info);
extern U64 ffree (const char *drive);
extern int fformat (const char *drive);
extern int fanalyse (const char *drive);
extern int fcheck (const char *drive);
extern int fdefrag (const char *drive);

/* The following macros provide for common functions */
#define unlink(fn)      fdelete(fn);

/*----------------------------------------------------------------------------
 *                             TCPnet API
 *---------------------------------------------------------------------------*/

/* UDP Options */
#define UDP_OPT_SEND_CS    0x01   /* Calculate Checksum for UDP send frames  */
#define UDP_OPT_CHK_CS     0x02   /* Verify Checksum for received UDP frames */

/* TCP Socket Types */
#define TCP_TYPE_SERVER    0x01   /* Socket Type Server (open for listening) */
#define TCP_TYPE_CLIENT    0x02   /* Socket Type Client (initiate connect)   */
#define TCP_TYPE_DELAY_ACK 0x04   /* Socket Type Delayed Acknowledge         */
#define TCP_TYPE_FLOW_CTRL 0x08   /* Socket Type Flow Control                */
#define TCP_TYPE_KEEP_ALIVE 0x10  /* Socket Type Keep Alive                  */
#define TCP_TYPE_CLIENT_SERVER (TCP_TYPE_SERVER | TCP_TYPE_CLIENT)

/* TCP Callback Events */
#define TCP_EVT_CONREQ     0      /* Connect request received event          */
#define TCP_EVT_CONNECT    1      /* Connection established event            */
#define TCP_EVT_CLOSE      2      /* Connection was properly closed          */
#define TCP_EVT_ABORT      3      /* Connection is for some reason aborted   */
#define TCP_EVT_ACK        4      /* Previously send data acknowledged       */
#define TCP_EVT_DATA       5      /* Data received event                     */

/* TCP States */
#define TCP_STATE_FREE     0      /* Entry is free and unused                */
#define TCP_STATE_CLOSED   1      /* Entry allocated, socket still closed    */
#define TCP_STATE_LISTEN   2      /* Socket waiting for incoming connection  */
#define TCP_STATE_SYN_REC  3      /* SYN frame received                      */
#define TCP_STATE_SYN_SENT 4      /* SYN packet sent to establish a connect. */
#define TCP_STATE_FINW1    5      /* Tcp_close started FIN packet was sent   */
#define TCP_STATE_FINW2    6      /* Our FIN ack-ed, waiting for remote FIN  */
#define TCP_STATE_CLOSING  7      /* Received FIN independently of our FIN   */
#define TCP_STATE_LAST_ACK 8      /* Waiting for last ACK for our FIN        */
#define TCP_STATE_TWAIT    9      /* Timed waiting for 2MSL                  */
#define TCP_STATE_CONNECT  10     /* TCP Connection established              */

/* BSD Socket Address Family */
#define AF_UNSPEC          0      /* Unspecified                             */
#define AF_INET            1      /* Internet Address Family (UDP, TCP)      */
#define AF_NETBIOS         2      /* NetBios-style addresses                 */

/* BSD Protocol families, same as address families */
#define PF_UNSPEC          AF_UNSPEC
#define PF_INET            AF_INET
#define PF_NETBIOS         AF_NETBIOS

/* BSD Socket Type */
#define SOCK_STREAM        1      /* Stream Socket (Connection oriented)     */
#define SOCK_DGRAM         2      /* Datagram Socket (Connectionless)        */

/* BSD Socket Protocol */
#define IPPROTO_TCP        1      /* TCP Protocol                            */
#define IPPROTO_UDP        2      /* UDP Protocol                            */

/* BSD Internet Addresses */
#define INADDR_ANY     0x00000000 /* All IP addresses accepted               */
#define INADDR_NONE    0xffffffff /* No IP address accepted                  */

/* BSD Socket Return values */
#define SCK_SUCCESS         0     /* Success                                 */
#define SCK_ERROR         (-1)    /* General Error                           */
#define SCK_EINVALID      (-2)    /* Invalid socket descriptor               */
#define SCK_EINVALIDPARA  (-3)    /* Invalid parameter                       */
#define SCK_EWOULDBLOCK   (-4)    /* It would have blocked.                  */
#define SCK_EMEMNOTAVAIL  (-5)    /* Not enough memory in memory pool        */
#define SCK_ECLOSED       (-6)    /* Connection is closed or aborted         */
#define SCK_ELOCKED       (-7)    /* Socket is locked in RTX environment     */
#define SCK_ETIMEOUT      (-8)    /* Socket, Host Resolver timeout           */
#define SCK_EINPROGRESS   (-9)    /* Host Name resolving in progress         */
#define SCK_ENONAME       (-10)   /* Host Name not existing                  */

/* BSD Socket flags parameter */
#define MSG_DONTWAIT       0x01   /* Enables non-blocking operation          */
#define MSG_PEEK           0x02   /* Peeks at the incoming data              */

/* DNS Callback Events */
#define DNS_EVT_SUCCESS    0      /* Host name successfully resolved         */
#define DNS_EVT_NONAME     1      /* DNS Error, no such name                 */
#define DNS_EVT_TIMEOUT    2      /* Timeout resolving host                  */
#define DNS_EVT_ERROR      3      /* Erroneous response packet               */

/* DNS 'get_host_by_name()' result codes */
#define DNS_RES_OK         0      /* Function finished OK                    */
#define DNS_ERROR_BUSY     1      /* DNS Client busy, can't process request  */
#define DNS_ERROR_LABEL    2      /* Host name Label too long                */
#define DNS_ERROR_NAME     3      /* Host name loo long                      */
#define DNS_ERROR_NOSRV    4      /* Prim. DNS server not specified (0.0.0.0)*/
#define DNS_ERROR_UDPSEND  5      /* UDP Send frame error                    */

/* SMTP Callback Events */
#define SMTP_EVT_SUCCESS   0      /* Email successfully sent                 */
#define SMTP_EVT_TIMEOUT   1      /* Timeout sending email                   */
#define SMTP_EVT_ERROR     2      /* Error when sending email                */

/* ARP Cache Entry types */
#define ARP_FIXED_IP       0      /* Fixed IP adrs is refreshed after tout   */
#define ARP_TEMP_IP        1      /* Temp adrs is removed after timeout      */

/* BSD Socket typedef's */
typedef struct sockaddr {         /* << Generic Socket Address structure >>  */
  U16  sa_family;                 /* Address family                          */
  char sa_data[14];               /* Direct address (up to 14 bytes)         */
} SOCKADDR;

#pragma push
#pragma anon_unions

typedef struct in_addr {          /* << Generic IPv4 Address structure >>    */
  union {
    struct {
      U8 s_b1,s_b2,s_b3,s_b4;     /* IP address, byte access                 */
    };
    struct {
      U16 s_w1,s_w2;              /* IP address, short int access            */
    };
    U32 s_addr;                   /* IP address in network byte order        */
  };
} IN_ADDR;
#pragma pop

typedef struct sockaddr_in {      /* << IPv4 Socket Address structure >>     */
  S16 sin_family;                 /* Socket domain                           */
  U16 sin_port;                   /* Port                                    */
  IN_ADDR sin_addr;               /* IP address                              */
  S8  sin_zero[8];                /* reserved                                */
} SOCKADDR_IN;

typedef struct hostent {          /* << BSD Host Entry structure >>          */
  char *h_name;                   /* Official name of host                   */   
  char **h_aliases;               /* Pointer to an array of alias names      */   
  S16  h_addrtype;                /* Address Type: AF_INET, AF_NETBIOS       */   
  S16  h_length;                  /* Length of address in bytes              */   
  char **h_addr_list;             /* Pointer to an array of IPv4 addresses   */   
} HOSTENT;

extern void init_TcpNet (void);
extern void main_TcpNet (void);
extern void timer_tick (void);
extern U8   udp_get_socket (U8 tos, U8 opt, 
                            U16 (*listener)(U8 socket, U8 *remip, U16 port, U8 *buf, U16 len));
extern BOOL udp_release_socket (U8 socket);
extern BOOL udp_open (U8 socket, U16 locport);
extern BOOL udp_close (U8 socket);
extern BOOL udp_mcast_ttl (U8 socket, U8 ttl);
extern U8  *udp_get_buf (U16 size);
extern BOOL udp_send (U8 socket, U8 *remip, U16 remport, U8 *buf, U16 dlen);
extern U8   tcp_get_socket (U8 type, U8 tos, U16 tout,
                            U16 (*listener)(U8 socket, U8 event, U8 *buf, U16 len));
extern BOOL tcp_release_socket (U8 socket);
extern BOOL tcp_listen (U8 socket, U16 locport);
extern BOOL tcp_connect (U8 socket, U8 *remip, U16 remport, U16 locport);
extern U8  *tcp_get_buf (U16 size);
extern U16  tcp_max_dsize (U8 socket);
extern BOOL tcp_check_send (U8 socket);
extern U8   tcp_get_state (U8 socket);
extern BOOL tcp_send (U8 socket, U8 *buf, U16 dlen);
extern BOOL tcp_close (U8 socket);
extern BOOL tcp_abort (U8 socket);
extern void tcp_reset_window (U8 socket);
extern BOOL arp_cache_ip (U8 *ipadr, U8 type);
extern void ppp_listen (char const *user, char const *passw);
extern void ppp_connect (char const *dialnum, char const *user, char const *passw);
extern void ppp_close (void);
extern BOOL ppp_is_up (void);
extern void slip_listen (void);
extern void slip_connect (char const *dialnum);
extern void slip_close (void);
extern BOOL slip_is_up (void);
extern U8   get_host_by_name (U8 *hostn, void (*cbfunc)(U8 event, U8 *host_ip));
extern BOOL smtp_connect (U8 *ipadr, U16 port, void (*cbfunc)(U8 event));
extern void dhcp_disable (void);
extern BOOL igmp_join (U8 *group_ip);
extern BOOL igmp_leave (U8 *group_ip);
extern BOOL snmp_trap (U8 *manager_ip, U8 gen_trap, U8 spec_trap, U16 *obj_list);
extern BOOL snmp_set_community (const char *community);

/* BSD Socket API */
extern int  socket (int family, int type, int protocol);
extern int  bind (int sock, const SOCKADDR *addr, int addrlen);
extern int  listen (int sock, int backlog);
extern int  accept (int sock, SOCKADDR *addr, int *addrlen);
extern int  connect (int sock, SOCKADDR *addr, int addrlen);
extern int  send (int sock, const char *buf, int len, int flags);
extern int  sendto (int sock, const char *buf, int len, int flags, SOCKADDR *to, int tolen);
extern int  recv (int sock, char *buf, int len, int flags);
extern int  recvfrom (int sock, char *buf, int len, int flags, SOCKADDR *from, int *fromlen);
extern int  closesocket (int sock);
extern int  getpeername (int sock, SOCKADDR *name, int *namelen);
extern int  getsockname (int sock, SOCKADDR *name, int *namelen);
extern HOSTENT *gethostbyname (char *name, int *err);

#ifdef __cplusplus               // EC++
}
#endif

/*----------------------------------------------------------------------------
 * end of file
 *---------------------------------------------------------------------------*/

#endif

armsistem

Selam , aslında derlerken hata veriyor , web.inp dosyasından FCARM.exe dosyasının derleme hatası veriyor ,nedenini çözemedim hata aşağıda.


Build target 'MCB2300'
custom translating web.inp...
Custom: C:\Keil\ARM\bin\fcarm @Web\Web.inp
FCARM FILE CONVERTER V2.27
*** ERROR F204: INVALID KEYWORD
    POS: 241
    , xml_http.js, buttons.cgi, ad.cgx, buttons.cgx to Web.c nopr root Web
compiling HTTP_demo.c...
compiling HTTP_CGI.c...
compiling WEB.C...
Web\WEB.C(1396): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1396): error:  #146: too many initializer values
Web\WEB.C(1397): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1397): error:  #146: too many initializer values
Web\WEB.C(1398): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1398): error:  #146: too many initializer values
Web\WEB.C(1399): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1399): error:  #146: too many initializer values
Web\WEB.C(1400): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1400): error:  #146: too many initializer values
Web\WEB.C(1401): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1401): error:  #146: too many initializer values
Web\WEB.C(1402): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1402): error:  #146: too many initializer values
Web\WEB.C(1403): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1403): error:  #146: too many initializer values
Web\WEB.C(1404): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1404): error:  #146: too many initializer values
Web\WEB.C(1405): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1405): error:  #146: too many initializer values
Web\WEB.C(1406): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1406): error:  #146: too many initializer values
Web\WEB.C(1407): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1407): error:  #146: too many initializer values
Web\WEB.C(1408): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1408): error:  #146: too many initializer values
Web\WEB.C(1409): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1409): error:  #146: too many initializer values
Web\WEB.C(1410): error:  #144: a value of type "char *" cannot be used to initialize an entity of type "const U32"
Web\WEB.C(1410): error:  #146: too many initializer values
compiling Net_Config.c...
assembling LPC2300.s...
compiling LPC23_EMAC.c...
compiling LCD.c...
Target not created




Fakat başka bir örnek buldun orada hata vermiyor

Build target 'CGI_IN'
compiling main.c...
compiling LCD_4bit.c...
compiling Net_Config.c...
assembling LPC2300.s...
compiling HTTP_CGI.c...
compiling LPC23_EMAC.c...
custom translating web.inp...
Custom: C:\Keil\ARM\bin\fcarm @Web\Web.inp
FCARM FILE CONVERTER V2.27
Completed 8 File(s), Ratio 93%
compiling WEB.C...
linking...
Program Size: Code=23960 RO-data=10724 RW-data=80 ZI-data=21628  
"CGI_IN.axf" - 0 Error(s), 0 Warning(s).




Her iki projede web.inp dosyası aşağıdaki şekilde.

C:\Keil\ARM\bin\fcarm @@Web\Web.inp ,

armsistem

#12
Arkadaşlar merhaba , keil'in sitesinde ethernetle ilgili bir örnek indirdim , kendime göre uyarladım incelemek isterseniz link http://turbobit.net/dxmf4d57adn3.html user authentication 'serif' password yok yalnız üstadlara soracağım bir iki soru var.

1- HTML content klasörün altında tickbox.cgi dosyası var iki adet tickbox var biri ARM kitinde ledi diğeri buzzer çalıştırıyor. Var olan cgi dosyasını değiştirdim sıfırdan nasıl oluşturum çünkü html formatında değil satır başlarında harfler var.
#Tickbox control
#this page demonstrates how to build a tickbox group
#
t <html>
t <head>
t <title>Tickbox Control</title>
t </head>
i pg_header.inc
t <body>
#
# the post method is used to trigger the code on line 250 of HTTP_CGI.c
# Problem when all boxes are unchecked the code does not trigger
# Solution add a hidden variable which causes the code to trigger in all conditions
# Use the hidden variable to set a default condition see line 252 of HTTP_CGI.c 		
#
t <form action=tickbox.cgi method=post name=form1>
t <input type=hidden value="led" name=pg>
t <td><table><tr valign="center">
#
#The user script commands are defined as T for tickbox, 1 for tickgroup 1, 1,2,4,8, for LED's 5-8
#The %S is used to output the 'checked' option when thepage is loaded see lines 348 in HTTP_CGI.c
# 
c T11 <input type=checkbox name=TICK1 value=LED5 OnClick="submit();" %s> LED5<br>
c T12 <input type=checkbox name=TICK1 value=LED6 OnClick="submit();" %s> LED6<br>
t </table></form>
t </body>
t </html>
i pg_footer.inc
.




2-HTTP_CGI.c dosyası içerisinde tickbox 'lara bastığımda aşağıda kodlar devreye giriyor.
   do {dat = http_get_var (dat, var, 40);
      if (var[0] != 0) {
	 if (str_scomp (var, "TICK1=") == __TRUE || str_scomp (var, "pg=") == __TRUE)
		 {   IODIR0=0x00200000;  IOCLR0=0x00200000; 
           if (str_scomp (var, "pg=") == __TRUE)
		 	{ LEDupper = LEDupper &0x0F;LEDupdate = __TRUE; } 
             
		   if(*(var+9) =='5'){LEDupper |= 0x10;}
	  else if(*(var+9) =='6'){IODIR0=0x00200000;IOSET0=0x00200000;LEDupper |= 0x20;}
		
         }
	     }
   }while (dat);

armsistem

İlk hataları verme sebebi RL-Arm versiyon uyumsuzluğundandır.

hosiminh

ARM 7 veya sonrası için. İnternet üzerinden bir butona basmak veya başka bir komut ip veya mac değiştirmek gibi durumları yapmak mümkün HTML olur adı veya Web den pek anlamadığım için başka bir dilde yazılmış olsun bunun hiç mi hiç önemi yok. ARM sizin ne gönderdiğinize bakar eğer gönderdiğiniz şeyi doğru göndermişseniz işlemini yapar. Barış Sarmacı nın yayınlarını ben de ilk başladığımda okumuştum fakat şunu belirtmek isterim arm kullananlar için "init=initializing" mantığını kesinlikle kullanmak gerekiyor(kolaylık için). Zira bu sitedeki tüm örnekleri inceleyip gördüğümde farkettiğim şöyle bir durum var; herkes yapmak istediği işin hex kodundaki karşılığı ile çağırmış tavsiyedir kesinlikle yanlış alamayın ukalalık gibi de görmeyin ama bunları biz eğer tanımlarsak yani rtc mi tanımlamalıyız bunu bir c dosyası yapıp sonra içindeki gerekenleri "init" edersek her seferinde hex karşıklarını çağırmak zorunda kalmayız,  c ve keil derleyici kullanıyorsak konuşur gibi programımızı yazabiliriz. Anlatmak istediğim lpc2368 kılıf mı aldık önce datasheet imizdeki temel tanımlamaları programınızın definations=tanım koltuğuna oturtmalıyız ki her seferinde  aynı teferruatlarla uğraşmayalım. ve led yakmak yerine bir lcd alabilirsek zira çok pahalı değil 32 karakterli olanlar daha verimli çalışıp daha enteresan işler ortaya koyabiliriz. Web sitesinden bilgi gönderip arm da led yakmak isteyen arkadaş tüm kodlarını bağlantı şemalarını gönderebilirse elimden geldiğince yardımcı olmaya çalışırım. Saygılarımla, hepinize iyi çalışmalar...