Монитор порта, как сделать красиво?

kolyan-denisov@...
Offline
Зарегистрирован: 31.07.2013

Добрый день! Посдкажите пожалуйста как сделать так чтобы данные в мониторе порта обновлялись в одной строке, т.е шла перезапись текущего значения. Делаю вольметр на Arduino. Спасибо!

void loop()
{
  value = analogRead(analogInput); // Считываем значение с указанного аналогового входа 0
  vin = ( value * 5.0) / 1024; // Переводим из 10 битного значения в значение напряжения
  vout = vin / (0.01599); 
  Serial.print("Voltage = ");  
  Serial.print(vout, 2);
  
  delay(50); 
}

 

Adeni
Offline
Зарегистрирован: 26.01.2014

Помоему никак.

leshak
Offline
Зарегистрирован: 29.09.2011

В стандартном Serial Monitor - никак. Он слишком туп для этого.

Но если взять любой нормальный терминал (Serial Monitor - это есть "терминальный клиент" который почти ничего не умеет). Например putty, то все становится реальным.

Простейший вариант: делать Serial.write('\r'); Который будет возвращать курсво в начало строке, без перехода на новую (но про Serial.println - нужно будет забыть).

А если погуглить про "управляющие последовательности ANSi". то можно найти всякие интерестные команды которые позволяют и мигающий курсор скрыть/показать, и передвинуть его, и экран очистить, цвет/фон текста поменять. Вообщем можно даже заморочится и начать рисовать "оконный интерфес и менюшки". И все это в окне терминала. Ну естественно насколько у дуинки памяти хватит.

leshak
Offline
Зарегистрирован: 29.09.2011

Вообщем вывод вот такого скетчика:

void setup(){
  Serial.begin(57600);
}

void loop(){
  static int cnt;
  Serial.print(cnt++);
  Serial.write('\r');
  delay(500);
}

В Serial Monitore видно "как длинную строка и все цифры сливаются". А если открыть putty счетчик себе аккуртно "тикает" в левом верхнем углу.

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Ну в мониторе среды ардуино - понятное дело никак, а вообще это уже довно решенный вопрос.

http://www.opennet.ru/base/dev/console_ctl.txt.html

И вместо монитора програмку Putty

void setup()
{
  Serial.begin(115200);
}
void loop()
{ // выводим в позиции 10, 10 текст серым цветом на красном фоне 
  Serial.print("\033[10;10H\33[37;41m ВНИМАНИЕ \33[0m");
  Serial.print("\033[0;0H");
  delay(500);
}

Чем больше скорость тем меньше заметно мелькание курсора на экране.

leshak
Offline
Зарегистрирован: 29.09.2011

Если не хочется ломать голову по поводу управляющих кодов. То можно готовую либу под ардуину поискать.

К примеру https://github.com/nottwo/BasicTerm

Уверен что и другие есть.

kolyan-denisov@...
Offline
Зарегистрирован: 31.07.2013

Спасибо всем  большое!

Сам тоже робовал возврат каретки    '/r'   только пишет типа ошибка синтаксиса. 

Либо получалось выводить все в одну строку. Но такая же абракадабра получается.

Поставлю сторонний терминал

Еще раз спасибо!=)

art100
Offline
Зарегистрирован: 09.03.2014

может я отстал от жизни

паросвятите заблудшую душу

но с порта в данном случае rs232/usb (неважно) надо производить

1.прием

2.распознавание

3.протоколирование

4.отображение !!! в удобном виде !!! на экране 

взрослые и дети для этого специальный exe-шник пишут последние 20 лет

а в чем смыл в терминале таращится и хныкать над тем о чем столько лет с 1970-ого по 1980ый боролись и придумали перевод каретки что-бы !!!история событий!!! оставалась

по моемому идиотизмом попахивает

берешь command.com

деассемблируешь

вырываешь старый код

пользуешь несовершенство НЕ перевода строки

 

 

leshak
Offline
Зарегистрирован: 29.09.2011

kolyan-denisov@yandex.ru пишет:

Сам тоже робовал возврат каретки    '/r'   только пишет типа ошибка синтаксиса. 

Потому что это ошибка синтаксиса. Вглядывайтесь внимательней в мой возврат карретки и в свой.

Tomasina
Tomasina аватар
Offline
Зарегистрирован: 09.03.2013

А как putty настроить на прослушку COM-порта?

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Art100, просвещаю... Вы знаете что такое терминал ? Правильно это хъюманинтерфейс, интерфейс взаимодействия с человеком. Поэтому правильная терминальная программа и правильное с ней взаимодействие позволяет удобно для человек предоставить управление и отобразить индикацию. В данном случае последдовательный интерфейс всег лишь среда передачи и интерфейс управления. И за форматирование отображения отвечает ардуино. 

Если же пойти путем который вы считаете единственно правильным, создать прогу для лога и отображения, то это уже будет не терминал, а клиент. И за форматирование отображаемой информации будет отвечать программа принимающая данные. 

То и другое имеет право быть. Но в первом случае не нужно написание специального клиента на стороне компа, а можно использовать любой терминальный клиент, кстати такой есть в стандартной поставке виндоуса.

toc
Offline
Зарегистрирован: 09.02.2013

>> Сам тоже робовал возврат каретки    '/r'   только пишет типа ошибка синтаксиса.

попробуйте \r

gena
Offline
Зарегистрирован: 04.11.2012

  Я, когда задался аналогичным вопросом, нашёл выход в следующем. 1. "Подсмотрел" решение на    http://wiki.amperka.ru/видеоуроки:7-i2c-и-processing , видео №2.    2. Использовал программу для визуализации измерений мультиметра DVM-101  http://www.syscompdesign.com/Downloads_ep_44.html. Выглядит вполне пристойно, ведёт log, стороит график. Есть конечно и свои особенности, но побробовать её стоит. Можно запускать одновременно несколько раз эту программу (напряжение, ток).

art100
Offline
Зарегистрирован: 09.03.2014

если уже есть со всеми перечисленными мjими 4 пунктами 

возникает вопрос ломать протоколирование(перевод строки)

зачем?

selevo
selevo аватар
Offline
Зарегистрирован: 21.12.2013

чтобы было красиво и на одной странице

Надо начинать или заканчивать  вывод всей  информации  стройкой очистки  экрана и   переводом на позицию 0.0

Serial.print("\f");  (гипертерминал windows  такую команду понимает)

А встроеный  в arduino ide  монитор порта просто уё.щный,лучше использовать любой другой,который поддерживает  эту команду.

эта команда   подать  новый лист :)

И всё будет красиво.

видео:

https://youtu.be/s5n-bjAtVXo

 

Написал на форум  ARDUINO.CC

может  добавят поддержку этой комманды.

 

 

T.Rook
Offline
Зарегистрирован: 05.03.2016

selevo пишет:

чтобы было красиво

Надо было завтра оветить! Вот тогда было бы красиво: 3 года и 3 дня :)

selevo
selevo аватар
Offline
Зарегистрирован: 21.12.2013

прошлое настоящее и будущее  это почти одно и тоже

так что  нормально...

вот сюжа написал предложение:

http://forum.arduino.cc/index.php?topic=470470.0

Поддержите  :)

stn
Offline
Зарегистрирован: 22.08.2016

 kolyan-denisov@..   Красиво - это как? Для вольтметра будете использовать монитор порта или хотите к чему то прилепить?