|
Не выводится на терминал буква "я", Почему? |
|
|
|
Aug 28 2007, 09:50
|
Знающий
   
Группа: Свой
Сообщений: 589
Регистрация: 24-04-05
Пользователь №: 4 447

|
Использую инструкцию типа : Код printf_P("\n\r Измеренная температура возле датчика: %f", D2); В качестве терминала - гипертерминал Windows. Выводится: Цитата Измеренна температура возле датчика: 0.000000 Испробовал все возможные настройки шрифтов терминала. Подозреваю, что это связано с тем, что ASCII код этой буквы =255. Пока решил проблему заменой на большую букву "Я". Как все-таки заставить вывести маленькую букву 'я' ?
|
|
|
|
|
 |
Ответов
(1 - 12)
|
Aug 28 2007, 12:13
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(alux @ Aug 28 2007, 12:50)  ASCII код этой буквы =255. Пока решил проблему заменой на большую букву "Я". Как все-таки заставить вывести маленькую букву 'я' ? Что-то похожее встречалось в очень старых версиях. Была проблема самого IAR. Решение хоть и кривое, но работало: printf_P("\n\r Измеренна\xFF температура возле датчика: %f", D2); Проверил сейчас в IAR ARM 4.30A - в строку заносится и 'я' и '\xFF'. Посморите листинг - если ассемблированная строка содержит код 'я', то скорее всего проблема в printf_P, точнее в вызываемой из нее __formatted_write() или putchar() или __write(). Как раз тот случай, когда не грех прогнать кусочек програмы в симуляторе. Цитата(rezident @ Aug 28 2007, 14:24)  Самое правильное решение - НЕ использовать виндусовый гипертерминал. Гипертерминал конечно имеет недостатки, главный из которых - забирает на себя все ресурсы и тормозит комп при появлении в линии сигнала break. И таки да, НЕ ОТОБРАЖАЕТ на экране символ с кодом 0xFF - заменяет пробелом. Хотя в лог исправно пишет. Но тем не менее он имеет одно преимущество - он есть на любом компе.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Aug 28 2007, 14:21
|
Местный
  
Группа: Участник*
Сообщений: 418
Регистрация: 20-08-07
Пользователь №: 29 930

|
Цитата(alux @ Aug 28 2007, 13:50)  Использую инструкцию типа : Код printf_P("\n\r Измеренная температура возле датчика: %f", D2); В качестве терминала - гипертерминал Windows. Выводится: Испробовал все возможные настройки шрифтов терминала. Подозреваю, что это связано с тем, что ASCII код этой буквы =255. Пока решил проблему заменой на большую букву "Я". Как все-таки заставить вывести маленькую букву 'я' ? Загрузи терминал Br@y и задача решена... Напрмер отсюда: http://www.sosej.cz/Utility-A-Ovladace/Uti...y-Terminal.htmlВсе проблемы именно он кривости Гипертерминала, который трактует букву я-малое как спецсимвол
|
|
|
|
|
Aug 29 2007, 21:53
|
Местный
  
Группа: Участник*
Сообщений: 418
Регистрация: 20-08-07
Пользователь №: 29 930

|
Цитата(vmp @ Aug 29 2007, 11:15)  Хороший-то он хороший, но очень медленный. При работе на 115200 теряет данные на довольно неслабой машине (P4 2.8). Призодится для протоколирования больших объемов информации запускать TeraTerm. ну не знаю у меня и на 115200 работает и буковки не теряет... ну другой поищи - любой кроме гипертерма... Я его может и не сайта разраба скачал - всего месяц назад - но откуда не помню уже... как раз из-за того что приработе с MsbStr-9 у меня буковки пропадали... где-то ннеще лежит крорме моей ссылки... которую я дал Кнопочек да - много - но зато настройкм при этом очевидные - и башку не ломать... и окна ввода-вывода - отдельные... Вопрос в том - Вам шашечки или Вам ехать? Если шашечки - так это как раз Гипертерминал... а если ехать этот в самый раз с полным управлением...
Сообщение отредактировал Николай Z - Aug 29 2007, 21:55
|
|
|
|
|
Sep 5 2007, 10:26
|
Местный
  
Группа: Участник*
Сообщений: 418
Регистрация: 20-08-07
Пользователь №: 29 930

|
Цитата(zltigo @ Aug 30 2007, 10:46)  .... А откуда у Hiperterminal шашечки? Нет их там  , ни шаечек нет, ни езды. Ну да и на ZOC отлично ездится.... Мне просто оказалось быстрее Br@y скачать... А шашечку Вы просто не заметили у гипертерминала... У Гипертерминала главная шашечка в разделе Help->About HyperTerminal... Там что-то про Мелкомягкий копирайт и версию аж 5.1 или около того... Возможно она единственная - но зато солидная и большая шашечка и по замыслу разработчиков видимо вызывает огромное уважение...
Сообщение отредактировал Николай Z - Sep 5 2007, 10:27
|
|
|
|
|
Sep 28 2007, 14:39
|
Участник

Группа: Новичок
Сообщений: 18
Регистрация: 16-02-07
Пользователь №: 25 414

|
Цитата(alux @ Aug 28 2007, 13:50)  Как все-таки заставить вывести маленькую букву 'я' ? Предлагаю Вам установить в HyperTerminal'e шрифт 'Terminal' - это тот, что установлен по умолчанию, а в своей embedded программе реализовать преобразование из кодировки win1251 в dos866 (например, в данном файле
map1251to866.zip ( 1.58 килобайт )
Кол-во скачиваний: 247 содержится соответсвующая map-таблица). P.S. Не забудьте сменить расширение файла на *.h
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|