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

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

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 Кб - загружено 951 раз.)
« Последнее редактирование: 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