CCS C de oluşturulan web server kodlarına müdahale yapılabiliyor mu?

Başlatan gokhangokcen, 20 Ocak 2015, 12:40:19

gokhangokcen

iyi günler dilerim cümleten,
ccs c ile yapmış olduğum tcp/ip uygulamasında tarayıcı üzerinden bağlandığımda çıkan sayfaya müdahale etme şansım var mıdır? oluşturduğu örnekte index isminde bir sayfa düzeneği var not defteri ile içine girip editleyebiliyorum kodlar html cinsinden. Fakat derleyip toplayıp pic'e hexi yüklediğimde yine aynı kodlar döndürülüyor değişen bir şey yok. Project wizard ile oluşturuyorum oluştururken o kodlara müdahaleye izin vermiyor. Bunu nasıl çözebiliriz?

#include <main.h>
#fuses nowdt,nolvp,nomclr,nodebug,noprotect
/* TODO: Web server enabled. Server files are added to the /pages
directory. You can modify the contents of the dynamic display fields
at the end of the index.htm file. By default, headings are in the left
column and the dynamic display elements are in the right. The text on
the input buttons can be set by changing the 'value' strings in the
form section. Dynamic display elements can be added or removed from
index.htm and index.xml */
/* TODO: Server files must be built into an MPFS image prior to 
compiling and runing the web server. Running makempfsimg.bat in the
/mpfs directory will create an MPFS image of the files in /pages.
A new MPFS image has to be compiled and re-loaded if a file in
/pages needs to be changed. */

unsigned int8 http_format_char(char* file, char id, char *str, unsigned int8 max_ret)
{
   /* TODO: This is a callback function to the HTTP stack.
   'id' is the char for the dynamic element to be updated.
   For each dynamic element you create, you need to parse
   and save a result to 'str'. *str is where the callback
   function must save the formatting result, and it should
   not store more than max_ret characters to this pointer
   (buffer-overrun protection).
   Example:
   switch(id) {
      case 0x00:
         set_adc_channel(0);
         delay_us(100);
         i=read_adc();
         sprintf(new_str,"0x%X", i);
   .....
   strncpy(str, new_str, max_ret);
   */
   if (id == 0)
   {
         //TODO: Handle dyn0 field and save result to str
   }
   if (id == 1)
   {
         //TODO: Handle dyn1 field and save result to str
   }
   if (id == 2)
   {
         //TODO: Handle dyn2 field and save result to str
   }

}

void http_exec_cgi(char* file, char *key, char *val)
{
   /* TODO: This is a callback function to the HTTP stack.
   This function is called with each key/value pair read in
   the GET/POST request before any web data is sent to the
   web browser. 'key' matches the name of the field and
   'val' is the value it was changed to.
   Example:
   int8 v = atoi(val);
   if (stricmp(key,led1_key)==0)
      LedSet(0, v);
   */
   if (strcmp(key, "button00") == 0)
   {
         //TODO: Handle button00
   }
   if (strcmp(key, "button01") == 0)
   {
         //TODO: Handle button01
   }
   if (strcmp(key, "button02") == 0)
   {
         //TODO: Handle button02
   }
   if (strcmp(key, "button03") == 0)
   {
         //TODO: Handle button03
   }
   if (strcmp(key, "button04") == 0)
   {
         //TODO: Handle button04
   }
   if (strcmp(key, "button05") == 0)
   {
         //TODO: Handle button05
   }

}

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);
   IPAddressInit();
   TickInit();
   enable_interrupts(GLOBAL);
   StackInit();


   while(TRUE)
   {

      StackTask();

      StackApplications();

      //TODO: User Code
   }

}


diğer kütüphaneleri eklemedim kalabalık olmaması açısından ve çok detaylı aramama rağmen içlerinde herhangi bir şey bulamadım. ama isterseniz eklerim.

devre çalışıyor devre şemasını ekleme gereği duymadım zira işim devre ile değil kodlar ile. AJP isminde yanılmıyorsam bir dosya çağrılıyor.Örnek vermek gerekirse http://gokhanbeken.com/enc28j60-ile-httpserver-projesi?rpluoahyufumynza arkadaşın sitesinde var. Bir kaç ana başlık tag'lar eklemiş vs. bunlara nasıl müdahale ederim?

programın en başında söylüyor zaten index.xml ya da html dosyalarını editle diye ama bunu bir derleyici vasıtası ile mi editlemem gerekiyor? eğer öyle ise adı nedir?
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

gokhangokcen

