Bonjour,
J'utilise la pile Ethernet Microchip et je cherche à créer selon l'exemple de la note d'application Microchip ( page 82 ) un fichier Cgi contenant des textboxes et 1 bouton "Envoyer" et le code en C associé pour récupérer ces informations dans le programme pour ensuite les exploiter.
C'est à partir de la fonction HTTPExecCmd
AppNotes/00833c.pdf
En "recopiant" le code en C pour Pic de la note d'application, j'ai des erreurs de compilations.
J'ai essayé de travailler un peu sur le pb, mais je ne parviens toujours pas à le faire fonctionner ...
Le but de ce code étant d'aller identifier un nom d'argument dans le fichier cgi et de stocker le contenu de la textbox associée dans une variable exploitable par le programme.
Déclarations préalables :
Mon code :Code:BYTE i; int set_hour; int set_minute; int set_second; int set_out; char Hour[3]; char Min[3]; char Sec[3]; char Out[3];
J'obtiens systématiquement un Warning [2066] type qualifier mismatch in assignmentCode:void HTTPExecCmd(BYTE** argv, BYTE argc) { BYTE command, var; // Design your pages such that they contain command code as a one // character numerical value. // Being a one character numerical value greatly simplifies the job command = argv[0][0] - '0'; // Find out the cgi file name and interpret parameters accordingly switch(command) { case CGI_CMD_TIMER: // BYTE i; // was moved up because it is declaration and can't be left here. // Go through each parameters for current form command. // We are skipping form action name, so i starts at 1... for (i = 1; i < argc; i++ ) { // Identify parameter. if( strcmp((rom char*)Hour, argv[i]) == 0) { // Next parameter is the Hour. set_hour = atoi(argv[++i]); } else if( strcmp((rom char*)"Min", argv[i]) == 0) set_minute = atoi(argv[++i]); else if ( strcmp("Sec", argv[i]) == 0) set_second = atoi(argv[++i]); else if ( strcmp("Out", argv[i]) == 0) set_out = atoi(argv[++i]); } // If another page is to be displayed as a result of this command, copy // its upper case name into argv[0] //memcpypgm2ram( argv[0], SEETIMER_PAGE, SEETIMER_PAGE_LEN); memcpypgm2ram((void*)argv[0], (ROM void*)SEETIMER_PAGE, SEETIMER_PAGE_LEN); break;
pour chaque ligne de comparaison d'argument ( par exemple celle-ci : )en modifiant ainsi, c'est la même chose :Code:if( strcmp((rom char*)Hour, argv[i]) == 0)
Pourriez vous m'indiquer ce qui ne va pas dans mon code svp ?Code:if ( strcmp("Hour", argv[i]) == 0)
Mes déclarations sont elles correctes ?
Peut être auriez vous des exemple existants de fichiers CGI associés à un code en C pour Pic , cela pourrait m'aider.
Je vous remercie,
.
-----