Forum Moderator
Italy
Online
Brattain Member
Karma: 219
Posts: 16475
Don't know what I do
|
 |
« Reply #15 on: October 16, 2012, 03:41:07 pm » |
Inoltre ti avevano già suggerito, mi pare, di usare la funzione F() per memorizzare le stringhe di testo dei commenti fatti con Serial.println() direttamente nella Flash per evitare che occupassero la RAM. Esempio: Serial.println("error opening test.txt"); diventa Serial.println(F("error opening test.txt"));
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8233
:(){:|:&};:
|
 |
« Reply #16 on: October 17, 2012, 03:45:36 am » |
1) if (String("#") == (String(myFile.read()))){ dici qui giusyo? se non metto string, mi sembra che mi riporti i caratteri in formato esadecimale no? quindi al posto di string mi dici di mettere byte?
2) while (myFile.available()) { intendi qui? dovrei togliere il available? per fare un confronto non ti interessa di farlo in esadecimale, ottale binario o altro. quindi diventa if ( '#' == myFile.read() ) poi non devi togliere l'available. Ogni volta che chiari read estrai una lettera dal flusso (che può essere file, seriale, internet o quello che vuoi). Quello che tu fai è una read() ogni volta che vuoi confrontare il carattere, ma così facendo in realtà stai leggendo ogni volta una lettera diversa. Devi fare una read in una variabile char una sola volta a ciclo e poi usare la variabile. In questo modo stai lavorando sempre con la stessa lettera
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 53
Arduino rocks
|
 |
« Reply #17 on: October 17, 2012, 04:00:04 am » |
a questo punto però per esempio nell else: else { client.print(String(myFile.read())) devo lascairlo come stringa perchè mi serve che mi stampi il carattere corretto giusto? poi non devi togliere l'available. Ogni volta che chiari read estrai una lettera dal flusso (che può essere file, seriale, internet o quello che vuoi). Quello che tu fai è una read() ogni volta che vuoi confrontare il carattere, ma così facendo in realtà stai leggendo ogni volta una lettera diversa. Devi fare una read in una variabile char una sola volta a ciclo e poi usare la variabile. In questo modo stai lavorando sempre con la stessa lettera se ho capito bene devo , prima mettere il varore del read in una nuova variabile, confrontare la mia variabile , rifare il ciclo in modo che andrò a sostituire la mia variabile col nuovo carattere letto , finche non troverò il /n , ho aggiunto in fondo alla stringa un # però , perchè ho pensato che leggendo byte a byte non leggerò mai un /n (non come carattere vero ma come andata a capo) perchè sono 2 byte giusto? quindi al primo passaggio del ciclo leggo / al secondo n... quindi devo per forza usare un delimitatore come il cancelletto... o sto toppando?
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8233
:(){:|:&};:
|
 |
« Reply #18 on: October 17, 2012, 04:12:41 am » |
no, la print si occupa da sla della conversione, perchè è intelligente, in base a che tipo di variabile gli scrivi te la traduce automaticamente in stringa. Se invece della stringa volessi scrivere il valore "grezzo" dovresti usare una write
edit: lo \n è UN carattere che vuol dire a capo. Windows in effetti usa DUE caratteri, che sono \r seguito da uno \n, ma come vedi a te basta trovare lo \n
anche il # non ti serve, perchè quando finisce il file l'available ritorna 0
|
|
|
|
« Last Edit: October 17, 2012, 04:23:12 am by lesto »
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 53
Arduino rocks
|
 |
« Reply #19 on: October 17, 2012, 05:24:30 am » |
quindi se al posto di if ( '#' == lamiavariabile ){ metto '/n' arduino capisce gia da solo che sto cercando un andata a capo?  mi sono letto il libro su arduino (il primo credo) e queste cose non le ho viste .... mi conviene prendere anche un libro sul C ? vengo dal settore elettronico, non informatico,,, scusate 
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8233
:(){:|:&};:
|
 |
« Reply #20 on: October 17, 2012, 05:28:17 am » |
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 53
Arduino rocks
|
 |
« Reply #21 on: October 17, 2012, 10:36:38 am » |
allora con questo codice : void Leggi_SD(){ char n; myFile = SD.open("KKKVigne.txt", FILE_READ); if (myFile) { Serial.println(F("Inizio a Leggere KKKVigne:")); if (client.connect(server, 80)){ Serial.println(F("Connesso al Server")); // debug while (myFile.available()) { n = myFile.read(); if ( char('#') == n ){ client.println(Host); Serial.println(Host); // debug client.println(); Serial.println(); // debug //Serial.println(n); //Serial.println(F("fine riga")); // debug } else { client.print(n); Serial.print(n); //debug
} } myFile.close(); Serial.println(F("Chiudo SD")); client.stop(); Serial.println(F("Chiudo Socket TCP")); } else { // if the file didn't open, print an error: Serial.println(F("Errore invio")); } } else {
Serial.println(F("errore apertura KKKVigne.txt")); } }//fine leggi sd Ottengo sulla Seriale : Inizio a Leggere KKKVigne: Connesso al Server Get /index.php?Data=20121017&Ora=124514&Ingresso=1&Uscita=0&Accesso=1 HTTP/1.1 Host: www.kioskomatiko.it
Get /index.php?Data=20121017&Ora=124918&Ingresso=1&Uscita=0&Accesso=1 HTTP/1.1 Host: www.kioskomatiko.it
Get /index.php?Data=20121017&Ora=125010&Ingresso=1&Uscita=1&Accesso=0 HTTP/1.1 Host: www.kioskomatiko.it
Get /index.php?Data=20121017&Ora=125016&Ingresso=2&Uscita=1&Accesso=1 HTTP/1.1 Host: www.kioskomatiko.it
Get /index.php?Data=20121017&Ora=125059&Ingresso=2&Uscita=2&Accesso=0 HTTP/1.1 Host: www.kioskomatiko.it
Get /index.php?Data=20121017&Ora=171032&Ingresso=1&Uscita=0&Accesso=1 HTTP/1.1 Host: www.kioskomatiko.it
Chiudo SD Chiudo Socket TCP
sembrerebbe quasi ok .... dico quasi perchè sembra che non arrivi cio al server dato che non scrive nel database
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 53
Arduino rocks
|
 |
« Reply #22 on: October 17, 2012, 01:28:15 pm » |
ho mandato a capo l'Host e ora funziona scusate 
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 53
Arduino rocks
|
 |
« Reply #23 on: October 18, 2012, 05:07:39 am » |
void Leggi_SD(){ char n; myFile = SD.open("KKKVigne.txt", FILE_READ); if (myFile) { Serial.println(F("Inizio a Leggere KKKVigne:")); if (client.connect(server, 80)){ Serial.println(F("Connesso al Server")); // debug while (myFile.available()) { n = myFile.read(); if ( char('#') == n ){ client.println(); client.println(Host); client.println(); delay(50); client.stop(); delay(50); (client.connect(server, 80)); Serial.println(F("nuovo dato inviato")); // debug } else { client.print(n); } } myFile.close(); Serial.println(F("Chiudo SD")); client.stop(); Serial.println(F("Chiudo Socket TCP")); } else { // if the file didn't open, print an error: Serial.println(F("Errore invio")); } } else {
Serial.println(F("errore apertura KKKVigne.txt")); } }//fine leggi sd il mio problema ora è : se lascio cosi tutto bene ma apro e chiudo la connessione ad ogni riga... (mi sembra poco furbo, inoltre alcuni firewall potrebbero rilevarmi come attacco). se tolgo ad ogni riga un chiudi connessione e riaprila, arrivati a 30 righe arduino continua a mandare ma l'ethernet shield non fa uscire piu nulla.... c'è un motivo?
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8233
:(){:|:&};:
|
 |
« Reply #24 on: October 18, 2012, 05:37:33 am » |
uhmm che la libreria usi dei buffer dinamici? usa un client.flush()
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 53
Arduino rocks
|
 |
« Reply #25 on: October 18, 2012, 05:46:32 am » |
gia provato... chiedo scusa se non ho specificato... a metterlo ad ogni ciclo prima dell invio di una nuova riga .... ottengo che da 30 righe ne mando fino a 100 ma poi si blocca lo stesso.....
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8233
:(){:|:&};:
|
 |
« Reply #26 on: October 18, 2012, 06:47:48 am » |
uhmm allora inizio a credere che ci sia un bug nella libreria che crea garbage. Quando riapri una connessione probabilmente lo fai su un nuovo oggetto, e quindi tutto il garbage viene freeato, ma detta così non sta molto in piedi la cosa. devo controllare il codice
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Jr. Member
Karma: 0
Posts: 53
Arduino rocks
|
 |
« Reply #27 on: October 18, 2012, 08:10:31 am » |
grazie attendo news 
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Faraday Member
Karma: 17
Posts: 3920
Arduino rocks
|
 |
« Reply #28 on: October 18, 2012, 04:34:59 pm » |
Lesto hai fatto tu questo Wiki ? (lestofante) e' eccezionale 
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Tesla Member
Karma: 83
Posts: 8233
:(){:|:&};:
|
 |
« Reply #29 on: October 18, 2012, 06:39:44 pm » |
grazie  ma imho il mio fiore all'occhiello è la procedura per installare l'ide valida per qualsiasi sistema linux, in inglese.ù ps. ma allora qualcuno lo legge il wiki 
|
|
|
|
|
Logged
|
|
|
|
|
|