arkadaşlar fikri olan yok mu? htm kodlarına müdahale ettiğimde bir kaç eklenti attığımda yeniden derliyorum ama hex boyutu hiç değişmiyor. Bunun yolu var mıdır?
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

Gökhan BEKEN

Normalde zaten değişmez, html kodları eeprom'a yükler, yüklemek için ayrı bir program kullanılıyor, ağ üzerinden yükleniyor. Tabi kullandığınız sistemi bilmiyorum. Eğer microchip TCP/IP kullanıyorsanız(ccs de bulunban TCP/IP de microchip'in kütüphanesinin eski versiyonudur) eeprom'a veya işlemcinin kendi eepromuna yazma ayarları var. Yazılımınız ve donanımınız hakkında biraz daha bilgi verirseniz yardımcı olabilirim.
Özel mesaj okumuyorum, lütfen göndermeyin.

gokhangokcen

Meftun hocam teşekkür ederim olayın çok fazla donanımla ilgisi yoktur diye düşünmüştüm ve epeyce karıştırdıktan sonra yolunu buldum şöyle ki;

ccs c derleyicisi ile derlediğimiz programın oluşturduğu klasör var bendeki böyle;

[IMG]http://i61.tinypic.com/wuh561.png[/img]

daha sonra bu klasör içerisinde bulunan pages isimli klasör bizim işlemciyi server olarak kurup herhangi bir tarayıcı ile ip üzerinden bağlandığımız da görüntülenecek olan sayfa var index.htm isminde.
bu sayfaya sağ tıklayıp not defteri ya da herhangi bir editör ile düzenlemeleri yapıyoruz.Buraya kadar her şey normal. Daha sonra kaydedip kapatıyoruz.
bu index dosyasını tıklayıp tarayıcı üzerinden yaptığımız uygulamayı görme şansımız var.

2. adım ise bu index.htm ve index.xml dosyalarını işlemcinin anlayacağı dile çevirmeye geldi.

CMD komut satırında cd\ ile ana dizine geliyoruz.
daha sonra resimde görünen klasördeki mpfs klasörüne girip dizini cmd komut satırına ekliyoruz.Bu klasördeki makempfsimg.bat uygulamasını çalıştıracağız.
C:\Program files\Pic c\tcpip\mpfs\makempfsimg.bat 

(sizdeki farklı olabilir )yazıp enter yaptıktan sonra cmd işlem yapmaya başlıyor yani index.htm dosyasını ccs c dosyasının içine import ediyor bir şekilde arka planda ne olduğunu bilmiyorum. AJAX sayfasına kodları bir şekilde gönderiyor.
Daha sonra programımızı tekrardan compile ettiğimizde index.htm de yapmış olduğumuz kodlamalar hex dosyasına eklenmiş oluyor.şu an evde olduğum için fazla fotoğraf ekleme şansım olmadı. bitmiş halinin ekran görüntülerini tekrardan paylaşırım.



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

Gökhan BEKEN

Hocam, daha önce forumda konu açmıştım. Microchip'in derleyicisini kullanırsanız daha rahat yöntemlerle halledebilirsiniz.
Burdan nasıl sorunlarımı ve çözümlerimi görebilirsiniz: https://www.picproje.org/index.php/topic,46618.30.html
Özel mesaj okumuyorum, lütfen göndermeyin.

gokhangokcen

hocam derleyici değiştirme taraftarı değilim şu sıralar belki geniş zamanlarda olabilir. Bir şekilde olayı çözdüm sıkıntı yok. Şimdi biraz html kodu öğrenmem gerekli ya da visual basic/c dillerindeki gibi sürükle bırak buton oluştur text box oluştur böyle bir şey mümkün müdür? daha önce hiç böyle bir şey ile uğraşmadım. Şu şekilde daha basit olur ya da daha kolay öğrenebilirsin diyeceğiniz önerilerinize açığım.
Bildiğini paylaşmak, Allah'ın verdiği öğrenme yeteneğinin zekatıdır.

Gökhan BEKEN

Dream weaver gibi araçlar ile sürükle bırak sayfa oluşturabilirsiniz. Ya da hazır template bulup üzerinde değişiklik yapabilirsiniz. Burda dikkat etmeniz gereken en önemli şey, en ufak bir resim bile kullansanız hafızayı şişirebilir. Çünkü resimler çok yer kaplıyor ve MCU'nun o kadar hafızası yok. Template'ler normal bilgisayarlar için tasarlandığından dolayı bir sürü resim barındırabilir, buna dikkat etmelisiniz.
Özel mesaj okumuyorum, lütfen göndermeyin.