Несоответствие передачи данных по UART

Всем привет!
Столкнулся с проблемой: данные передаваемые по UART с Ардуино и с компа отличаются. Строка передаваемая с компа имеет какие-то дополнительные данные.
Код ардуино:

void setup() {
    Serial.begin(9600);
    Serial.println("\f");
}

void loop() {}

Настройка программы Terminal на компе:

Вот что передает UART: в средине то что передает Ардуино, сверху и снизу - то что передает комп. Откуда эти лишние данные??

Включите декодирование потока и увидите данные в привычном виде …

1 лайк

скорее вссего, CR+LF передается

А где код передачи с компьютера?

да, может там настройки другие, какие-нибудь стоповые биты, ещё чего.

Спасибо! это помогло понять причину разных данных в Сериал. Комп передает данные “как есть”. Ардуино же преобразует ссылки.
Если отправить одну и ту же строку “\f” с компа и с ардуино то получим следующее:

  • комп отправит “\f(как есть)
  • ардуино “\f” преобразует в:
    FF”, он же “12” он же “0c” (Form Feed, page eject ) (взято из таблицы ASCII)

получается что адуино преобразует всё что начинается на обратный слеш (\)
Мда… теперь попробуй эту зависимость определить…
Может в ардуино ИДЕ есть какая-то таблица преобразований?

Передаю просто через программу Terminal, без кода, просто отправляю “\f”

Это не Ардуино преобразует, это компилятор Си преобразует - строго в соответствии со стандартом.

1 лайк

Это я и имел в виду. Можете подсказать, где этот “стандарт” посмотреть?

Экранируйте слеш, не используйте println()

Ваш случай:

^F Escape sequences

Практически в любом ответе гугла на запрос Форматированный ввод-вывод в С

1 лайк

Спасибо всем за помощь!
Теперь я понял что компилятор использует таблицы Win-1251, CP-866, KOI-8R и ISO-8859-5 для преобразований.
Всем спасибо!

нет, не использует

1 лайк

бред бред