Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [Все]   Вниз
  Печать  
Автор Тема: [C/C++ Unix] Учимся программировать на C/C++ вместе  (Прочитано 58335 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ffobos
Интересующийся

ru
Offline Offline

« : 19-01-2011 06:44 » 

Всем новичкам! Кто желает изучить C/C++ *NIX, предлогаю изучать совместно.
Также выкладывать свои достижения, делится опытом, задавать глупые вопросы и получать умные ответы или на оборот и т.д.
« Последнее редактирование: 20-01-2011 02:50 от ffobos » Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 19-01-2011 07:12 » 

Какая программа изучения?
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 19-01-2011 07:14 » 

ffobos, почитай вот это - может поможет: https://club.shelek.ru/view.php?id=3
Ну и орфографический словарик еще порекомендую.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
ffobos
Интересующийся

ru
Offline Offline

« Ответ #3 : 19-01-2011 07:16 » 

Какая программа изучения?
в смысле дистрибутив? или замысел темы?

Добавлено через 33 минуты и 40 секунд:
пример первый, наверное многие уже пробовали первую программу Hello world
Код:
#include <stdio.h>



int main(void)

{

printf("Hello world!\n");

return(0);

}

А как зделать чтобы текст выводися в определенной части экрана?
Код:
#include <stdio.h>
#define ESC "\033"

int x = 20;
int y = 10;

int main(void)
 {
  printf(ESC "[2J") >= 0;/*очиска экрана*/

  /*вывод текста по x, y точка отчета в верхнем левом углу*/
  printf(ESC "[%d;%dHHello world!\n", y, x) >= 0;

  return(0);

 }

тагже можно в строке  printf(..... вместо "[%d;%dH например указать координаты  "[10;20H
« Последнее редактирование: 19-01-2011 07:50 от ffobos » Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 19-01-2011 07:19 » 

Зачем мне "дестрюбютив"?

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

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #5 : 19-01-2011 07:20 » 

Ну и орфографический словарик еще порекомендую.

кардинаты

мда, видимо в армии совсем плохо Жаль
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
ffobos
Интересующийся

ru
Offline Offline

« Ответ #6 : 19-01-2011 07:21 » 

 Улыбаюсь

Добавлено через 3 минуты и 16 секунд:
Ну и орфографический словарик еще порекомендую.

кардинаты

мда, видимо в армии совсем плохо Жаль
я не виновен что здесь нет правки отправленого сообщения, а голова и так кипит некогда смотреть за ошибками.

Добавлено через 1 час, 3 минуты и 48 секунд:
нашел правку! у меня браузер крива показыват. не все высвечивал
« Последнее редактирование: 19-01-2011 08:28 от ffobos » Записан
McZim
Команда клуба

ru
Offline Offline
Пол: Мужской
Я странный


WWW
« Ответ #7 : 19-01-2011 08:01 » 

нашол правку!

ffobos, если нашЕл, то исправляй!
Записан

The CBO without stats is like a morning without coffee. (c) T.Kyte.
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 19-01-2011 08:06 » 

ffobos,  похвальное желание.
Но по глазам режет

тагже
дестрюбютив
крива

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

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #9 : 19-01-2011 08:16 » 

Грамматика еще полбеды, тут, пожалуй, девять из десяти пишут ничуть не лучше...

С программой курса давайте определимся.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 19-01-2011 08:24 » 

Двигаю тему в "Начинающим" - всё-таки, "C/C++" - ветка для более основательных вопросов.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 19-01-2011 10:45 » 

Признаться, почему управляющие коды ANSI-терминала названы "изучение UNIX", я не понимаю... С тем же успехом это и изучение MS-DOS, например...
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 19-01-2011 22:40 » 

Дим, в DOS драйвер ansi.sys был ограниченным. Последовательностей там существенно больше. Мне особенно нравились последовательности запоминания и восстановления позиции курсора.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
ffobos
Интересующийся

ru
Offline Offline

« Ответ #13 : 20-01-2011 02:46 » 

Признаться, почему управляющие коды ANSI-терминала названы "изучение UNIX", я не понимаю... С тем же успехом это и изучение MS-DOS, например...

Скорей всего потому что они используюся в UNIX тоже, да и  UNIX изначально это терминальная OC, это позже начали навешевать графические оболочки, а DOS ка был DOS-ом, так и остался. У  DOS вроде толька одна графическа оболочка WINDOWS 3.... и то жила не долго.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 20-01-2011 06:32 » 

Цитата: RXL
Мне особенно нравились последовательности запоминания и восстановления позиции курсора.
Они в DOS были Улыбаюсь
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #15 : 20-01-2011 07:41 » 

ffobos, не говори глупостей, если не знаешь.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #16 : 20-01-2011 08:22 » 

хм, точно помню ещё оболочки - нортон, волков )
Записан

Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 20-01-2011 10:20 » 

Dos Navigator - мощная штука, в ней даже табличный процессор был встроенный Улыбаюсь
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
ffobos
Интересующийся

ru
Offline Offline

« Ответ #18 : 21-01-2011 02:15 » 

нортон, волков, Dos Navigator- это разве графические оболчки?
Записан
Антон (LogRus)
Глобальный модератор

ru
Offline Offline
Пол: Мужской
Внимание! Люблю сахар в кубиках!


WWW
« Ответ #19 : 21-01-2011 04:44 » 

ffobos, не говори глупостей, если не знаешь.
не мог бы ты пояснить?
я честно не понял Улыбаюсь
толи ты про Win1, 2, 3, 3.1 не согласен, то ли про отсутсвие GUI в unix
Записан

Странно всё это....
Oldy
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #20 : 21-01-2011 05:19 » 

В MS DOS был Shell. У DR DOS, NW DOS и пр. были свои оболчки подобные Shell.
« Последнее редактирование: 21-01-2011 05:23 от Oldy » Записан

С уважением, Oldy.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #21 : 21-01-2011 05:34 » 

нортон, волков, Dos Navigator- это разве графические оболчки?
точно не текстовые. Окна, мышь, полосы прогресса, кнопки - все дела. И неважно, что всё это нарисовано цветным текстом и фоном Улыбаюсь Принцип общения с пользователем то уже совершенно другой - визуальный
Записан

Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #22 : 21-01-2011 06:32 » 

И все-таки по теме.

Планируется ли планомерное изучение материала, или это будет просто коллекция фокусов типа "адресовать курсорчик в текстовом окошке", "помигать лампочкой Scroll Lock", "подвигать туды-сюды лоточком DVD-ROM" и в том же духе? Если первое, я с удовольствием поучаствую. Если второе - без меня.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
ffobos
Интересующийся

ru
Offline Offline

« Ответ #23 : 22-01-2011 03:11 » 

Предположем ситуацию когда надо чтобы программа постоянно была в цикле но при этом надо ожидать нажатия клавиши. Следующий код проверяет нажатия клавиши но при этом продолжает выполнять цикл.
Код:
#include <stdio.h>
#include <stdlib.h>
#include <termios.h>
int c;
int main (int argc, char ** argv)
{
  struct termios oldsettings, newsettings;
  tcgetattr(fileno(stdin), &oldsettings);
  newsettings = oldsettings;
  newsettings.c_lflag &= ~(ECHO|ICANON|ISIG);
  newsettings.c_cc[VMIN] = 0;
  newsettings.c_cc[VTIME] = 0;
  tcsetattr(fileno(stdin), TCSANOW, &newsettings);
  while((c=getchar()) != 'q') {
    sleep(1);
    printf("%x\n", c);
  }
  tcsetattr(fileno(stdin), TCSANOW, &oldsettings);
  return EXIT_SUCCESS;
}
При нажатии на «q» завершает цикл

Добавлено через 5 минут и 3 секунды:
И все-таки по теме.

Планируется ли планомерное изучение материала, или это будет просто коллекция фокусов типа "адресовать курсорчик в текстовом окошке", "помигать лампочкой Scroll Lock", "подвигать туды-сюды лоточком DVD-ROM" и в том же духе? Если первое, я с удовольствием поучаствую. Если второе - без меня.
надо открыть тему "разговоры не очем".
« Последнее редактирование: 22-01-2011 03:16 от ffobos » Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #24 : 22-01-2011 03:22 » 

Зачем открывать новую? Вполне можно переименовать эту. Если открыть еще одну, будет целых две темы ни о чем.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
ffobos
Интересующийся

ru
Offline Offline

« Ответ #25 : 22-01-2011 04:02 » 

Зачем открывать новую? Вполне можно переименовать эту. Если открыть еще одну, будет целых две темы ни о чем.
Вообще-то я хотел здесь пообщаться с себе подобными (кто только взялся изучать С) обменяться знаниями да и помощь профессионала не плохо было-бы получить.

Добавлено через 3 минуты и 49 секунд:
Зачем открывать новую? Вполне можно переименовать эту. Если открыть еще одну, будет целых две темы ни о чем.
Вообще-то я хотел здесь пообщаться с себе подобными (кто только взялся изучать С) обменяться знаниями да и помощь профессионала не плохо было-бы получить.
хотя можно переименовать тогда я снова тему эту открою. надо с Админом соглосовать

Добавлено через 15 минут и 50 секунд:
нортон, волков, Dos Navigator- это разве графические оболчки?
точно не текстовые. Окна, мышь, полосы прогресса, кнопки - все дела. И неважно, что всё это нарисовано цветным текстом и фоном Улыбаюсь Принцип общения с пользователем то уже совершенно другой - визуальный
еще как текстовые! все эти линии отрисованы готовыми сегментами, если их нет у тебя на клаве это незначит что их не существует, есть множество дополнительных аски таблиц, можеш даже сам создовать
« Последнее редактирование: 22-01-2011 04:22 от ffobos » Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #26 : 22-01-2011 04:30 » 

ffobos, программирование не зависит от ОС. ОС только предоставляет интерфейс обшения с внешним миром. Так что, в самом начале нужно научиться программировать вообше, а затем уже играться с особенностями ОС. О чем, хоть и в очень саркастической манере, сказал Dale.
Т.е. для тебя примерно должна быть такая программа изучения.
1) синтаксис языка. Пока не нужны шаблоны, но нужно захватить и понять ООП.
2) Изучение стандартных алгоритмов.
2+) Изучение стандартных библиотек.
3) Изучение шаблонов проектирования.
4) Шаблоны.

