Форум программистов, компьютерный форум, киберфорум
Электроника и радиотехника
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/28: Рейтинг темы: голосов - 28, средняя оценка - 4.71
TomkDoubti
1

Консоль

09.04.2015, 22:45. Показов 5504. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот я загорелся желанием сделать калькулятор с парсером формул (и если получится с калькулятором, то и команды добавлю). У меня есть готовый самопальный на C++ Builder 6. Думаю переносить его на МК.

Управление:
Вращение энкодера - выбор вводимого символа;
Кнопка нкодера - ввод символа;
Кнопка 1 - ввод;
Вывод информации на ЛСД-дисплей (лол);
Перемещение влева-вправо и удаление слева справа.

Возможности:
Простое выражение: 1-6.7*a-pi
Объявление переменной: a=5-sin(5.2)
Объявление функции: f1(x,y,z)=x*y+y*sin(1-x)+a

Есть некоторые перманентные константы: pi=3.14***; e=2.7***; ...
Есть некоторые перманентные функции: sin(x); pow(x,y); ...
Есть переменные и функции. Их можно объявлять и переобъявлять:
a=3
a=1
Или:
f(x)=2-x
f(x,y,z,s)=x+y+z+s*x

Кстати! Можно и команды вводить. А там уже простору море.

Пример команды (из программы)

~DeletePoint(n2)

//----------------------------------------------------------------------

Класс AnsyString я еще как нибудь заменю ...

Вот такой код не работает:

Код
struct Lixime
{
Lixime* next;
uint32_t n;
}
Keil ругается на строчку:

Код
Lixime* next;
//----------------------------------------------------------------------

Структуры консоли в C++ Builder 6:

Код
struct Consol_Variable
{
Consol_Variable* next;
Consol_Variable* prev;
double value;
AnsiString name;
bool type;
};
struct Consol_Action
{
Consol_Action* next;
Consol_Action* prev;
AnsiString name;
int ntype;
int n;
Consol_Variable** Variables;
Consol_Variable* Risult;
};
struct Consol_Lixime
{
Consol_Lixime* next;
Consol_Lixime* prev;
AnsiString text;
double value;
int type;
Consol_Action* Actions;
Consol_Variable* Variables;
Consol_Variable* Risult;
};
struct Consol_Function
{
Consol_Function* next;
Consol_Function* prev;
AnsiString name;
int ntype;
bool type;
Consol_Action* Actions;
Consol_Variable* Variables;
int nVar;
};
struct Consol_Error
{
Consol_Error* next;
AnsiString Text;
int N;
};
struct Consol_Consol
{
double Risult;
AnsiString ConsolText;
Consol_Lixime* Liximes;
Consol_Lixime* LeftPart;
int TypeExpression;
int numSumbols;
bool CheckRisult;
int NEqual;
int NTilde;
int NOpen;
int NClose;
Consol_Variable* Variables;
Consol_Function* Functions;
int Post;
Consol_Error* Errors;
};
Consol_Variable *Variable_a;
Consol_Function *Function_a;
Consol_Lixime *Consol_lexa;
Consol_Error *Consol_Erra;
Consol_Consol *Consol_Main;
Как то так.
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.04.2015, 22:45
Ответы с готовыми решениями:

Портативная игровая консоль
Задумал проект "портативная игровая консоль" , проект будет являться портативной игровой консолью...

PinBoard II и консоль Seagate
Здравствуйте! Подскажите можно ли использовать PinBoard для подключения консоли диска Seagate...

Передача данных на консоль
Здравствуйте. Я хочу создать вроде бота который будет играть в игры на консоли. Только я не знаю...

IDE или консоль?
Не знаю как он, а я IDE не ругаю. Местами это довольно удобная штука. Особенно если программисту...

6
0 / 0 / 0
Регистрация: 30.01.2010
Сообщений: 123
10.04.2015, 06:34 2
Вводить формулу с кучей символов энкодером, как мне кажется, будет крайне не удобно.

Наверное все-же надо писать так:
Код
struct Lixime
{
struct Lixime* next;
uint32_t n;
}
А вообще, в качестве калькулятора с редактором формул прекрасно подходят интепретируемые языки, такие как Lua, Tcl, Perl, .... Все эти языки кросплатформенные.
Конкретно Lua неплохо помещается и работает на МК. У меня получалось запускать Lua 5.3.0 на lpc1768. Оперативной памяти для больших задач конечно впритык, но для формул хватит с лихвой :)
На МК с внешней памятью Lua чувствтует себя совсем хорошо :)
0
TomkDoubti
10.04.2015, 10:46 3
Ого, спасибо! Я видать уже слишком сильно испортился билдером.

Дело в том, что алгоритм есть уже ... он работает - проверено. Хотя что вспоминать Си, что изучать Луа ...
TomkDoubti
10.04.2015, 14:04 4
Кто работал с функцией malloc или calloc и free? Есть у кого нибудь исходник переделанной стандартной библиотеки под STM32?
1 / 1 / 0
Регистрация: 05.10.2017
Сообщений: 2,048
10.04.2015, 14:52 5
пытались на 103. Глюков много было, так до конца и не допилили. Решили что ни к чему эти динамические выделения памяти, обычно заранее известно что и в каком объеме надо хранить.
0
TomkDoubti
10.04.2015, 20:30 6
Пичаль 80 лвла ...
TomkDoubti
12.04.2015, 19:29 7
Тогда можно заранее выделить память под структуры ... и по ходу работу программы заполнять массивы.
12.04.2015, 19:29
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.04.2015, 19:29
Помогаю со студенческими работами здесь

Отладочная консоль через JTAG
Где-то слышал, что вместо того, чтобы городить UART и выводить на него отладочную информацию,...

консоль UART и нестандартная скорость
есть некое устройство с консолью. по ряду причин скорость не стандартная 48000. какие адаптеры...

Изменение режима работы Test Bench при симуляции, посредством ввода данных в tcl консоль (Vivado)
Здравствуйте! Мой TB может работать в нескольких режимах. На данный момент установка режима...

Подготовить числа для вывода на консоль через ASCII и вывести на консоль
В регистре eax находится число, которое нужно превратить в ASCII-код и вывести на консоль символы,...

Программа выводит ответ и в консоль и в файл, хотя нужно только в консоль
когда выбираю вывести в консоль, программа выводит ответ и в консоль, и в файл #include...

Не выводит текст в консоль, открывается пустая консоль без текста
Приложение должно вызывать консоль при выполнении каких то условий. В консоль записывается текст...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru