Вопросы о последовательной связи
У меня есть Arduino, которые обмениваются данными с помощью rx/tx. Arduino1 (A1) отправляет данные по последовательному порту на Arduino2 (A2). Мои вопросы:
1 - Если A1 выполняет Serial.print каждые 50 мс, а A2 читает серийный номер каждые 100 мс, какое значение получит A2? Например, A1 отправляет «1», а через 50 мс отправляет «2». Учитывая, что A2 будет читать серийный номер через 100+ мс, он получит «2»?
2 - Если A1 отправляет данные каждые 100+ мс, а A2 считывает каждые 50 мс, какое значение получит A2 между ними? Например, A1 отправляет «1», а A2 читает «1» при чтении в 50 мс, но когда он снова читает через 50 мс (в течение этого времени A1 ничего не отправлял), снова будет считываться «1»?
Спасибо
@lucian_v, 👍0
1 ответ
Лучший ответ:
1 - Если A1 выполняет Serial.print каждые 50 мс, а A2 читает серийный номер каждые 100 мс, какое значение получит A2? Например, A1 отправляет «1», а через 50 мс отправляет «2». Учитывая, что A2 будет читать серийный номер через 100+ мс, он получит «2»?
У Arduino есть 64-байтный (программный) буфер. Вы будете получать числа последовательно до тех пор, пока этот буфер не переполнится. Тогда трудно предсказать, какими будут результаты.
Вероятно, что-то вроде:
121212121[...]2121212121212111111111111111
2 - Если A1 отправляет данные каждые 100+ мс, а A2 считывает каждые 50 мс, какое значение получит A2 между ними? Например, A1 отправляет «1», а A2 читает «1» при чтении в 50 мс, но когда он снова читает через 50 мс (в течение этого времени A1 ничего не отправлял), снова будет считываться «1»?
Если в буфере ничего нет, функция чтения возвращает -1. Это можно преобразовать (IIRC) в ASCII (в зависимости от вашего программного обеспечения) как ÿ, чтобы вы получили:
1ÿ1ÿ1ÿ1ÿ1ÿ...
Вам следует прочитать мой учебник по чтению серийных номеров на Arduino.
- Загрузка Arduino Nano дает ошибку: avrdude: stk500_recv(): programmer is not responding
- В чем разница между библиотеками Software Serial? Какая из них совместима с Arduino Nano?
- Как отправить команду AT на sim800l с помощью SoftwareSerial
- Проблемы с последовательной связью от Arduino к Bluetooth HC-05
- Как Arduino может проверить, подключен ли он к ПК и включен ли компьютер?
- Как отправлять и получать беззнаковые целые (unsigned int) от одного arduino к другому arduino
- Использование последовательных контактов TX/ RX для связи по USB
- NRF24L01+ (библиотека TMRH20): Получатель получает пустые данные
большое спасибо, @lucian_v