Пункты два и три нужны для того, чтобы не изобретать собственный велосипед.
« Последнее редактирование: 22-01-2011 04:34 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
ffobos
Интересующийся

ru
Offline Offline

« Ответ #27 : 22-01-2011 08:21 » 

ffobos, программирование не зависит от ОС. ОС только предоставляет интерфейс обшения с внешним миром. Так что, в самом начале нужно научиться программировать вообше, а затем уже играться с особенностями ОС. О чем, хоть и в очень саркастической манере, сказал Dale.
Т.е. для тебя примерно должна быть такая программа изучения.
1) синтаксис языка. Пока не нужны шаблоны, но нужно захватить и понять ООП.
2) Изучение стандартных алгоритмов.
2+) Изучение стандартных библиотек.
3) Изучение шаблонов проектирования.
4) Шаблоны.

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

Добавлено через 1 минуту и 39 секунд:
подскажите как в ANSI курсор спрятать
« Последнее редактирование: 22-01-2011 08:23 от ffobos » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #28 : 22-01-2011 09:21 » 

ffobos,
>>еще как текстовые! все эти линии отрисованы готовыми сегментами

я и сказал, что всё текстовое. Но юзеру то, извиняюсь, глубоко насрать на это - у него линии и окошки Улыбаюсь
Записан

