Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
VotVopros Гость
|
Добавлено: Ср Янв 21 2004 10:49 Заголовок сообщения: vt100: проблема с printf |
|
|
Помогите!!!:
Пишу прогу для вывода псевдографики на vt100.
Терминал в режиме 80*25.
С помощью printf последовательно вывожу:
то псевдографику,
то esc-последовательности (позиционирование курсора).
Как только суммарное количество символов (и в esc-последовательностях, и в текстовом виде) достигает некоторой величины (по моему как раз 80 символов), осуществляется без моего ведома (не знаю на каком уровне) перевод строки.
В итоге я не могу вывести даже символов 50 в одной строке, т.к. после 10 символов происходит перевод строки. На экране вместо красивых рамочек полная абракадабра.
Есть решение у этой проблемы: просто при каждой возможности посылать printf("\n"), тогда происходит как бы очистка некоего буфера - и подсчёт символов начинается вновь.
НО - по ряду причин очень не хочется использовать \n, а напрямую позиционировать курсор.
А самое главное - непонятно: почему же это всё происходит!
Что за счётчик такой в printf в случае, когда работаешь с vt100?
Хочу ещё заметить, что форум я выбрал не совсем правильно.
Дело в том, что под Unix таких глюков как раз не замечал.
Глюк возникает, когда HyperTerm или обычный windows-телнет применяется к 127.0.0.1 + запущен win2k telnet-server...
Однако специалистов, работающих с vt100 по-моему вероятней найти на этом форуме, чем где-либо.
Простите, если вопрос уж очень глупый и уж очень длинный... |
|
Вернуться к началу |
|
|
Родион
Зарегистрирован: 18.01.2004 Сообщения: 183
|
Добавлено: Чт Янв 22 2004 07:26 Заголовок сообщения: |
|
|
Помоему, все кроется дибо в настройках, посмотри их внимательно
или возможен переход предельных значений для переменных,
посмотри внимательней _________________ RTFM |
|
Вернуться к началу |
|
|
VotVopros Гость
|
Добавлено: Пт Янв 23 2004 18:16 Заголовок сообщения: |
|
|
Половинчатое решение нашлось!!
Проблемы возникали похоже из-за того, что все данные посылались printf-ом в одну строчку. На каком-то уровне происходило переполнение какого-то буфера (знать бы какого!!!) и начинались глюки.
Решение оказалось следующим - если часто вызывать printf("\n\r"), то глюки не возникают. Конечно это не очень удобно, но зато работает, в отличие, скажем, от вызова fflush.
Проблема с выводом как бы решилась, ЗАТО возникла НОВАЯ ПРОБЛЕМА с вводом. Причём природа этих двух проблем видимо схожая....
Лишние esc-последовательности на уровне клиента всё-таки вставляются - в конец и в начало посылаемых данных.
И в результате, если я хочу считать (scanf-ом или getch) с клавиатуры символ, то курсор передвигается в некую фиксированную от раза к разу позицию - где-то в середине экрана.
Никакие esc-последовательности позиционирования курсора не влияют на положение этой позиции.
Ещё могу отметиь, что использование различных telnet клиентов под windows/unix мне не помогло (и с вводом и с выводом)...
p.s. Решение "\n\r" не мог так долго найти, потому что пробовал по отдельности \r и \n, вместе почему-то не пришло в голову попробовать ... |
|
Вернуться к началу |
|
|
|