Bonjour à tous,
J'ai encore du mal a comrpendre comment passer correctement un char dans une fonction.
EN gros
je déclare un char
Je recupère ce que je tape dans mon terminal
Code : Sélectionner tout - Visualiser dans une fenêtre à part char number[20];
Je recupere le deuxième et troiseme parametre ( 3 et +41223456677)
Je regarde si posi (3) n'a pas deux caractere, soit n'est pas plus grand que 9
J'appelle la fonction WritePhoneNum(byte posi, char number) qui prend en parametre la position et le nuemro de téléphone
Je ne comprends pa spourquoi, au niveau de ma fonction WritePhoneNum() j'ai un message d'erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 if(!strncmp(inSerial,"dirw",4)){ // Je tape dans mon terminal driw 3 +41223456677 //Je recupère le deuxieme parametre 3 et le numero // qui préalablement déclaré ainsi // char posi[2]; char number[20]; sscanf(inSerial,"%*s%s%s",posi, number); Serial.print(posi[0]); // Si posi a plus d'un caractere, comme par exemple 22 if(strlen(posi) > 1){ Serial.print(F("The position must have one caracter (1-9)")); }else{ // Si non affiche le numero a enregistré Serial.print(number); WritePhoneNum((byte)(posi[0] - '0'), number); } }
Je ne comprends pa spourquoi, prce que toutes les ariable concernée sont des char, donc pourquoi il y a t il un probleme de convertion?"Invalid conversion from 'char*' to 'char'
Voici la fonction en question
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 // write phone number to the SMS directory void WritePhoneNum(byte posi, char number){ #ifdef DEBUG Serial.println(F("\nWRITING TO THE DIRECTORY")); Serial.println(F("--------------------------------")); #endif // Ceci est peut etre inutile. je ée fais deux fois. Je verrai plus tard pour suprimer... if(posi >= 1 && posi <= 9) { Serial.print(number); if(strlen(number) > 2){ gsm.WritePhoneNumber(posi, number); #ifdef DEBUG Serial.print(F("The phone number ")); Serial.print(number); Serial.print(F(" has been recorded at the position ")); Serial.println(posi); #endif }else{ #ifdef DEBUG Serial.print(F("The phone number must have at least 3 caracteres ")); #endif } } else { Serial.println(F("Entrer une valeur entre 1 et 9")); // pas bon } Serial.println(""); #ifdef DEBUG enterCommand(); #endif }
Partager