Serial.write без приемника
Я хочу периодически отправлять данные мониторинга (температуру) на последовательный приемник. Проблема в том, что я не знаю, есть ли служба мониторинга (последовательный приемник) и насколько быстро она считывается. Мне нужно только последнее значение. Проблема в том, что serial.write будет блокироваться, если буфер заполнен. Если я пропущу запись, если буфер заполнен, получатель получит старые данные только при первом соединении. Как заменить данные в буфере или убедиться, что в буфере только один набор данных?
1 ответ
Лучший ответ:
Проблема в том, что serial.write блокируется, если буфер заполнен.
Только до тех пор, пока байты не будут отправлены через контакт TX.
Если я пропущу запись, если буфер заполнен, получатель получит старые данные только при первом соединении.
Нет, не будет. Нет "старых" данных.
Как заменить данные в буфере или убедиться, что в буфере только один набор данных?
В этом нет необходимости.
Вы демонстрируете фундаментальное непонимание того, как работает сериал. Когда вы отправляете данные, он просто поворачивает вывод TX в правильном направлении с правильным временем. Если к нему подключено что-то, что понимает это вращение со скоростью, с которой оно вертится, то оно интерпретирует это как последовательные данные. Если нечего видеть, что вертится, то все равно вертится. «Блокировка» происходит только в том случае, если вы пытаетесь отправить больше данных, чем последовательный порт может физически отправить за то время, когда вы его отправляете.
Если последовательный порт передает в лесу, и там нет никого, кто мог бы его услышать, да, он все равно издает шум.
- Arduino Uno не загружает код и перегревается
- Arduino Uno R3 не распознается Arduino IDE в Ubuntu 21.04
- Как программировать микрочипы напрямую через USB
- Неверные символы в последовательном мониторе при подключении через USB 3.0
- Два адруино подключены к малине по usb, но один переподключается во время выполнения кода обработки
- Как узнать частоту дискретизации?
- Что такое Serial.begin(9600)?
- Использовать все контакты как цифровые входы/выходы