# include "spp.h"
# include "adc.h"
# include "binary.h"
# include <stdio.h>
# include <conio.h>
# include <time.h>
# include <string.h>
# include <windows.h>

//file path e nomi per file di consultazione
# define cch0 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\cch0adc.log"
# define cch1 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\cch1adc.log"
# define cch2 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\cch2adc.log"
# define cch3 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\cch3adc.log"
# define cch4 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\cch4adc.log"
# define cch5 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\cch5adc.log"
# define cch6 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\cch6adc.log"
# define cch7 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\cch7adc.log"

//file path e nomi per file da dare in past a excel
# define gch0 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\gch0adc.log"
# define gch1 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\gch1adc.log"
# define gch2 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\gch2adc.log"
# define gch3 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\gch3adc.log"
# define gch4 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\gch4adc.log"
# define gch5 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\gch5adc.log"
# define gch6 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\gch6adc.log"
# define gch7 "c:\\tcpp\\work\\lcc32work\\adcweb4\\logs\\gch7adc.log"

//istanza file consultazione
static FILE *cch0log;
static FILE *cch1log;
static FILE *cch2log;
static FILE *cch3log;
static FILE *cch4log;
static FILE *cch5log;
static FILE *cch6log;
static FILE *cch7log;

//istanza file excel
static FILE *gch0log;
static FILE *gch1log;
static FILE *gch2log;
static FILE *gch3log;
static FILE *gch4log;
static FILE *gch5log;
static FILE *gch6log;
static FILE *gch7log;

static int dato;          //variabile statica, dura anche dentro le function

void and_to_space (char[80]);  // converte & in spazi
void open_all_files(void);     // apre tutti i file
void close_all_files(void);    // chiude tutti i file
void nav_bar(void);		       // barra di navigazione per misura
void nav_bar_file(void);	   // barra di navigazione per file

