Je propose donc mon code sur lequel, je voudrais optimisé la RAM. (voir code en piece jointe)
Toute proposition d'amélioration est la bienvenue...
Fonctionnement:
Je scan dans mon loop() la fonction "receiveDataToServer()"
si j'ai une requette udp demandant l’envoie des données (voir switch case 1:) j'appelle la fonction: sendDataToServer(1);
sendDataToServer(1); prépare et envois les données au serveur via le shield wifi
Note 1:
sendDataToServer(1); // Pour l'affichage des données sur le site web
sendDataToServer(2); // Pour remplir une base de données toute les minutes (affichage de graphique d’évolution)
Note 2:
Dans wifiSendData(data, DATA_SIZE); Je découpe mes données en 64 octets avant envois, je souhaite cela, car cela améliore mon transfert, de 7s je passe à 2 secondes, non négligeable pour le confort d'utilisation du système.
- Et d'ailleurs, je comprend pas pourquoi l’envoi des données plante lorsque j'augmente la valeur du tampon au dessus de 64 (96 ou 128)?
Pour le moment le tableau data atteint un maxi de 366 octets, mais c'est que le début de mon travail, il devrait facilement doubler.
Il ne faut pas négligé non plus la taille du tableau "reply" dans "receiveDataToServer()"
Le retour du DEBUG via serial.print:
-> Ram disponible: 3737 octets
-> function:1
-> to:0
-> val:0
-> valFloat:0.00
-> date:0
-> Connection au serveur: 192.168.1.211:80
-> Ram disponible: 3218 octets
|-> Envoi des donnees pour affichage sur le serveur
|-> S U C C E S de la connection au serveur
|-> Nombre de caractere disponible dans le buffer: 34
|-> Nombre de caractere envoye: 366
|-> Caractere envoye: do=data&func=0&to=0&val=0&valfloat=0&date=0&data=1420844424,1,192,168,1,240,8080,192,168,1,211,8888,80,19.62,19.62,19.62,19.62,44,24.0,23.0,22.0,21.50,0,1,2,0,1,1,1,1,8.0,33.0,13.0,25.0,10.50,24.0,6.50,27.50,255,255,0,255,480,600,660,720,720,480,240,120,240,180,120,60,255,255,255,255,26,26,26,26,0,1,1,1,1,0,0,0,0,6,7.0,6.50,7.50,1,1,390,420,1,1,0,0,2,2,1,1,1,1,0,0
|-> Envois de donnees au serveur effectues en: 1913ms
-> Envoi une confirmation UDP de la reception des packets: func=1&to=0
-> Ram disponible: 3701 octets
En attendant vos retours, je test l'utilisation de progmem dans mon programme...
z_sendReceiveData.ino (30 KB)