⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 http.c

📁 Pic Nic 16f877/18f452控制 rtl8019as 原代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
 * http.c
 *
 * Rafael V. Aroca <rva@grad.icmc.usp.br>
 *
 * Prepares HTML Pages in PIC memory and send these pages
 * This file implements a "printfs filesystem"
 *
 *  References for checksum computation:
 *   - http://www.netfor2.com/tcpsum.htm
 *   - http://www.netfor2.com/checksum.html
 *
 */

#ifndef RTS
 #define RTS PIN_C5
 #define DTR PIN_C4
#endif

// Definicao de Casas
#define A1_8  0x60  // eq. 01100000
#define A9_16 0x64  // eq. 01100100
#define B1_8  0x70
#define B9_16 0x74
#define C1_8  0x40
#define C9_16 0x44
#define D1_8  0x50
#define D9_16 0x54
#define E1_8  0x80
#define E9_16 0x84
#define F1_8  0x90
#define F9_16 0x94
#define G1_8  0xA0
#define G9_16 0xA4
#define H1_8  0xB0
#define H9_16 0xB4
#define I1_8  0xE0
#define I9_16 0xE4
#define J1_8  0xF0
#define J9_16 0xF4
#define K1_8  0xC0
#define K9_16 0xC4
#define L1_8  0xD0
#define L9_16 0xD4
#define M1_8  0x00
#define M9_16 0x04
#define N1_8  0x10
#define N9_16 0x14
#define O1_8  0x20
#define O9_16 0x24
#define P1_8  0x30
#define P9_16 0x34

//Bright/DIM
#define B    0x88
#define D    0x98

// Definicao de dispositivos
#define ON1   0x0   // eq. 00000000
#define OFF1  0x20  // eq. 00100000
#define ON2   0x10
#define OFF2  0x30
#define ON3   0x08
#define OFF3  0x28
#define ON4   0x18
#define OFF4  0x38
#define ON5   0x40
#define OFF5  0x60
#define ON6   0x50
#define OFF6  0x70
#define ON7   0x48
#define OFF7  0x68
#define ON8   0x58
#define OFF8  0x78


void e_um()
{
  output_high(DTR);
  delay_us(700);
  output_low(DTR);
  delay_us(700);
}

void e_zero()
{
  output_high(RTS);
  delay_us(700);
  output_low(RTS);
  delay_us(700);
}

void e_reset()
{
  output_high(RTS);
  output_high(DTR);
  delay_ms(10);
  output_low(RTS);
  output_low(DTR);
  delay_ms(1);
}

void e_header()
{
  //header 11010101 10101010
  e_um();
  e_um();
  e_zero();
  e_um();
  e_zero();
  e_um();
  e_zero();
  e_um();
  e_um();
  e_zero();
  e_um();
  e_zero();
  e_um();
  e_zero();
  e_um();
  e_zero();
}

void e_footter()
{
  e_um();
  e_zero();
  e_um();
  e_zero();
  e_um();
  e_um();
  e_zero();
  e_um();
}

void e_code(int8 casa, int8 acao)
{
  // envia cabecalho
  e_header();

  // envia codigo da casa
  if (bit_test(casa,7))
     e_um();
  else
     e_zero();
  if (bit_test(casa,6))
     e_um();
  else
     e_zero();
  if (bit_test(casa,5))
     e_um();
  else
     e_zero();
  if (bit_test(casa,4))
     e_um();
  else
     e_zero();
  if (bit_test(casa,3))
     e_um();
  else
     e_zero();
  if (bit_test(casa,2))
     e_um();
  else
     e_zero();
  if (bit_test(casa,1))
     e_um();
  else
     e_zero();
  if (bit_test(casa,0))
     e_um();
  else
     e_zero();

  // envia codigo da acao
  if (bit_test(acao,7))
     e_um();
  else
     e_zero();
  if (bit_test(acao,6))
     e_um();
  else
     e_zero();
  if (bit_test(acao,5))
     e_um();
  else
     e_zero();
  if (bit_test(acao,4))
     e_um();
  else
     e_zero();
  if (bit_test(acao,3))
     e_um();
  else
     e_zero();
  if (bit_test(acao,2))
     e_um();
  else
     e_zero();
  if (bit_test(acao,1))
     e_um();
  else
     e_zero();
  if (bit_test(acao,0))
     e_um();
  else
     e_zero();

  // rodape
  e_footter();

}











//To be called from a printf: stores in a memory position a byte of a web page
void outdataMem(int data) {
   pageBuffer[memPos] = data;
   memPos+=1;
}

//Reads a byte from a page in memory
int readMemData(int16 pos) {
   return pageBuffer[pos];
}

//To save space: writes http header
void writeHttpHeader() {
         printf(outdataMem, "HTTP/1.0 200 OK\r\n");
         printf(outdataMem, "Content-type: text/html\r\n\r\n");
}



//Prepares a page, computing its checksum and putting it in memory to be sent later
void preparar_pagina(int8 html_request, int8 *html_request_data) {

   int8 char0, char1, c, i;
   int16 size, dir;
   //int8 page1[20];
   //strcpy(page1, "fan-on.cgi");

   #ifdef DEBUG
      printf("Preparing page: %s", html_request);
   #endif

   memPos=0;
   //Verify page name with case insentive - not working for names > 1 char.....fix me
   //printf("\n\r\n\r===== %u =====\n\r\n\r", stricmp(*html_request, page1));
//   if (stricmp(*html_request, page1) == 0) {

   //Temporarily we just compare the first letter of the page name

   switch (html_request) {

    case 'g':

         writeHttpHeader();
         printf(outdataMem, "<html><body>");
      	printf(outdataMem, "OK g");
      	printf(outdataMem, "                        ");
      	printf(outdataMem, "                        ");
      	printf(outdataMem, "                        ");
         printf(outdataMem, "</body></html> \f");

         lcd_pos_xy(1,2);
         printf(lcd_escreve, "GeoShow On     ");

#use rs232(baud=19200,parity=N,xmit=PIN_B6,rcv=PIN_B7,bits=8,errors)

         printf("^CO$\r\n");
      //   printf("A\r\n");
        // printf("A\r\n");
#use rs232(baud=19200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,errors)

    break;

    case 'o':

         writeHttpHeader();
         printf(outdataMem, "<html><body>");
      	printf(outdataMem, "OK o");
      	printf(outdataMem, "                        ");
      	printf(outdataMem, "                        ");
      	printf(outdataMem, "                        ");
         printf(outdataMem, "</body></html> \f");

         lcd_pos_xy(1,2);
         printf(lcd_escreve, "GeoShow Off    ");

         //fprintf(GEOSHOW, "^CF$\r\n");
#use rs232(baud=19200,parity=N,xmit=PIN_B6,rcv=PIN_B7,bits=8,errors)
         printf( "^CF$\r\n");
#use rs232(baud=19200,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8,errors)

         //#13+#10
    break;




    case 'c':

         writeHttpHeader();
         printf(outdataMem, "<html><body>");
      	printf(outdataMem, "OK c");
      	printf(outdataMem, "                        ");
      	printf(outdataMem, "                        ");
      	printf(outdataMem, "                        ");
         printf(outdataMem, "</body></html> \f");

         e_code(A1_8, ON8);

         lcd_pos_xy(1,2);

         printf(lcd_escreve, "Luz 1 On     ");

    break;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -