arduino / arduino/ArduinoCore-API

add isFlushed() to Stream/HardwareSerial

Aperta
#110 0 commenti 1 reazione 0 assegnatari Vedi su GitHub
Lingua principale
C++
Stelle
306
Fork
150
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

Please add Serial.isFlushed() method for checking that all data in Tx buffer have been flushed. We need it for non-blocking Serial.write() to half duplex communication (such as RS485).
At the moment I use something like this in my non-blocking code:

```
while (Serial.availableForWrite() > 0 && ndx < sizeof(buffer)) {
Serial.write(buffer[ndx]);
ndx++;
}
if (Serial.availableForWrite() == SERIAL_TX_BUFFER_SIZE - 1 && ndx > sizeof(buffer)) {
ndx = 0;
// Disable RS485 transmit and start receiving
}
```

But Serial.availableForWrite() == SERIAL_TX_BUFFER_SIZE - 1 is not reliable for checking that Tx buffer has been flushed.

Here is an earlier PR which was never merged:
https://github.com/arduino/Arduino/pull/3737

and a similar PR for ArduinoCore-sam here:
https://github.com/arduino/ArduinoCore-sam/pull/7

I would help, but coding Arduino core is beyond my skills.

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia esaminando Stream/HardwareSerial e le precedenti PRs Arduino collegate nell’issue per comprendere l’API proposta e le implementazioni del core interessate. Verifica come viene esposto oggi lo stato del buffer di trasmissione, quindi definisci come completato il fatto che Serial.isFlushed() segnali in modo affidabile che tutti i dati di trasmissione hanno lasciato il buffer per l’uso half-duplex, con una copertura corrispondente nei punti in cui i core rilevanti testano il comportamento seriale.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cpp
Ambito
api, embedded-iot
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
35/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.