Pages: [1]   Go Down
Author Topic: Mélange des données entre un module GRPS et GPS  (Read 394 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 36
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Dans le cadre d'un projet j'utilise un module GRPS (de Seedstudio) et un GPS (PMB-648).
Je rencontre un problème lorsque j'utilise les deux en même temps.

Sans GPS, le GRPS m'envoie "test", avec GPS, il m'envoie les coordonnées alors que je lui ai jamais demandé.


Voici le code principal.
Code:
SoftwareSerial mySerial(7, 8);
TinyGPS gps;
SoftwareSerial nss(6, 255);           
 
void setup()
{
  delay(1000);
  Serial.begin(19200);     
  mySerial.begin(19200);               
  nss.begin(4800);
}
 
void loop()
{
  char numero[100];
  char message[1000];
  strcpy(numero,"**********");
  strcpy(message,"test");
 
  if (Serial.available())
    switch(Serial.read())
   {
     case 't':
     SendTextMessage(numero,message);
     break;
   
   }
  if (mySerial.available())
    Serial.write(mySerial.read());
}


Le code de la fonction SendTextMessage :
Code:
void SendTextMessage(char numero[100], char message[1000])
{
  //   Serial.print("Envoi d'un SMS au ");
 // Serial.print(numero);
// Serial.println(".");
  //Serial.println("Contenu : ");
 //Serial.print(message);
  //Serial.println("");
  mySerial.print("AT+CMGF=1\r");    //Because we want to send the SMS in text mode
  delay(100);
      mySerial.print("AT + CMGS = \"");//send sms message, be careful need to add a country code before the cellphone number
    delay(100);
  mySerial.print(numero);//the content of the message
  delay(100);
    mySerial.println("\"");//the content of the message
  delay(100);
    mySerial.println(message);//the content of the message
    delay(100);
  mySerial.println((char)26);//the ASCII code of the ctrl+z is 26
  delay(100);
  mySerial.println();
 Serial.println("Envoi OK");
 Serial.println("");
}

Mes 2 problèmes sont les suivants :
- si je dé-commente ce qui est commenté au début de la fonction sendtextmessage, je ne reçois aucun SMS
- Si le GPS est branché, il m'envoie des coordonnées au lieu d'envoyer test


Merci de votre aide !
« Last Edit: December 30, 2012, 10:24:26 am by saraza » Logged

France
Offline Offline
Faraday Member
**
Karma: 52
Posts: 5341
Arduino Hacker
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour,

Code:
SoftwareSerial nss(6, 255);
Je suis pas sûr que la librairie SoftwareSerial (anciennement NewSoftSerial avant 1.0.x) supporte le fait d'avoir un numéro de broche "bidon".
Essaye de mettre deux numéros de broches valide dans un premier temps.

Code:
char numero[100];
char message[1000];
Heu ... faut voir un peu moins grand !
- Un numéro de téléphone c'est maximum 12 caractères + \0 = 13 chars.
- Un message de 1000 octets ... quand on a que 2Ko de RAM c'est un peu ... énorme smiley-wink

Tu reçoit les coordonnées par SMS ou tu les vois sur le serial monitor ?
- par SMS, avec le code actuel c'est impossible
- sur le serial monitor, c'est ces deux lignes qui le permettent :
Code:
if (mySerial.available())
    Serial.write(mySerial.read());

Fait attention, tu te mélange peut être aussi les pinceaux entre ton port série software "MySerial", "nss", et le port série hardware (Serial).

Ps: si tu veut envoyer un sms avec un message fixe :
Code:
SendTextMessage("xxxxxxxxxx", "Test");
ça évite la déclaration d'un tableau et la copie de la chaine de caractères.

PPs:
Code:
void SendTextMessage(char numero[100], char message[1000])
Donner une taille de tableau dans un prototype ne garanti pas que celui ci fera la taille spécifié.

D'où la syntaxe habituelle, plus propre :
Code:
void SendTextMessage(char numero[], char message[])
ou
Code:
void SendTextMessage(char* numero, char* message)
Logged

Des news, des tuto et plein de bonne chose sur http://skyduino.wordpress.com !

Pages: [1]   Go Up
Jump to: