Buongiorno a tutti
ho un arduino con un modulo GSM/GPRS e vorrei inviare un file XML,
come posso fare ?
Grazie
Non ti sembra di essere un po' ... vago ?
Che Arduino, che modulo GSM/GPRS, dove si trova il file XML, a chi lo devi inviare, con che protocollo, ecc. ecc.
Più informazioni dai, più è probabile che qualcuno ti risponda ...
Guglielmo
Giusto !!! scusate tanto...
Allora ho un Seeduino stalker con modulo GPRS Shield V2.0 della Seeed.
Il file XML lo devo creare e anche per questo consigli sono ben accetti !!! ho trovato per adesso questo post che spiega una possibile soluzione Possible to create XML with Arduino? - Frequently-Asked Questions - Arduino Forum
Per adesso invio una stringa con i comandi AT utilizzando la seguente procedura (una GET HTTP):
GSM_Serial.print("AT+HTTPPARA= "URL","");
GSM_Serial.print(SERVER);
xxx
// set http action type 0 = GET, 1 = POST, 2 = HEAD
GSM_Serial.println("AT+HTTPACTIO N=0");
Invece vorrei inviare non solo la stringa ma anche un file XML allo stesso server.
Però sono confuso.. forse potre inviare direttamente le stringhe che mi costituiscono il file XML...
Spero di esser stato più chiaro considerata la mia confusione ! :o
kove3374:
Giusto !!! scusate tanto...
Allora ho un Seeduino stalker con modulo GPRS Shield V2.0 della Seeed.
Il file XML lo devo creare e anche per questo consigli sono ben accetti !!! ho trovato per adesso questo post che spiega una possibile soluzione http://forum.arduino.cc/index.php?topic=3295.0
Per adesso invio una stringa con i comandi AT utilizzando la seguente procedura (una GET HTTP):
GSM_Serial.print("AT+HTTPPARA= "URL","");
GSM_Serial.print(SERVER);
xxx
// set http action type 0 = GET, 1 = POST, 2 = HEAD
GSM_Serial.println("AT+HTTPACTIO N=0");Invece vorrei inviare non solo la stringa ma anche un file XML allo stesso server.
Però sono confuso.. forse potre inviare direttamente le stringhe che mi costituiscono il file XML...
Spero di esser stato più chiaro considerata la mia confusione ! :o
Mmmm ... pare che ancora non sia passato di qui nessuno con esperienza sugli argomenti che chiedi ...
... prova a pazientare un'altro pochino ... ![]()
Guglielmo
Invece vorrei inviare non solo la stringa ma anche un file XML allo stesso server.
Però sono confuso.. forse potre inviare direttamente le stringhe che mi costituiscono il file XML...
Questo file XML dove si trova?
non lo hai ancora e lo devi creare?
è lungo? ha poche righe?
ma soprattutto a chi lo spedisci? a un client che fa la domanda al tuo GPRS Shield e quindi risponde mandando il file o il tuo GPRS Shield di sua spontanea volontà manda il file a un server ogni tanto? perchè fa una bella differenza ...
Il principio per inviare un file resta comunque lo stesso LAN. RS232, 485, radio, di qualsiasi formato sia, leggere un char alla volta e spedire questo char in modo sequenziale (uno dietro l'altro) fino alla fine del file.
Se è di poche righe usando il PROGMEM puoi leggere tutto il testo scritto in quelle righe e spedirlo
Se è lungo mettilo su una SD apri la lettura di questo file e spedisci i char fino a quando ci sono char "while read..."
Un po' come si fa quando si apre una pag html da SD e si spedisce al client, nel tuo caso però non la invii tramite cavo lan ma con GSM
Non conosco la tua scheda, ma se sei riuscito a mandare una stringa hai già fatto metà del lavoro, ora devi solo prendere tutto il pacchetto e spedirlo.
Non vedo da quelle righe di codice che hai messo quale stringa mandi, mi pare che si tratti solo di un impostazione al protocollo, quel GSM_Serial.print(SERVER); non dice nulla se non metti un riferimento a quella variabile.
Ci sarà da qualche parte un FOR un WHILE che scompone la stringa o l'array di char e la spedisce carattere per carattere.
una cosa tipo questa
void spedisci_file(){
while(file.available()!=0){
Serial.write(file.read());
}
}
opp
char subject []= "Notifica da Arduino";
Serial.print("AT+SMTPSUB=\"");//subjec of email
Serial.print(subject);
Serial.println("\"");
Poi da qualche parte nel codice dovrai leggere la seriale per acquisire il response
Guarda qui quello che intendevo
vedi in fondo al programma la funzione void read_file
void read_file( char* page_html, EthernetClient client ){
htmlFile = SD.open( page_html );
if (htmlFile) {
while (htmlFile.available()) {
client.write(htmlFile.read());
}
// close the file:
htmlFile.close();
}
}
il principio è lo stesso che lo mandi sulla seriale, sulla lan, con un antenna a un satellite su marte...... devi solo cambiare i parametri
ciao