int main(void)
{


 char comando[80],canale[80],tasto[80];
 char cnomefile[20],gnomefile[20],nchannel[8];
 int  key,cha;
 float tensione;
 char cf;

 time_t tempo;


 printf("Content-Type: text/html\n\n");

 printf("<HTML>\n");
 printf("<HEAD>\n");
 printf("<TITLE>AdcWeb 3.0</TITLE>\n");
 printf("</HEAD>\n");
 printf("<BODY>\n");

 open_all_files();

 strcpy(comando,getenv("QUERY_STRING"));
 //Ch=V1&R1 formato della stringa
 and_to_space(comando);                    //converte & in spazi

 sscanf(comando,"%s %s",&canale,&tasto);   //crea le 2 sottostringhe
 sscanf(canale,"Ch=%d",&cha);              //estrapola il canale (char) dalla prima
 sscanf(tasto,"R%d",&key);                 //estrapola il tasto (int) dalla seconda

 AdcChannelInit(0x378);				 //inizializza la 8adc

 strcpy(cnomefile,"cch");                  //inizializza la stringa per i file
 strcpy(gnomefile,"gch");

 switch (key)                              //decide a seconda dei tasti premuti
 {
  case 1 :                                 //conversione a salvataggio su file
   switch (cha)
   {
    case 0 :
     dato=AdcChannelRead(0x378,0);
     dato=AdcChannelRead(0x378,0);
     time(&tempo);
     printf("<h2>");
     printf("<font color=\"#0000FF\" face=\"Tahoma\">");
     tensione = AdcVoltage(dato,5.06);
     printf("Tensione misurata sul canale %d : %1.3f V",cha,tensione);
     printf("</h2>");
     fprintf(cch0log,"Tensione misurata su canale %d : %1.3f V @ %s",cha,tensione,ctime(&tempo));
     fprintf(gch0log,"%1.3f;%ld\n",tensione,time(&tempo));
     nav_bar();
    break;

    case 1 :
     dato=AdcChannelRead(0x378,1);
     dato=AdcChannelRead(0x378,1);
     time(&tempo);
     printf("<h2>");
     printf("<font color=\"#0000FF\" face=\"Tahoma\">");
     tensione = AdcVoltage(dato,5.06);
     printf("Tensione misurata sul canale %d : %1.3f V",cha,tensione);
     printf("</h2>");
     fprintf(cch1log,"Tensione misurata su canale %d : %1.3f V @ %s",cha,tensione,ctime(&tempo));
     fprintf(gch1log,"%1.3f;%ld\n",tensione,time(&tempo));
     nav_bar();
    break;

    case 2 :
     dato=AdcChannelRead(0x378,2);
     dato=AdcChannelRead(0x378,2);
     time(&tempo);
     printf("<h2>");
     printf("<font color=\"#0000FF\" face=\"Tahoma\">");
     tensione = AdcVoltage(dato,5.06);
     printf("Tensione misurata sul canale %d : %1.3f V",cha,tensione);
     printf("</h2>");
     fprintf(cch2log,"Tensione misurata su canale %d : %1.3f V @ %s",cha,tensione,ctime(&tempo));
     fprintf(gch2log,"%1.3f;%ld\n",tensione,time(&tempo));
     nav_bar();
    break;

    case 3 :
     dato=AdcChannelRead(0x378,3);
     dato=AdcChannelRead(0x378,3);
     time(&tempo);
     printf("<h2>");
     printf("<font color=\"#0000FF\" face=\"Tahoma\">");
     tensione = AdcVoltage(dato,5.06);
     printf("Tensione misurata sul canale %d : %1.3f V",cha,tensione);
     printf("</h2>");
     fprintf(cch3log,"Tensione misurata su canale %d : %1.3f V @ %s",cha,tensione,ctime(&tempo));
     fprintf(gch3log,"%1.3f;%ld\n",tensione,time(&tempo));
     nav_bar();
    break;

    case 4 :
     dato=AdcChannelRead(0x378,4);
     dato=AdcChannelRead(0x378,4);
     time(&tempo);
     printf("<h2>");
     printf("<font color=\"#0000FF\" face=\"Tahoma\">");
     tensione = AdcVoltage(dato,5.06);
     printf("Tensione misurata sul canale %d : %1.3f V",cha,tensione);
     printf("</h2>");
     fprintf(cch4log,"Tensione misurata su canale %d : %1.3f V @ %s",cha,tensione,ctime(&tempo));
     fprintf(gch4log,"%1.3f;%ld\n",tensione,time(&tempo));
     nav_bar();
    break;

    case 5 :
     dato=AdcChannelRead(0x378,5);
     dato=AdcChannelRead(0x378,5);
     time(&tempo);
     printf("<h2>");
     printf("<font color=\"#0000FF\" face=\"Tahoma\">");
     tensione = AdcVoltage(dato,5.06);
     printf("Tensione misurata sul canale %d : %1.3f V",cha,tensione);
     printf("</h2>");
     fprintf(cch5log,"Tensione misurata su canale %d : %1.3f V @ %s",cha,tensione,ctime(&tempo));
     fprintf(gch5log,"%1.3f;%ld\n",tensione,time(&tempo));
     nav_bar();
    break;

    case 6 :
     dato=AdcChannelRead(0x378,6);
     dato=AdcChannelRead(0x378,6);
     time(&tempo);
     printf("<h2>");
     printf("<font color=\"#0000FF\" face=\"Tahoma\">");
     tensione = AdcVoltage(dato,5.06);
     printf("Tensione misurata sul canale %d : %1.3f V",cha,tensione);
     printf("</h2>");
     fprintf(cch6log,"Tensione misurata su canale %d : %1.3f V @ %s",cha,tensione,ctime(&tempo));
     fprintf(gch6log,"%1.3f;%ld\n",tensione,time(&tempo));
     nav_bar();
    break;

    case 7 :
     dato=AdcChannelRead(0x378,7);
     dato=AdcChannelRead(0x378,7);
     time(&tempo);
     printf("<h2>");
     printf("<font color=\"#0000FF\" face=\"Tahoma\">");
     tensione = AdcVoltage(dato,5.06);
     printf("Tensione misurata sul canale %d : %1.3f V",cha,tensione);
     printf("</h2>");
     fprintf(cch7log,"Tensione misurata su canale %d : %1.3f V @ %s",cha,tensione,ctime(&tempo));
     fprintf(gch7log,"%1.3f;%ld\n",tensione,time(&tempo));
     nav_bar();
    break;
   }
  break;

  case 2 :   //dammi il logfile relativo al canale
   switch(cha)
    {
     case 0:
	printf("<h2>");
      printf("<font color=\"#CC0066\" face=\"Tahoma\">");
      printf("Conversioni Adc su canale 0, file : cch0adc.log");
      printf("</h2>");
      printf("<br>");
      while ((cf=getc(cch0log))!=EOF)
       {
        if (cf==10)
		{
		 printf("<br>");
	    }
		else
		{
		 printf("%c",cf);
	    }
       }
	   nav_bar_file();
     break;

     case 1:
	printf("<h2>");
      printf("<font color=\"#CC0066\" face=\"Tahoma\">");
      printf("Conversioni Adc su canale 1, file : cch1adc.log");
      printf("</h2>");
      printf("<br>");
      while ((cf=getc(cch1log))!=EOF)
       {
        if (cf==10)
		{
		 printf("<br>");
	    }
		else
		{
		 printf("%c",cf);
	    }
       }
	   nav_bar_file();
     break;

     case 2:
	printf("<h2>");
      printf("<font color=\"#CC0066\" face=\"Tahoma\">");
      printf("Conversioni Adc su canale 2, file : cch2adc.log");
      printf("</h2>");
      printf("<br>");
      while ((cf=getc(cch2log))!=EOF)
       {
        if (cf==10)
		{
		 printf("<br>");
	    }
		else
		{
		 printf("%c",cf);
	    }
       }
	   nav_bar_file();
     break;

     case 3:
	printf("<h2>");
      printf("<font color=\"#CC0066\" face=\"Tahoma\">");
      printf("Conversioni Adc su canale 3, file : cch3adc.log");
      printf("</h2>");
      printf("<br>");
      while ((cf=getc(cch3log))!=EOF)
       {
        if (cf==10)
		{
		 printf("<br>");
	    }
		else
		{
		 printf("%c",cf);
	    }
       }
	   nav_bar_file();
     break;

case 4:
	printf("<h2>");
      printf("<font color=\"#CC0066\" face=\"Tahoma\">");
      printf("Conversioni Adc su canale 4, file : cch4adc.log");
      printf("</h2>");
      printf("<br>");
      while ((cf=getc(cch4log))!=EOF)
       {
        if (cf==10)
		{
		 printf("<br>");
	    }
		else
		{
		 printf("%c",cf);
	    }
       }
	   nav_bar_file();
     break;

     case 5:
	printf("<h2>");
      printf("<font color=\"#CC0066\" face=\"Tahoma\">");
      printf("Conversioni Adc su canale 5, file : cch5adc.log");
      printf("</h2>");
      printf("<br>");
      while ((cf=getc(cch5log))!=EOF)
       {
        if (cf==10)
		{
		 printf("<br>");
	    }
		else
		{
		 printf("%c",cf);
	    }
       }
	   nav_bar_file();
     break;

     case 6:
	printf("<h2>");
      printf("<font color=\"#CC0066\" face=\"Tahoma\">");
      printf("Conversioni Adc su canale 6, file : cch6adc.log");
      printf("</h2>");
      printf("<br>");
      while ((cf=getc(cch6log))!=EOF)
       {
        if (cf==10)
		{
		 printf("<br>");
	    }
		else
		{
		 printf("%c",cf);
	    }
       }
	   nav_bar_file();
     break;

     case 7:
	printf("<h2>");
      printf("<font color=\"#CC0066\" face=\"Tahoma\">");
      printf("Conversioni Adc su canale 7, file : cch7adc.log");
      printf("</h2>");
      printf("<br>");
      while ((cf=getc(cch7log))!=EOF)
       {
        if (cf==10)
		{
		 printf("<br>");
	    }
		else
		{
		 printf("%c",cf);
	    }
       }
	   nav_bar_file();
     break;
    }
  break;


 }

 close_all_files();






 printf("</BODY>\n");
 printf("</HTML>\n");
 return 0;
}

