Go Down

Topic: sempre seriale: leggere e scrivere degli array (Read 800 times) previous topic - next topic

makalu1

ho qualche problema su come far scambiare degli array tra di loro
trasferisco un arrai tramite serial.write(buffer,lenght) e ricevo con serial read.
per ricevere questo array devo fare un ciclo if for per poterlo scrivere oppure dentro il mio array di ricezione dall´altra parte?
inoltre non ho ben capito la funzione serial .available ossia la sintassi  if serial.available() >0 cono serial.available ().
serial.available () =0 non mi funziona, la volevo usare per testare se la seriale e´libera prima di trasmettere.
zanini marco

leo72

Serial.available() è una funzione che restituisce il numero di byte presenti nel buffer seriale.
Si usa fare un test con
Code: [Select]
Serial.available() > 0
per verificare se esistono byte arrivati dalla seriale ed andare così a leggerli.

Se non è arrivato nulla, Serial.available() restituisce 0.

uwefed

Per spedire e ricevere l'array devi fare un for spaziando sul intero index.
Ciao Uwe

leo72


Per spedire e ricevere l'array devi fare un for spaziando sul intero index.
Ciao Uwe

Vero in parte, perché in ricezione può capitare di non sapere a priori quanti byte siano stati spediti, per cui si usa ciclare con un while finché ci sono caratteri disponibili.

Code: [Select]
if (Serial.available()) { //implicito: sarebbe if (Serial.available() > 0))
  do {
    byte a = Serial.read();
    //qui con quel carattere ci fai quel che ti pare
  } while (Serial.available());
}

makalu1

grazie mille per le info, quindi nel mio caso che sto facendo comunicare due arduini ed ho creato un array di grandezza identica  di dati da spedire.
quindi posso fare un ciclo di for per riempire lárray che ricevo.
Dite che e´il caso di spedire un carattere di inizio e fine trasmissione per ogni array? e di gestirlo insieme al serial available?
zanini marco

leo72


grazie mille per le info, quindi nel mio caso che sto facendo comunicare due arduini ed ho creato un array di grandezza identica  di dati da spedire.
quindi posso fare un ciclo di for per riempire lárray che ricevo.
Dite che e´il caso di spedire un carattere di inizio e fine trasmissione per ogni array? e di gestirlo insieme al serial available?

Se la trasmissione è su breve distanza, a basse velocità e di pochi byte, puoi semplicemente spedire i dati senza preoccuparti di creare un protocollo. Se devi spedire tanti byte, su distanze lunghe e ad alte velocità potresti prevedere un byte di inizio trasmissione, uno di fine e magari anche una somma di controllo (tipo CRC).

makalu1

per il momento ho da spedire un array di dati da una decina di elementi.
la distanza invece e´di 200m e devo interfacciarmi con una rs422.
devo pilotare dei motori con dei ponti h per pilotare una telecamera subacquea filoguidata ]:D
zanini marco

leo72


per il momento ho da spedire un array di dati da una decina di elementi.
la distanza invece e´di 200m e devo interfacciarmi con una rs422.
devo pilotare dei motori con dei ponti h per pilotare una telecamera subacquea filoguidata ]:D

Beh, un CRC finale metticelo, non si sa mai.

Go Up