Go Down

Topic: faire un get via 3g (Read 4483 times) previous topic - next topic

djo54150

bonjour,

alors voila j ai un probleme dans mon code je pense car quand j envoie les commande manuel ca marche

mon code bloque apres Serial.println(port); Serial.flush();

car il est censé lire REQUEST et continuer mais rien ...

Code: [Select]
char data[1024];
int data_size;
int led = 13;
int onModulePin = 2;        // the pin to switch on the module (without press on button)

int x = 0;

char server[ ]="www.google.lu";
char port[ ]="80";
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+CGDCONT=1,\"IP\",\"orange.lu\"");
    Serial.flush();
    while(Serial.read()!='K'); 
   
}

void loop()
{

    Serial.print("AT+CHTTPACT=\""); //Connects with the HTTP server
    Serial.print(server);
    Serial.print("\",");
    Serial.println(port);       
    Serial.flush();
   
    x=0;
    do{
        while(Serial.available()==0);
        data[x]=Serial.read(); 
        x++; 
    }while(!(data[x-1]=='T'&&data[x-2]=='S'));        //waits for response "REQUEST"
   
    Serial.println("GET /index.html HTTP/1.1");
    Serial.println("Host: www.google.lu");
    Serial.println("Content-Length: 0");
    Serial.write(0x1A);       //sends ++
    Serial.write(0x0D);
    Serial.write(0x0A);

  while(Serial.read()!='K');
  while(Serial.read()!=' ');

  data_size=0; 
  do{
    data_size*=10;
    data_size=data_size+(Serial.read()-0x30);
  }while(Serial.peek()!=0x0D);

  for(x=0;x< data_size;x++){
    data[x]=Serial.read();
  }

  Serial.print(data);

    while(1);
   
}


en manuel le code marche tres bien car j obtiens bien ce que je veux :

Code: [Select]
at+csq
+csq: 17,99

OK
AT+CGDCONT=1,"IP","orange.lu"
OK
AT+CHTTPACT="www.google.lu",80
+CHTTPACT: REQUEST
GET /index.html HTTP/1.1 Host: www.google.lu Content-Length: 0
OK

+CHTTPACT: DATA,1068
http/1.0 400 bad request
content-type: text/html; charset=utf-8
content-length: 925
date: thu, 10 may 2012 08:17:53 gmt
server: gfe/2.0

<!DOCTYPE html>
               <html lang=en>
                               <meta charset=utf-8>
                                                     <meta name=viewport content
="initial-scale=1, minimum-scale=1, width=device-width">
                                                          <title>Error 400 (Bad
Request)!!1</title>
                     <style>
                                *{margin:0;padding:0}html,code{font:15px/22px ar
ial,sans-serif}html{background:#fff;color:#222;padding:15px}body{margin:7% auto
0;max-width:390px;min-height:180px;padding:30px 0 15px}* > body{background:url(/
/www.google.com/images/errors/robot.png) 100% 5px no-repeat;padding-right:205px}
p{margin:11px 0 22px;overflow:hidden}ins{color:#777;text-decoration:none}a img{b
order:0}@media screen and (max-width:772px){body{background:none;margin-top:0;ma
x-width:none;padding-right:0}}
                                </style>
                                          <a href=//www.google.com/><img src=//w
ww.google.com/images/errors/logo_sm.gif alt=Google></a>
                                                         <p><b>400.</b> <ins>Tha
t’s an error.</ins>
                       <p>Your client has issued a malformed or illegal request.
  <ins>That’s all we know.</ins>

+CHTTPACT: 0

skizoh

bonjour,

bon je ne vois pas de chose anormal dans ton programme donc je ne serais pas te dire ce qui va pas, la vitesse est peut être inadapter? mais je ne crois, fait gaff avec le serial.println, il balance un fin de ligne + carriage return en fin de ce que tu envoie ce qui correspond a /r/n donc éssaye avec Serial.write(.. si tu veux mon avis.

Skizo !

djo54150

le serial.println du port tu penses?

jai deja essayé de le modifier

c est une probleme avec request

car quand j enlève la verification de request ca va jusqu au get (ce qui est normal en meme tps)

du coup ca vient d avant ....

en gros un commentaire pour rien dire mais la flemme de l effacer

infobarquee

bonjour,
as tu essayé de remplacer
Code: [Select]
char server[ ]="www.google.lu";
par
Code: [Select]
char server[ ]={74,125,132,94};
AUCUNE AIDE PAR MP

djo54150


djo54150


djo54150

#6
May 10, 2012, 12:14 pm Last Edit: May 10, 2012, 12:22 pm by djo54150 Reason: 1
c est ma réponse dans le sérial monitor

pour l instant jai rajouté la commande at+cgauth

plus que a avoir pourquoi jai pas la bonne réponse ;)



Code: [Select]
AT+CPIN=1234
AT+CGAUTH=1,1,,
AT+CGDCONT=1,"IP","orange.lu"
AT+CHTTPACT="www.google.lu",80
GET /index.html HTTP/1.1
Host: www.google.lu
Content-Length: 0


ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÑå

skizoh

je n'ai pas tout compris, mais prend garde au terminal, parfois ta donnée est juste, elle est juste mal traduite et tu peut avoir des caractère bizarre alors que ta variable est niquel..

Skizo !

djo54150

tu me conseil quoi alors pour vérifier

djo54150

jai testé avec hypertherminal

mais a mon avis il ya un probleme avec la réponse

infobarquee


tu me conseil quoi alors pour vérifier


je dirais que le mieux serait d'interroger un server perso et regarder les logs apache avec une page toute bête.
AUCUNE AIDE PAR MP

skizoh

ba déja quel le type de ce que tu veux? char? byte? int?

parce que si j'ai bien vue tu à des caractère bizarre ici:

Code: [Select]

   Serial.println("Host: www.google.lu");
   Serial.println("Content-Length: 0");
   Serial.write(0x1A);       //apartir d'ici
   Serial.write(0x0D);
   Serial.write(0x0A);

donc c'st que ton 0x1A etc s'affiche mal, donc c'est la qu'il va falloir essayer, j'ai tester ça pour toi:

     Serial.write(byte(0x0D)); donne rien
     Serial.write(0x0D+48); donne "="
     Serial.write(0x0D);  donne rien

.. déjà la on est mal tu vois donc cherche par la..

djo54150

la réponse est juste mais je dois mal la traité

avez vous un moyen simple de l afficher

skizoh

#13
May 10, 2012, 02:02 pm Last Edit: May 10, 2012, 02:04 pm by skizoh Reason: 1
a la ligne:
Code: [Select]

data[x]=Serial.read();

tu peut tenter de faire un cast byte ou char comme ça:
Code: [Select]

data[x]=char(Serial.read());
ou
data[x]=byte(Serial.read());

je propose des truc comme ça ^^

Skizo !

skizoh

Ce que tu reçois au final c'est une page web c'est ça? et tu comptait l'afficher comment? sur le terminal?

Skizo !

Go Up