void and_to_space (char s[80])  //trasforma le & in spazi
{
 int n=0;
  while (s[n])
  {
   if (s[n]=='&')
   {
    s[n]=' ';
   }
   n++;
  }
}

void open_all_files(void)    //apre tutti i file
{
  //file opening or append if already exist
 cch0log=fopen(cch0,"a+");
 cch1log=fopen(cch1,"a+");
 cch2log=fopen(cch2,"a+");
 cch3log=fopen(cch3,"a+");
 cch4log=fopen(cch4,"a+");
 cch5log=fopen(cch5,"a+");
 cch6log=fopen(cch6,"a+");
 cch7log=fopen(cch7,"a+");

 gch0log=fopen(gch0,"a+");
 gch1log=fopen(gch1,"a+");
 gch2log=fopen(gch2,"a+");
 gch3log=fopen(gch3,"a+");
 gch4log=fopen(gch4,"a+");
 gch5log=fopen(gch5,"a+");
 gch6log=fopen(gch6,"a+");
 gch7log=fopen(gch7,"a+");

}

void close_all_files(void)   //chiude tutti i file
{
 fclose(cch0log);
 fclose(cch1log);
 fclose(cch2log);
 fclose(cch3log);
 fclose(cch4log);
 fclose(cch5log);
 fclose(cch6log);
 fclose(cch7log);

 fclose(gch0log);
 fclose(gch1log);
 fclose(gch2log);
 fclose(gch3log);
 fclose(gch4log);
 fclose(gch5log);
 fclose(gch6log);
 fclose(gch7log);
}

void nav_bar(void)
{
 printf("<h3>");
 printf("<br>");
 printf("<a href=\"javascript:location.reload(1)\">Ripeti misura</a>");
 printf("<br>");
 printf("<a href=\"javascript:history.back(1)\">Cambia canale</a>");
 printf("<br>");
 printf("<a href=\"javascript:window.print()\">Stampa misura</a>");
 printf("</h3>");
}


void nav_bar_file(void)
{
 printf("<h3 align=\"center\">");
 printf("<a href=\"javascript:location.reload(1)\">Reload logfile</a>");
 printf("	");
 printf("<a href=\"javascript:history.back(1)\">Cambia Canale</a>");
 printf("	");
 printf("<a href=\"javascript:window.print()\">Stampa logfile</a>");
 printf("</h3>");
}
