реклама на сайте
подробности

 
 
> Очистить консоль
r00blik
сообщение Nov 8 2011, 03:43
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 8-11-11
Пользователь №: 68 182



Здравствуйте! Прошу прощения за, вероятно, тривиальный вопрос, но я недавно заинтересовался микроконтроллерами и программированием, и у меня возник вопрос: а как очистить консольный экран при работе с msp?

#include<stdlib.h>
main ()

{
system("cls");
}

и

#include <conio.h>
main ()

{
clrscr();
}

не помогают.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 8)
demiurg_spb
сообщение Nov 8 2011, 05:13
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Как вариант: CR-LF отправить n-раз, где n-число строк консоли (правда курсор останется внизу).


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
r00blik
сообщение Nov 8 2011, 05:32
Сообщение #3





Группа: Новичок
Сообщений: 6
Регистрация: 8-11-11
Пользователь №: 68 182



Цитата(demiurg_spb @ Nov 8 2011, 09:13) *
Как вариант: CR-LF отправить n-раз, где n-число строк консоли (правда курсор останется внизу).

Этот вариант не подходит, т.к. необходимо цикличное обновление информации, выводимой в консоль.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Nov 8 2011, 05:38
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Тогда позиционируйте курсор и покрывайте старое новым.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
SSerge
сообщение Nov 8 2011, 05:38
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 719
Регистрация: 13-09-05
Из: Novosibirsk
Пользователь №: 8 528



Хороший вопрос.
А что это за консольный экран такой и откуда он взялся?

Чтобы под DOS или Win исполнилось system("cls"); предварительно какой-то, не к ночи будь помянут, добрый человек должен был написать интерпретатор команд command.com (или cmd.exe), а другой - эмулятор консольного терминала, а третий - драйвер видеокарты.
И всё это вместе работает, старательно изображая из себя древний алфавитно-цифровой терминал.

Лучше всего, конечно, почитать документацию, если она есть.
Можно попробовать поуправлять как ANSI-терминалом, давая команды FormFeed (один символ '\0x0c') или Erase Screen (последовательность "\e[2J").

Виндовский гипертерминал, кстати, вполне успешно изображает из себя VT100.
http://www.termsys.demon.co.uk/vtansi.htm
http://en.wikipedia.org/wiki/ANSI_escape_code


--------------------
Russia est omnis divisa in partes octo.
Go to the top of the page
 
+Quote Post
r00blik
сообщение Nov 8 2011, 07:09
Сообщение #6





Группа: Новичок
Сообщений: 6
Регистрация: 8-11-11
Пользователь №: 68 182



SSerge, связь с контроллером через терминальный эмулятор Tera Term Pro.

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

Сообщение отредактировал r00blik - Nov 8 2011, 07:10
Go to the top of the page
 
+Quote Post
Shread
сообщение Nov 8 2011, 13:20
Сообщение #7


иногда заглядывающий
****

Группа: Свой
Сообщений: 900
Регистрация: 18-05-05
Из: Зеленоград
Пользователь №: 5 170



Если не ошибаюсь, посылал 0xOC, если не найдете или OC не подойдет, могу глянуть в одном из своих проектов))
Go to the top of the page
 
+Quote Post
r00blik
сообщение Nov 8 2011, 18:25
Сообщение #8





Группа: Новичок
Сообщений: 6
Регистрация: 8-11-11
Пользователь №: 68 182



В-общем, что получилось:
1) при printf('\0x0c'); компилятор выдает предупреждение "passing arg 1 of 'printf' makes pointer from integer without a cast", в самой программе ничего не происходит. Может, я что-нибудь не так делаю..
2) при printf("\e[2J"); в программе происходит промотка на чистый экран, но курсор в левый верхний угол не возвращается.

Кстати, при "\e[1J" экран нормально очищается, но курсор опять же остается на прежнем месте(
В качестве решения решил использовать последовательно 2 команды: "\e[2J" и "\e[H".
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Nov 9 2011, 06:42
Сообщение #9


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Цитата(r00blik @ Nov 8 2011, 21:25) *
В-общем, что получилось:
1) при printf('\0x0c'); компилятор выдает предупреждение "passing arg 1 of 'printf' makes pointer from integer without a cast", в самой программе ничего не происходит. Может, я что-нибудь не так делаю..
Конечно не так. printf что получать должен? Строку (указатель на массив символов), а вы один символ ему суёте. О чём он честно вас и предупреждает.
Код
putchar(0x0c);
или
Код
printf("\x0c");


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 07:50
Рейтинг@Mail.ru


Страница сгенерированна за 0.01394 секунд с 7
ELECTRONIX ©2004-2016