Serial.write без приемника

Я хочу периодически отправлять данные мониторинга (температуру) на последовательный приемник. Проблема в том, что я не знаю, есть ли служба мониторинга (последовательный приемник) и насколько быстро она считывается. Мне нужно только последнее значение. Проблема в том, что serial.write будет блокироваться, если буфер заполнен. Если я пропущу запись, если буфер заполнен, получатель получит старые данные только при первом соединении. Как заменить данные в буфере или убедиться, что в буфере только один набор данных?

, 👍0


1 ответ


Лучший ответ:

2

Проблема в том, что serial.write блокируется, если буфер заполнен.

Только до тех пор, пока байты не будут отправлены через контакт TX.

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

Нет, не будет. Нет "старых" данных.

Как заменить данные в буфере или убедиться, что в буфере только один набор данных?

В этом нет необходимости.

Вы демонстрируете фундаментальное непонимание того, как работает сериал. Когда вы отправляете данные, он просто поворачивает вывод TX в правильном направлении с правильным временем. Если к нему подключено что-то, что понимает это вращение со скоростью, с которой оно вертится, то оно интерпретирует это как последовательные данные. Если нечего видеть, что вертится, то все равно вертится. «Блокировка» происходит только в том случае, если вы пытаетесь отправить больше данных, чем последовательный порт может физически отправить за то время, когда вы его отправляете.

Если последовательный порт передает в лесу, и там нет никого, кто мог бы его услышать, да, он все равно издает шум.

,