[résolu] problème code déclaration de variable

bonjour a tous,

voila j’ai récupéré un programme pour mon shield qui fait gps chez le fabriquant mais quand je compile jai un problème de déclaration de variable (response et check_response).

jai testé différent truc mais sans succés.

int led = 13;
int onModulePin = 2;        // the pin to switch on the module (without press on button) 

char data[255];
char latitude[11],longitude[12];
char date[6],UTC_time[8];
char speed_OG[6],altitude[6];
int x,y;


void switchModule(){
    digitalWrite(onModulePin,HIGH);
    delay(2000);
    digitalWrite(onModulePin,LOW);
}

void setup(){

    Serial.begin(115200);                // UART baud rate
    delay(2000);
    pinMode(led, OUTPUT);
    pinMode(onModulePin, OUTPUT);
    switchModule();                    // switches the module ON

    for (int i=0;i< 5;i++){
        delay(5000);
    } 
    Serial.println("AT+CPIN=1234");     //active le code pin
    delay(8000);
    
    Serial.println("AT+CREG=2");
    while(Serial.read()!='K');
    
    
    
  Serial.println("AT+CGSOCKCONT=1,\"IP\",\"orange.lu\"");    
    Serial.flush();
    x=0;
    do{
        while(Serial.available()==0);
        response[x]=Serial.read();  
        x++;                        
    }
    while(!check_response("OK"));

    Serial.println("AT+CGPSURL=\"supl.google.com:7276\"");         // sets GPS server
    delay(100);   
    while(Serial.read()!='K'); 

    Serial.println("AT+CGPSSSL=0");         // without certificate
    delay(100);   
    while(Serial.read()!='K'); 

    Serial.println("AT+CGPS=1,2");         // starts GPS session in based mode
    delay(100);   
    while(Serial.read()!='K');        
}

void loop(){

    delay(5000);
    Serial.println("AT+CGPSINFO"); // request GPS info
    Serial.flush();
    for (x=0;x< 255;x++){            
        data[x]='\0';                        
    } 
    x=0;
    do{
        do{
            digitalWrite(led,HIGH);  
        }
        while(Serial.available()==0);
        digitalWrite(led,LOW);
        data[x]=Serial.read();  
        x++;                        
    }
    while(Serial.read()!='K');

    x=24;
    y=0;
    if(data[x]!=','){
        Serial.print("Latitude: ");    //shows actual latitude
        do{
            latitude[y]=data[x];
            Serial.print(data[x]);
            y++;
            x++;        
            if(y==2){
                Serial.print(0xF8);
            }

            if(y==4){
                Serial.print(".");
            }
        }
        while(data[x]!=',');
        x++;
        Serial.print(" ");
        Serial.println(data[x]);    //north or south

        x+=2;
        y=0;
        Serial.print("Longitude: ");    //shows actual longitude
        do{
            longitude[y]=data[x];
            Serial.print(data[x]);
            y++;
            x++;        
            if(y==3){
                Serial.print(0xF8);
            }

            if(y==5){
                Serial.print(".");
            }        
        }
        while(data[x]!=',');
        x++;
        Serial.print(" ");
        Serial.println(data[x]);    //west or east

        x+=2;
        y=0;
        Serial.print("Date: ");    //shows date
        do{
            date[y]=data[x];
            Serial.print(data[x]);
            y++;
            x++;        
        }
        while(data[x]!=',');
        x++;

        y=0;
        Serial.print("\r\nUTC time: ");    //shows UTC time
        do{
            UTC_time[y]=data[x];
            Serial.print(data[x]);
            y++;
            x++;        
        }
        while(data[x]!=',');
        x++;

        y=0;
        Serial.print("\r\nAltitude: ");    //shows altitude
        do{
            UTC_time[y]=data[x];
            Serial.print(data[x]);
            y++;
            x++;        
        }
        while(data[x]!=',');
        Serial.println(" m");
        x++; 

        y=0;
        Serial.print("Speed: ");    //shows speed
        do{
            speed_OG[y]=data[x];
            Serial.print(data[x]);
            y++;
            x++;        
        }
        while(data[x]!=0x0D);
        Serial.println(" knots");
    }
    else{
        Serial.println("GPS information not available, please wait...");
    }   

}

Salut,

La variable response n'est déclarée nul part, à toi de la déclarer.

Sinon check_reponse n'est pas une variable mais une fonction prenant en argument une chaîne de caractère (ici "OK") et retournant un entier ou un booléen. Hors cette fonction n'est définie nul part dans ton extrait de code. Il te manque donc des morceaux... Tu as bien pris l'exemple complet ?

++

oui jai bien pris le code complet et dedans aucune declaration de response

salut, bizarrement il n'y a aucune déclaration de lib dans ton programme et check_reponse ce trouve peut être dans une libraire qui devrai aller avec ton programme..

Donne le lien ou tu a trouvé cette exemple on va allez voir ça.

Skzio !

merci d'avance

... j'ai parcouru la page et les lien j'ai pas trouvé le code.. je l'ai sans doute loupé :s

Skizo !

oui tu l as loupé :wink:

c est dans gps et s-gps

ah, sa y est merci ^^ bon déjà tu a un autre programme similaire au dessus il me semble qui n’as pas ce fameux check_reponse, si ça ne convient pas essaie de comprendre ce qu’est ce check_reponse et ce qu’il doit représenter dans ton programme, une fonction une variable un truc du style… j’ai pas trop le temps de faire ça en ce moment mais tu va bien trouver quelqu’un qui sera t’aider.

Skizo !

Sur la page où tu as trouvé le code source, j'ai trouvé quelques éléments intéressants dispersés dans les différentes parties...

La déclaration de la variable response :

char response[128];

Et la fonction check_reponse :

boolean check_response(char *str){
    
    int i = 0;
    int j = 0;
    char b[10];


    // reading the message and cutting
    // initials and finals 
    while(Serial.available() > 0){
        if(j==0 || j==1){
            Serial.read();
            j++;
        }
        else if( Serial.peek() == 13 ){
            b[i] = 0;
            Serial.read();
        }
        else if( Serial.peek() == 10 ){
            Serial.read();
        }
        else {
            b[i++] = Serial.read();
        }
    }

    // comparing
    int cont=0;
    int cont2=0;
    boolean ok=false;
    while(b[cont]!=-1){
        if (b[cont]==str[cont2]){
            while(str[cont2]!=-1){
                if (b[cont+cont2]!=b[cont2])
                {    
                    cont2++; 
                    ok=true; 
                }
                else {
                    ok=false; 
                    break;
                }
            }   
        }
        if (ok) break;
        cont++;
    }

    if(ok){
        return true;
    }
    
    return false;
}

merci :slight_smile:

j aurai du mieux regarder