|
Редактирование значения типа float, Как организовать такое? |
|
|
|
Feb 11 2009, 21:00
|

Участник

Группа: Свой
Сообщений: 71
Регистрация: 23-10-08
Из: Набережные Челны
Пользователь №: 41 132

|
Цитата(Alex11 @ Feb 11 2009, 23:54)  А в чем проблема? Чтобы все не сбивалось на экране, хранить придется все равно байт на символ (минимум, пол-байта, если памяти совсем нет), изменять их по стрелочкам, а затем пересчитывать в плавучку, умножая каждую цифру на соответствующий множитель (при каждом нажатии стрелочки вверх или вниз). а алгоритм можете привести? свободной памяти много...
Сообщение отредактировал clpe - Feb 11 2009, 21:01
|
|
|
|
|
Feb 11 2009, 21:26
|

Участник

Группа: Свой
Сообщений: 71
Регистрация: 23-10-08
Из: Набережные Челны
Пользователь №: 41 132

|
Цитата(Methane @ Feb 12 2009, 00:24)  Я делал. Просто вверх/вниз, увеличение скорости изменения по экспоненте (чем дольше нажатие тем быстрее изменяется, в зависимости от текущего значения - если к примеру текущее 0.01 то следующем будет 0.02 а если текущее 100, то 101). Получилось очень прикольно. Но я на семисегментниках делал. На ЖКИ может не так прикольно получится. Ага прикольно когда надо редактировать от 0.00 до 999.99
|
|
|
|
|
Feb 11 2009, 21:39
|

Участник

Группа: Свой
Сообщений: 71
Регистрация: 23-10-08
Из: Набережные Челны
Пользователь №: 41 132

|
Цитата(nl5 @ Feb 12 2009, 00:34)  Иногда делают просто выбор позиции стрелками вправо-влево, и изменение этой позиции стрелками вверх-вниз, с переносом в старшую позицию если переполняется вверх или вниз. По-моему это удобнее, чем переменная скорость, хотя кому как. вот-вот такое есть у кого нибудь?
|
|
|
|
|
Feb 11 2009, 22:27
|

Участник

Группа: Свой
Сообщений: 71
Регистрация: 23-10-08
Из: Набережные Челны
Пользователь №: 41 132

|
Цитата(demiurg_spb @ Feb 12 2009, 01:19)  преобразуйте число в строку функцией ftoa или snprintf, отредактируйте строку кнопочкми и обратно из строки в число atof. Какой алгоритм Вам ещё нужен? Вы же программист и творец, вот и творите, экспериментируйте... Нет ничего более ценного, чем знания и опыт, полученные собственным трудом. В редактировании целого числа проблем никаких нет, а вот при редактировании чисел с запятой  слишком большой код. Одну из позиций точка занимает, нужно перепрыгивать, и начинается путаница.
|
|
|
|
|
Feb 11 2009, 22:32
|

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

|
Цитата(clpe @ Feb 12 2009, 01:27)  В редактировании целого числа проблем никаких нет, А я Вам говорю как раз не о целых числах, а о float. Цитата а вот при редактировании чисел с запятой  слишком большой код. Одну из позиций точка занимает, нужно перепрыгивать, и начинается путаница. Эка проблема! Если считаете это СЛИШКОМ сложным, то я даже и не знаю что и сказать. Терпение и труд всё перетрут. Главное начать, а там глядишь и конец работы начнёт проглядываться. Устал - пойди погуляй с девушкой, да не с одной!:) От того что долго вылупаешься в монитор и тупишь пользы ноль.
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
Feb 11 2009, 22:34
|

Участник

Группа: Свой
Сообщений: 71
Регистрация: 23-10-08
Из: Набережные Челны
Пользователь №: 41 132

|
Цитата(demiurg_spb @ Feb 12 2009, 01:32)  А я Вам говорю как раз не о целых числах, а о float. Эка проблема! Если считаете это СЛИШКОМ сложным, то я даже и не знаю что и сказать. Просто с float на МК редко сталкивался...
|
|
|
|
|
Feb 11 2009, 23:34
|

Гуру
     
Группа: Свой
Сообщений: 3 615
Регистрация: 12-01-09
Из: США, Главное разведовательное управление
Пользователь №: 43 230

