-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathFonction de base : Analyse du réseau
67 lines (60 loc) · 1.9 KB
/
Fonction de base : Analyse du réseau
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <SoftwareSerial.h>
#include <Time.h>
#define TEMPS_ATTENTE_VEILLE 20 // Temps d'attente en secondes entre vérifications du réseau
SoftwareSerial GPRS (7, 8); // mySerial : relatif au shield GPRS ; Serial : relatif à l'ordinateur
String SIM_PIN_CODE = "0000"; // Code Pin de la carte SIM
String msg = ""; // Mémoire tampon de la communication avec le module GPRS
boolean veille = true;
time_t tempsPrecedentVeille;
void setup()
{
GPRS.begin(19200); // Fréquence du module
Serial.begin(19200);
tempsPrecedentVeille = now();
}
void loop()
{
if (GPRS.available()) {
executionGPRS();
}
else {
time_t time = now();
if ((time-tempsPrecedentVeille) >= TEMPS_ATTENTE_VEILLE)
{
reseauIndisponible(); // Vérification du réseau
tempsPrecedentVeille = time;
}
}
}
void executionGPRS ()
{
char SerialInByte = (unsigned char)GPRS.read(); // Réception du caractère envoyé par le module GPRS
if (SerialInByte == 13) { // Si le message se termine par un <CR> alors on traite le message
gestionCommunicationGPRS();
}
else if (SerialInByte != 10) {
msg += String(SerialInByte);
}
}
void gestionCommunicationGPRS ()
{
if (msg.indexOf("+CPIN: SIM PIN")>=0) { // Demande du code Pin de la carte SIM
Serial.println("*** Envoi du code Pin... ***");
GPRS.print("AT+CPIN="); // Envoi du code Pin
GPRS.println( SIM_PIN_CODE );
}
msg = ""; // Efface le contenu de la mémoire tampon des messages du GPRS shield.
}
void reseauIndisponible() // Gère le réseau mobile
{
GPRS.print("AT+CREG?\r\n"); // Demande de l'enregistrement sur le réseau
while (!GPRS.available());
while (GPRS.read() != 44); // Jusqu'à la virgule ','
veille = GPRS.read() != 49; // Analyse du résultat
if (veille) {
Serial.println("*** Reseau indisponible, en veille ***");
}
else {
Serial.println("*** Reseau fonctionnel, en fonctionnement normal ***");
}
}