Ho la necessità da leggere da seriale software (sui pin 2 e 3) una serie di dati provenienti da PLC per poi spedirli via xbee ad un altro terminale. Solo sembra che il plc trasmetta troppo velocemente e non riesco a leggere e inviare il dato a xbee perchè mi mangia i dati…allora ho pensato di salvare i dati ricevuti da seriale in una stringa e successivamente inviare i dati…solo che i dati sono troppi e esaurisco subito la memoria…come posso fare?? ho pensato ad una soluzione con SD ma non so se risolvo molto
Ma il plc trasmette in continuazione ?se è così qualsiasi tipo di buffer, incluso una sd, farà solo in modo di allungare i tempi di riempimento, ma sempre si riempirà.
Secondo me il modo corretto è di vedere di spedire più velocemente, non puoi cambiare velocità verso xbee ?
Se ricevi veloce e spedisci lento prima o poi ti blocchi.
Se invece i dati dal plc sono saltuari puoi gestire con buffer e svuotare lento.
Che ide usi ? , la 1.0 ha cambiato la gestione seriale.
Per svuotare una stringa basta scriverci dentro il nulla con ""
I caratteri sono molti, calcola che hai circa 1500 caratteri a disposizione sulla ram, tolta una quota necessaria ad Arduino quindi anche se vuoi scrivere su ad devi essere veloce perché sempre dalla ram devi passare
Prova a spedire verso xbeee alla massima velocità, non li ho mai usati, accettano 115200?
mancio:
si il PLC invia saltuariamente ma circa 2000-3000 caratteri a volta..potrei salvare il tutto su sd e poi inviare..ci potrebbe stare??
Non devi salvare nulla su SD, semplicemente devi inviare subito il carattere ricevuto verso l'Xbee, però è indispensabile che utilizzi una velocità di comunicazione verso questo maggiore di quella con cui ricevi i dati dal plc che solitamente non trasmettono ad elevati baud rate, esempio ricevi dal PLC a 19200 e invii al Xbee, che ha un suo buffer di 128 caratteri, a 57600.
Attenzione che se la velocità sulla seriale software è troppo alta è questa che si perde i caratteri per strada perché non ce la fa, è una emulazione e ha i suoi limiti.