//--------------------------------------------------------------------- //--------------------------------------------------------------------- // Fonctions concernant le dialogue avec le PC //--------------------------------------------------------------------- //--------------------------------------------------------------------- //--------------------------------------------------------------------- // valide_num() // Cette fonction permet de vérifier la validité des paramètres envoyés sous forme de 3octets précédés d'un # //--------------------------------------------------------------------- boolean valide_num(char *caract) { // Si le caractère reçu n'est pas un chiffre if( caract[0]<'0' || caract[0]>'2' || caract[1]<'0' || caract[1]>'9' || caract[2]<'0' || caract[2]>'9') { return false; } return true; } //--------------------------------------------------------------------- // validation() // Cette fonction permet de vérifier la validité des paramètres envoyés //--------------------------------------------------------------------- boolean validation(char *caract) { // Si le premier chiffre est codé en BCD if(caract[0]==BCD) { // Si le premier chiffre est codé en BCD if(!valide_num(caract+1)) { return false; } // Si le second mot est en BCD if(caract[4]==BCD) { if(caract[8]!='\0') { return false; } if(!valide_num(caract+5)) { return false; } } // Si le second mot est un simple octet ou un octet échappé else { if((caract[4]==ECH && caract[6]!='\0') || (caract[4]!=ECH && caract[5]!='\0')) { return false; } } } else { // Si le premier mot est échappé if(caract[0]==ECH) { // Si le second est codé en BCD if(caract[2]==BCD) { if(caract[6]!='\0') { return false; } if(!valide_num(caract+3)) { return false; } } else { // Si le second mot est un simple octet ou un octet échappé if((caract[2]==ECH && caract[4]!='\0') || (caract[2]!=ECH && caract[3]!='\0')) { return false; } } } // Si le premier mot est un octet simple else { // Si le second est codé en BCD if(caract[1]==BCD) { if(caract[5]!='\0') { return false; } if(!valide_num(caract+2)) { return false; } } else { // Si le second mot est un simple octet ou un octet échappé if((caract[1]==ECH && caract[3]!='\0') || (caract[1]!=ECH && caract[2]!='\0')) { return false; } } } } return true; } //--------------------------------------------------------------------- // decodage() // Cette fonction récupère la valeur passée en paramètre au module une fois qu'ils ont été vérifiés //--------------------------------------------------------------------- long decodage(char *caract) { long tmp; if(caract[0]==BCD) { tmp= (100*(caract[1]-'0') + 10*(caract[2]-'0') + (caract[3]-'0'))*256; if(caract[4]==BCD) { tmp= 100*(caract[5]-'0') +10*(caract[6]-'0') + caract[7] -'0'+tmp; } else{ if(caract[4]==ECH) { tmp=(caract[5])+tmp; } else { tmp=(caract[4])+tmp; } } } else { if(caract[0]==ECH) { tmp=256*(caract[1]); if(caract[2]==BCD) { tmp= 100*(caract[3]-'0') +10*(caract[4]-'0') + (caract[5]-'0')+tmp; } else { if(caract[2]==ECH) { tmp=(caract[3])+tmp; } else { tmp=(caract[2])+tmp; } } } else { tmp=256*(caract[0]); if(caract[1]==BCD) { tmp= 100*(caract[2]-'0') +10*(caract[3]-'0') + (caract[4]-'0')+tmp; } if(caract[1]==ECH) { tmp=(caract[2])+tmp; } else { tmp=(caract[1])+tmp; } } } return tmp; }