← index #4389PR #9116
Duplicate · high · value 0.889
QUERY · ISSUE

esp8266: Necessity for UART flush

openby cemoxopened 2019-01-01updated 2019-07-06
port-esp8266

This is rather recommendation than issue. The code below sends a string message from UART1 and is supposed to pull the output pin LOW :

mypin.on()
uart1.write("a long sentence")
mypin.off()

when I checked the signal (part tx and output) with logic analyzer, I saw that pin is pulled low long before the uart transmission has been completed. A function like uart.flash() which checks the relevant uart status bits for completion of the transmission would be very handy.

CANDIDATE · PULL REQUEST

ports: Implement uart.flush() and uart.txdone().

closedby robert-hhopened 2022-08-26updated 2022-08-30
ports

uart.flush waits until all data has been sent.

rc = uart.txdone() tells, whether all data has been sent or not data transfer is ongoing.

rc is True in that case.

Supported ports and notes

  • rp2: uart.flush() returns while the last byte is transferred. uart.txdone() may also return True in that state.
  • esp8266: uart.flush() returns while the last byte is transferred. uart.txdone() may also return True in that state.
  • esp32
  • stm32: uart.flush() and uart.txdone() are empty functions, because uart.write() itself does not return before all data has been sent.
  • mimxrt
  • nrf: For the nrf port uart.flush() and empty functions are dummy function as well. uart.flush() returns while the last byte is transferred. uart.txdone() may also return True in that state.
  • cc3200
  • samd: Implemented and kept in the 2nd level commit queue.

Keyboard

j / / n
next pair
k / / p
previous pair
1 / / h
show query pane
2 / / l
show candidate pane
c
copy suggested comment
r
toggle reasoning
g i
go to index
?
show this help
esc
close overlays

press ? or esc to close

copied