|
Цитата(nl5 @ Feb 11 2009, 23:34)  ...и тем труднее остановиться когда надо, и начинается: вверх-вниз-вверх-вниз.. Иногда делают просто выбор позиции стрелками вправо-влево, и изменение этой позиции стрелками вверх-вниз, с переносом в старшую позицию если переполняется вверх или вниз. По-моему это удобнее, чем переменная скорость, хотя кому как. Господи! Сделайте и поиграйтесь. Ваш вариант и есть в общем-то мой. У меня сначала медленно ползет младшая цифра, потом болшее старшая потом еще более старшая итд... В общем скорость нарастает. Вы не читали "машина времени"? Цитата Я уже рассказывал о болезненных и муторных ощущениях, которые вызывает путешествие по Времени. Но на этот раз я к тому же плохо сидел в седле, неловко свесившись набок. Не знаю, долго ли я провисел таким образом, не замечая, как моя Машина дрожит и раскачивается. Когда я пришел в себя и снова посмотрел на циферблаты, то был поражен. На одном из циферблатов отмечались дни, на другом тысячи, на третьем миллионы и на четвертом миллиарды дней. Оказалось, что вместо того, чтобы повернуть рычаги назад, я привел их в действие таким образом, что Машина помчалась вперед, и, взглянув на указатели, я увидел, что стрелка, отмечающая тысячи дней, вертелась с быстротой секундной стрелки, — я уносился в Будущее. По мере движения все вокруг начало принимать какой‑то необыкновенный вид. Дрожащая серая пелена стала темнее; потом снова — хотя я все еще продолжал двигаться с невероятной скоростью — началась мерцающая смена ночи и дня, обычно указывавшая на не очень быстрое движение Машины. Это чередование становилось все медленнее и отчетливее. Сначала я очень удивился. День и ночь уже не так быстро сменяли друг друга. Солнце тоже постепенно замедляло свое движение по небу, пока наконец мне не стало казаться, что сутки тянутся целое столетие. В конце концов над землей повисли сумерки, которые лишь но временам прорывались ярким светом мчавшейся по темному небу кометы. Красная полоса над горизонтом исчезла; солнце больше не закатывалось — оно просто поднималось и опускалось на западе, становясь все более огромным и кровавым. Луна бесследно исчезла. Звезды, медленно описывавшие свои круговые орбиты, превратились из сплошных полосок света в отдельные, ползущие по небу точки. Наконец, незадолго до того, как я остановился, солнце, кровавое и огромное, неподвижно застыло над горизонтом; оно походило на огромный купол, горевший тусклым светом и на мгновения совершенно потухавший. Один раз оно запылало прежним своим ярким огнем, но быстро вновь приобрело угрюмо‑красный цвет. Из того, что солнце перестало всходить и закатываться, я заключил, что периодическое торможение наконец завершилось. Земля перестала вращаться, она была обращена к Солнцу одной стороной, точно так же, как в наше время обращена к Земле Луна. Помня свое предыдущее стремительное падение, я с большой осторожностью принялся замедлять движение Машины. Стрелки стали крутиться все медленней и медленней, пока наконец та, что указывала тысячи дней, не замерла неподвижно, а та, что указывала дни, перестала казаться сплошным кругом. Я еще замедлил движение, и передо мной стали смутно вырисовываться очертания пустынного берега.
|
|
|
|
|
Feb 12 2009, 00:17
|
Гуру
     
Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882

|
Цитата(clpe @ Feb 12 2009, 03:27)  В редактировании целого числа проблем никаких нет, а вот при редактировании чисел с запятой  слишком большой код. Одну из позиций точка занимает, нужно перепрыгивать, и начинается путаница. У нас в приборах редактирование чисел с плавающей точкой реализовано посимвольно. Раскладываете float на символы, выводите на LCD и редактируете символьную строку, следя чтобы десятичная точка была только в одной позиции (заведите семафорчик как признак, что в какой-то позиции уже есть точка). При нажатии кнопки "ввод" преобразуете символьную строку во float, запоминаете значение и затем преобразуете снова в символьную строку для вывода на LCD. При посимвольном редактировании кнопки влево/вправо двигают курсор по символам(знакоместам), а вверх/вниз изменяют значение символа из следующего ряда: "пробел", ".", "0", "1", "2", .... "8", "9". Упомянутый выше автоповтор последней нажатой клавиши (а также увеличивающийся со временем темп автоповтора) относится с функции клавиатуры, а не собственно функции редактирования. Хотя для столь малого набора символов (11 символов) (авто)увеличение темпа автоповтора ИМХО излишнее.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|