Serial.end()

Buzoff
Offline
Зарегистрирован: 03.04.2018

Здравствуйте.
Очищает ли буфер функция Serial.end()?
То есть, будет ли буфер пустой, если снова запустить Serial?

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Ждет пока передасться все что в буффере на передачу, а потом меняет указатели в приемном буффере. Физически данные не удаляются но с точки зрения скетча буффер пуст.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Buzoff пишет:
будет ли буфер пустой, если снова запустить Serial?
Попробуйте и расскажите нам.

Buzoff
Offline
Зарегистрирован: 03.04.2018

ЕвгенийП пишет:

Buzoff пишет:
будет ли буфер пустой, если снова запустить Serial?
Попробуйте и расскажите нам.

для меня проще его очистить лишний раз, так на верняка :)

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Buzoff пишет:

для меня проще его очистить лишний раз, так на верняка :)

А смысл? Достаточно в код посмотреть

void HardwareSerial::end()
{
  // wait for transmission of outgoing data
  flush();

  cbi(*_ucsrb, RXEN0);
  cbi(*_ucsrb, TXEN0);
  cbi(*_ucsrb, RXCIE0);
  cbi(*_ucsrb, UDRIE0);
  
  // clear any received data
  _rx_buffer_head = _rx_buffer_tail;
}

 

Buzoff
Offline
Зарегистрирован: 03.04.2018

asam пишет:

Buzoff пишет:

для меня проще его очистить лишний раз, так на верняка :)

А смысл? Достаточно в код посмотреть

void HardwareSerial::end()
{
  // wait for transmission of outgoing data
  flush();

  cbi(*_ucsrb, RXEN0);
  cbi(*_ucsrb, TXEN0);
  cbi(*_ucsrb, RXCIE0);
  cbi(*_ucsrb, UDRIE0);
  
  // clear any received data
  _rx_buffer_head = _rx_buffer_tail;
}

 

спасибо!