Scope of variables !?
hello all, not understand why scketch works !
when send udp string "fichier=test.txt" console displays different variables (fich , fich_2)
but want function dedicate
the console dont displays my variables , function not work!
why? scope of variables? or lack of arguments in function call?
when send udp string "fichier=test.txt" console displays different variables (fich , fich_2)
code: [select]
#include <spi.h> // needed arduino versions later 0018
#include <ethernet.h>
#include <ethernetudp.h>
#include <sd.h>
byte mac[] = {
0xde, 0xad, 0xbe, 0xef, 0xfe, 0xed };
ipaddress ip(192, 168, 1, 30);
//ipaddress ip(169,254,11,30);
unsigned int localport = 8080;
char packetrecu[udp_tx_packet_max_size]; //buffer hold incoming packet,
char packetenvoi; // string envoyer
int lon;
string recu;
file root;
file file;
string fich;
file myfile;
char fich_2;//pour le nom du fichier traiter
int lu ;//variable pour stoker les char lu dans le fichier
ethernetudp udp;// ethernetudp instance let send , receive packets on udp
//------------------------------------------------------------------
//------------------------------------------------------------------
void setup() {
ethernet.begin(mac,ip);
udp.begin(localport);
serial.begin(9600);
if (!sd.begin(4))
{
//serial.println("initialization failed!");
return;
}
//serial.println("initialization done.");
root = sd.open("/");
//serial.println("done!");
}
//------------------------------------------------------------------
//------------------------------------------------------------------
void loop() {
// if there's data available, read packet
int packetsize = udp.parsepacket();
if(packetsize)
{
memset(packetrecu, 0, udp_tx_packet_max_size);//vide le buffer
serial.print("received packet of size ");
serial.println(packetsize);
serial.print("from ");
ipaddress remote = udp.remoteip();
for (int =0; < 4; i++)
{
serial.print(remote[i], dec);
if (i < 3)
{
serial.print(".");
}
}
serial.print(", port ");
serial.println(udp.remoteport());
// read packet packetbufffer
udp.read(packetrecu,udp_tx_packet_max_size);
serial.print("packetrecu = ");
serial.println(packetrecu);
string recu = packetrecu;
//------------------------------------------------------------------
//------------------------------------------------------------------
if (recu == "connexion")
{
printdirectory(root);
}
//------------------------------------------------------------------
//--------------------------ouvre_fichier---------------------------
//------------------------------------------------------------------
if (recu.startswith("fichier="))//si la chaine recu commence par :
{
fich = recu.substring(8); //extrai de la chaine recu le nom du fichier traiter (recu-fichier=)
serial.print("nom du fichier = ");
serial.println(fich);
int lon = fich.length();
char fich_2[lon-1]; //pour dimensionner le tableau au bonnes dimensions!!important!
fich.tochararray(fich_2,lon-1);//pour convertir le string en char (le type reconnu pour l'instruction sd)
serial.print("nom du fichier en type char = ");
serial.println(fich_2);
//ouvre_fichier();
}
//------------------------------------------------------------------
//------------------------------------------------------------------
} //fin if(packetsize)
//delay(10);
}//fin loop
//------------------------------------------------------------------
//-----------------fonction_liste des fichiers----------------------
//------------------------------------------------------------------
void printdirectory(file dir)
{
while(true) {
file entry = dir.opennextfile();
if (! entry) {
// no more files
// return first file in directory
dir.rewinddirectory();
break;
}
serial.print(entry.name());
udp.beginpacket(udp.remoteip(), udp.remoteport());
udp.write(entry.name());
udp.endpacket();
}
}but want function dedicate
the console dont displays my variables , function not work!
why? scope of variables? or lack of arguments in function call?
code: [select]
#include <spi.h> // needed arduino versions later 0018
#include <ethernet.h>
#include <ethernetudp.h>
#include <sd.h>
byte mac[] = {
0xde, 0xad, 0xbe, 0xef, 0xfe, 0xed };
ipaddress ip(192, 168, 1, 30);
//ipaddress ip(169,254,11,30);
unsigned int localport = 8080;
char packetrecu[udp_tx_packet_max_size]; //buffer hold incoming packet,
char packetenvoi; // string envoyer
int lon;
string recu;
file root;
file file;
string fich;
file myfile;
char fich_2;//pour le nom du fichier traiter
int lu ;//variable pour stoker les char lu dans le fichier
ethernetudp udp;// ethernetudp instance let send , receive packets on udp
//------------------------------------------------------------------
//------------------------------------------------------------------
void setup() {
ethernet.begin(mac,ip);
udp.begin(localport);
serial.begin(9600);
if (!sd.begin(4))
{
//serial.println("initialization failed!");
return;
}
//serial.println("initialization done.");
root = sd.open("/");
//serial.println("done!");
}
//------------------------------------------------------------------
//------------------------------------------------------------------
void loop() {
// if there's data available, read packet
int packetsize = udp.parsepacket();
if(packetsize)
{
memset(packetrecu, 0, udp_tx_packet_max_size);//vide le buffer
serial.print("received packet of size ");
serial.println(packetsize);
serial.print("from ");
ipaddress remote = udp.remoteip();
for (int =0; < 4; i++)
{
serial.print(remote[i], dec);
if (i < 3)
{
serial.print(".");
}
}
serial.print(", port ");
serial.println(udp.remoteport());
// read packet packetbufffer
udp.read(packetrecu,udp_tx_packet_max_size);
serial.print("packetrecu = ");
serial.println(packetrecu);
string recu = packetrecu;
//------------------------------------------------------------------
//------------------------------------------------------------------
if (recu == "connexion")
{
printdirectory(root);
}
//------------------------------------------------------------------
//--------------------------ouvre_fichier---------------------------
//------------------------------------------------------------------
if (recu.startswith("fichier="))//si la chaine recu commence par :
{
ouvre_fichier();
}
//------------------------------------------------------------------
//------------------------------------------------------------------
} //fin if(packetsize)
//delay(10);
}//fin loop
//------------------------------------------------------------------
//-----------------fonction_liste des fichiers----------------------
//------------------------------------------------------------------
void printdirectory(file dir)
{
while(true) {
file entry = dir.opennextfile();
if (! entry) {
// no more files
// return first file in directory
dir.rewinddirectory();
break;
}
serial.print(entry.name());
udp.beginpacket(udp.remoteip(), udp.remoteport());
udp.write(entry.name());
udp.endpacket();
}
}
//------------------------------------------------------------------
//---------------------fonction_li_fichier--------------------------
//------------------------------------------------------------------
void ouvre_fichier()
{
fich = recu.substring(8); //extrai de la chaine recu le nom du fichier traiter (recu-fichier=)
serial.print("nom du fichier = ");
serial.println(fich);
int lon = fich.length();
char fich_2[lon-1]; //pour dimensionner le tableau au bonnes dimensions!!important!
fich.tochararray(fich_2,lon-1);//pour convertir le string en char (le type reconnu pour l'instruction sd)
serial.print("nom du fichier en type char = ");
serial.println(fich_2);
}
i pasted code in second box arduino ide. "error" got was:
what error(s) seeing when compiling? or having run-time issues? isn't clear problem is.
code: [select]
binary sketch size: 22760 bytes (of 30720 byte maximum)what error(s) seeing when compiling? or having run-time issues? isn't clear problem is.
Arduino Forum > Using Arduino > Programming Questions > Scope of variables !?
arduino
Comments
Post a Comment