ffobos
Интересующийся

ru
Offline Offline

« Ответ #29 : 22-01-2011 09:43 » 

ffobos,
>>еще как текстовые! все эти линии отрисованы готовыми сегментами

я и сказал, что всё текстовое. Но юзеру то, извиняюсь, глубоко насрать на это - у него линии и окошки Улыбаюсь
извеняюсь четал в спешке не внимателен был
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #30 : 22-01-2011 09:53 » 

ffobos, а отсутствие запятых и неправильные буквы в словах - тоже из-за спешки ? Улыбаюсь
Записан

Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #31 : 22-01-2011 09:55 » 

подскажите как в ANSI курсор спрятать

Код:
ESC [ ? 25 l
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
ffobos
Интересующийся

ru
Offline Offline

« Ответ #32 : 22-01-2011 10:11 » 

ffobos, а отсутствие запятых и неправильные буквы в словах - тоже из-за спешки ? Улыбаюсь
да

Добавлено через 3 минуты и 6 секунд:
подскажите как в ANSI курсор спрятать

Код:
ESC [ ? 25 l
благодарю
« Последнее редактирование: 22-01-2011 10:14 от ffobos » Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #33 : 22-01-2011 10:18 » 

ffobos, на этот раз поверю
Записан

Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #34 : 22-01-2011 17:42 » 

По-моему, такое изучение управляющих последовательностей (по одной) не слишком продуктивно. Их ведь достаточно много.

Я бы спросил по-другому: "Где можно посмотреть коды управляющих ESC-последовательностей для терминалов ANSI?". И ответил бы: "Например, здесь: http://portal.istra.ru/mirror/linuxdoc/www.linuxdoc.ru/manpages/man4/console_codes.4.html ". Все, вопрос полностью закрыт, можно приступать к изучению чего-то поинтереснее.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
ffobos
Интересующийся

ru
Offline Offline

« Ответ #35 : 24-01-2011 11:38 » 

Приходится по одной последовательности.

Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle

некогда заниматься визуализацией, срочно нужен демо режим.

Добавлено через 14 минут и 50 секунд:
А про что здесь речь?
 ESC l                                    Блокирование памяти (для HP-терминалов).
                                                Блокирует память выше курсора.
« Последнее редактирование: 24-01-2011 11:52 от ffobos » Записан
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #36 : 24-01-2011 12:06 » 

Насколько я помню, область выше курсора "замораживается", ее содержимое нельзя менять.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #37 : 25-01-2011 16:11 » 

Dale, в пределах экрана - можно - записью поверх.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #38 : 25-01-2011 21:38 » 

А в чем тогда смысл блокировки?
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #39 : 25-01-2011 22:07 » 

стоп...
 ESC l                                    Блокирование памяти (для HP-терминалов).
                                                Блокирует память выше курсора.
это специфическая последовательность... Вы где-нибудь видели HP терминалы?

вот как увидите, тогда поймете нахрена эта штука нужна.
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #40 : 25-01-2011 22:18 » 

скорее всего, блокируется прокрутка текста (вернее, уезжание текста вверх)

как это было в Орионе
Записан

Dale
Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #41 : 25-01-2011 22:41 » 

Не, для прокрутки есть отдельная ESC-последовательность, точно помню. Задается левый верхний угол окошка и правый нижний, и в этих пределах производится скроллинг, а остальная часть стоит на месте. Но при этом остальная часть не замораживается: если явно адресовать курсор за пределы окошка, можно менять содержимое.
Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. - Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. - Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.
ffobos
Интересующийся

ru
Offline Offline

« Ответ #42 : 26-01-2011 04:56 » 

Как отследить работу мыши в терминале?
Следующий код отслеживает работу не только клавиатуры но мыши
Код:
#include <errno.h>   /* Объявления кодов ошибок */
#include <time.h>
#include <stdlib.h>
#include <termios.h>
int c;
int main (int argc, char ** argv)
{
 struct termios oldsettings, newsettings;
  tcgetattr(fileno(stdin), &oldsettings);
  newsettings = oldsettings;
  newsettings.c_lflag &= ~(ECHO|ICANON|ISIG);
  newsettings.c_cc[VMIN] = 0;
  newsettings.c_cc[VTIME] = 0;
  tcsetattr(fileno(stdin), TCSANOW, &newsettings);
printf(ESC "[?9h") >= 0;
  while((c=getchar()) != 'q') {
 
    sleep(1);
    printf("%x\n", c);
  }
  tcsetattr(fileno(stdin), TCSANOW, &oldsettings);
 printf(ESC "[?9l") >= 0;
  return EXIT_SUCCESS;

}

при нажатие левой кнопки мыши, на экране выдаст следующию последовательность;
1b - ESC
5b - [
4d - M
20 - нажатия кнопки
22 - X
21 - Y
начало координат X,Y верхний левый угол терминала 20, 20.
Записан
ffobos
Интересующийся

ru
Offline Offline

« Ответ #43 : 02-10-2011 09:38 » 

Господа подскажите код, как в QT сделать управления rs232
Записан
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #44 : 02-10-2011 16:11 » 

ffobos, Через Qt скорее всего никак. Если ты работаеш в Linux. То у rs232 должен быть в /dev файл устройства. С ним напрямую и работатай. Или на уровне драйверов, если возможностей не хватает.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #45 : 03-10-2011 06:22 » 

ffobos, может поможет )
http://www.forum.crossplatform.ru/index.php?showtopic=3012&hl=%EA%EE%EC+%EF%EE%F0%F2
Записан

ffobos
Интересующийся

ru
Offline Offline

« Ответ #46 : 09-10-2011 04:33 » 

ffobos, Через Qt скорее всего никак. Если ты работаеш в Linux. То у rs232 должен быть в /dev файл устройства. С ним напрямую и работатай. Или на уровне драйверов, если возможностей не хватает.
При работе на C я могу управлять портами но там надо задавать параметры порта скорость,четность итд. а как это делать в С++?
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #47 : 09-10-2011 05:31 » 

ffobos, в языках Си и C++ нет последовательных портов. Зато поддержка есть на уровне API и не важно, из какого языка делаются вызовы к нему.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
ffobos
Интересующийся

ru
Offline Offline

« Ответ #48 : 09-10-2011 08:29 » 

не черта не получается
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #49 : 09-10-2011 13:12 » 

А подробнее?
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
DneprSMV
Помогающий

kz
Offline Offline
Пол: Мужской

« Ответ #50 : 09-10-2011 18:59 » 

ffobos,
Есть отличная книжка - с комплектом примеров
Системное программирование на C++ для Unix
Теренс Чан.  Посмотри, может пригодится.


Добавлено через 21 минуту и 45 секунд:
ps - если нужна работа с последовательным устройством
поищи исходники системной утилиты stty.
« Последнее редактирование: 09-10-2011 19:21 от DneprSMV » Записан

"Не слушайте никаких советов, в том числе и этот" (Сократ ?)
ffobos
Интересующийся

ru
Offline Offline

« Ответ #51 : 10-10-2011 02:08 » 

подробнее
Код:
void GelixRed::COMOpen()
{QFile COMFile("/dev/ttyUSB2");
    if(!COMFile.open(QIODevice::ReadWrite))
    {strTerm=("error open port");}


        struct termios Options; /*структура для установки порта*/

        tcgetattr(COMFile.handle(), &Options); /*читает пораметры порта*/

        cfsetispeed(&Options, B115200); /*установка скорости порта*/
        cfsetospeed(&Options, B115200); /*установка скорости порта*/

        Options.c_cflag &= ~PARENB; /*выкл проверка четности*/
        Options.c_cflag &= ~CSTOPB; /*выкл 2-х стобит, вкл 1 стопбит*/
        Options.c_cflag &= ~CSIZE; /*выкл битовой маски*/
        Options.c_cflag |= CS8; /*вкл 8бит*/
        tcsetattr(COMFile.handle(), TCSANOW, &Options); /*сохронения параметров порта*/
    }
в режиме отладке пишет: &"warning: GDB: Failed to set controlling terminal: \320\235\320\265\320\264\320\276\320\277\321\203\321\201\321\202\320\270\320\274\321\213\320\271 \320\260\321\200\320\263\321\203\320\274\320\265\320\275\321\202\n"
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #52 : 10-10-2011 06:13 » 

>>Недопустимый аргумент

(в аттаче - самописная утилитка для конвертации таких последовательностей, если нужно. Правда, она виндовая)

* rustext_octo.zip (860.94 Кб - загружено 959 раз.)
« Последнее редактирование: 10-10-2011 06:16 от Алексей1153++ » Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #53 : 10-10-2011 06:31 » 

"controlling terminal" - это к последовательному порту в данном случае не относится.
У каждого процессора может быть управляющий терминал. Даже у фоновых задач. Они от него зависят, могут быть вызваны из фона в интерактивный режим, могут сами из фона запрашивать работу с терминалом (например, для ввода пароля), а также получат сигнал HUP при закрытии терминала.
Отключенные от терминала процессы считаются демонами.

У меня сохранился мой старый-старый код для настройки последовательного потрта. Полностью рабочий.

Код: (C)
tcgetattr(ftty, &tios);
tios.c_iflag = IGNBRK;
tios.c_oflag = 0;
tios.c_lflag = 0;
tios.c_cc[VMIN] = 1;
tios.c_cc[VTIME] = 0;
tios.c_cflag = CLOCAL | CREAD;
tios.c_cflag |= CS8;

switch('N' /* управление потоком: None, Software (xon/xoff), Hardware */)
{
    case 'N': break;
    case 'S': tios.c_cflag |= IXON | IXOFF; tios.c_cc[VSTOP] = 0x13; tios.c_cc[VSTART] = 0x11; break;
    case 'H': tios.c_cflag |= CRTSCTS; break;
}

cfsetspeed(&tios, 115200);
tcsetattr(ftty, TCSANOW, &tios);
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
ffobos
Интересующийся

ru
Offline Offline

« Ответ #54 : 25-10-2011 06:00 » 

пишет туже ошибку
Записан
Страниц: 1 2 [Все]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines