Страница 1 из 1

Прием переменной из UART и отправка ее туда же.

Добавлено: 25 ноя 2021, 20:25
AndrejK
С отправкой в UART и приемом из UART все ясно и понятно, а вот с отправкой переменной в UART и приемом из UART, никак.
Что не так? Спасибо.

Прием переменной из UART и отправка ее туда же.

Добавлено: 27 ноя 2021, 08:39
Утвш
Это что, плата сама себе посылает?

Прием переменной из UART и отправка ее туда же.

Добавлено: 27 ноя 2021, 09:32
Sancho
AndrejK писал(а): 25 ноя 2021, 20:25 С отправкой в UART и приемом из UART все ясно и понятно, а вот с отправкой переменной в UART и приемом из UART, никак.
Что не так? Спасибо.
Зачем я это скачал? Что не так?

Прием переменной из UART и отправка ее туда же.

Добавлено: 27 ноя 2021, 18:05
AndrejK
Утвш писал(а): 27 ноя 2021, 08:39 Это что, плата сама себе посылает?
Да.Типо эхо.

Отправлено спустя 5 минут 31 секунду:
Sancho писал(а): 27 ноя 2021, 09:32 Зачем я это скачал? Что не так?
Ввел цифры, нажал энтер и ничего, пусто...

Прием переменной из UART и отправка ее туда же.

Добавлено: 27 ноя 2021, 19:58
Sancho
AndrejK писал(а): 25 ноя 2021, 20:25 С отправкой в UART и приемом из UART все ясно и понятно, а вот с отправкой переменной в UART и приемом из UART, никак.
Что не так? Спасибо.
AndrejK писал(а): 27 ноя 2021, 18:05 Ввел цифры, нажал энтер и ничего, пусто...
Теперь Вас понял.
Поясню.
При обмене переменными есть существенные отличия по сравнению с простым uart.
Когда передаёте , например, байт в виде переменной, в придачу передаётся несколько дополнительных данных, по которым другой мк опознаёт, чего это за переменная такая, что-бы отличить её от других.
Поэтому Ваш простой тест не прокатит в данном случае.

Прием переменной из UART и отправка ее туда же.

Добавлено: 27 ноя 2021, 20:52
aidar_i
Нужно просто соединить разные МК между собой rx-tx и tx-rx. И передавать друг другу .

Прием переменной из UART и отправка ее туда же.

Добавлено: 27 ноя 2021, 21:54
AndrejK
О как! Как же тогда принять переменную из UART, допустим 123456789, и, допустим, записать ее в EEPROM, прочитать EEPROM и отправить в UART.
Вижу логику таким образом, но ничего не вывело.

Прием переменной из UART и отправка ее туда же.

Добавлено: 27 ноя 2021, 23:14
Phazz
[ref]AndrejK[/ref], должен быть завершающий символ например перенос строки. И по нему нужно делать сброс накопления

Прием переменной из UART и отправка ее туда же.

Добавлено: 28 ноя 2021, 08:07
support
AndrejK писал(а): 27 ноя 2021, 21:54 О как! Как же тогда принять переменную из UART, допустим 123456789, и, допустим, записать ее в EEPROM, прочитать EEPROM и отправить в UART.
Вижу логику таким образом, но ничего не вывело.
Вот смотрите, вы ввели в мониторе 12345678. котроллер поймал строку "12345678". Во первых, откуда он знает что не будет ещё например "9". Второй вопрос у контроллера, "А вообще то, куда это класть?" ведь переменных получаемых из УАРТ может быть много.... И в какую переменную положить принимаемые "12345678". Поэтому при отправке переменной, отправляется целый пакет. В мониторе порта вы вряд ли сможете его собрать. Посмотрите справку на блок ( https://flprog.ru/bez-rubriki/helppage/ ... ableToUart ), там в конце описан формат пакета который передается при отправке переменной. И соответственно если принимаемые данные не соответствуют этому формату, то они отбрасываются.

Отправлено спустя 2 минуты 7 секунд:
Если есть желание обойтись без второго контроллера, можете во встроеной скаде нарисовать экранчик с одним полем ввода, и передавать переменную оттуда (во всторенной скаде этот формат поддерживается)

Прием переменной из UART и отправка ее туда же.

Добавлено: 28 ноя 2021, 10:00
AndrejK
Спасибо за помощь.
Чуток изменил скетч и вот,что получилось. Предположу, что этими переменными можно оперировать.

Прием переменной из UART и отправка ее туда же.

Добавлено: 28 ноя 2021, 10:22
Sancho
AndrejK писал(а): 28 ноя 2021, 10:00 Спасибо за помощь.
Чуток изменил скетч и вот,что получилось. Предположу, что этими переменными можно оперировать.
Андрей.
Используемый Вами пункт обмена переменными нужен исключительно для того, что-бы два контролера обменивались данными через переменные, как платы в проекте, и не подразумевают вообще использование монитора порта, т.к. обмен идёт в виде чистых байт, а не символов ASCII. Это как пытаться с помощью монитора порта в текстовом режиме увидеть значения обмена по модбасу - пустая затея.
Вы так и не описали задачу, которую решаете, или это эксперименты ?

Прием переменной из UART и отправка ее туда же.

Добавлено: 28 ноя 2021, 10:36
AndrejK
Моя идея/задача состоит в том, чтобы, допустим забили в контроллер ESP32 Cam с ее функционалом, все, кроме длинной строки Телеграмм-бота и цифровыми идентификаторами Телеграмм пользователя. Далее, просто подключаем уже залитый МК к COM порту, вбиваем недостающее, записываем это в EEPROM. Надо что-то поменять или добавить, подключаем меняем/добавляем.
Или я слишком углубился и все можно сделать проще?

Прием переменной из UART и отправка ее туда же.

Добавлено: 28 ноя 2021, 10:42
support
AndrejK писал(а): 28 ноя 2021, 10:36 Моя идея/задача состоит в том, чтобы, допустим забили в контроллер ESP32 Cam с ее функционалом, все, кроме длинной строки Телеграмм-бота и цифровыми идентификаторами Телеграмм пользователя. Далее, просто подключаем уже залитый МК к COM порту, вбиваем недостающее, записываем это в EEPROM. Надо что-то поменять или добавить, подключаем меняем/добавляем.
Или я слишком углубился и все можно сделать проще?
Могу только ещё раз предложить собрать во встроенной скаде приложение, с нужным количеством полей ввода, и кнопкой "Записать". Протокол обмена переменными в ней поддерживается.

Прием переменной из UART и отправка ее туда же.

Добавлено: 07 дек 2021, 17:20
MM33
Всем доброго времени суток!
Прошу прояснить следующий вопрос.
Пытаюсь предать переменную типа Byte (8 бит) в монитор порта при помощи стандартного блока "Отправка переменной в UART". В настройках порта - отправлять каждые 100 ms. На экране вижу прочерки с разделителями с заданным тактом. В тоже время, при этих же настройках, переменные типа Integer или Bool передаются без вопросов, с соответствующим отображением .
Это особенность отображения Byte- переменных? Или этот блок не для таких переменных.

Прием переменной из UART и отправка ее туда же.

Добавлено: 24 дек 2021, 00:23
Vict
Уважаемые, подскажите пожалуйста максимальную длину строки в string которая может быть отправлена и получена блоком отправка переменной в юарт. Никак не могу добиться передачи сообщения с одного arduino на другой более примерно 55 знаков. При отправке бОльшего значения -отрезается часть сообщения. Подозреваю что в юарт существует некоторая память которая переполняется. При разбивке сообщения на передаче на несколько блоков, дело существенно не меняется. Может быть кто-нибудь сталкивался, как обойти этот момент ограничения .

Прием переменной из UART и отправка ее туда же.

Добавлено: 24 дек 2021, 08:25
AlexCrane
[ref]Vict[/ref], Попробуй поменять размер буфера через блок
UART_Buffer_(Code_-_Basic).ubi

Прием переменной из UART и отправка ее туда же.

Добавлено: 24 дек 2021, 12:24
Vict
Не подскажите, какой размер буфера по умолчанию.

Прием переменной из UART и отправка ее туда же.

Добавлено: 24 дек 2021, 12:46
Sancho
Vict писал(а): 24 дек 2021, 12:24 Не подскажите, какой размер буфера по умолчанию.
Для 328 - по 64 байта.

Прием переменной из UART и отправка ее туда же.

Добавлено: 08 янв 2022, 23:44
maagalex
Мне для проекта понадобилось принимать пакеты байт по UART с переменной длиной и чек суммой в конце, причём за один цикл программы..Штатные блоки не подошли, написал и отладил свой, в этом мне очень помог Anatoliy.
Кидаю блок сюда, в нём выбирается номер UART и массив для принимаемых байт, а также способ задания длины, статичный или динамический.
Вход E разрешает извлечение байт из буфера UART системы если он True,
вход N задаёт длину пакета,
выход Next поднимается в True по принятии пакета,
выход CSum выдаёт контрольную сумму (младший байт суммы всех байт в пакете кроме последнего)
выход L выдаёт длину пакета, и она же номер байта с контрольной суммой в архиве.
Максимальная длина пакета 256 байт.