PIP 5.9.0
Platform-Independent Primitives
Загрузка...
Поиск...
Не найдено
Простые начала

Многие начинающие программисты решают общие задачи взаимодействия с операционной системой: вывод в консоль, определение нажатия клавиш, работа с последовательными портами, сетью или файлами, и многое другое. Эти задачи решены в библиотеке, и код, основанный на PIP будет компилироваться и работать одинаково на многих системах: Windows, любой Linux, Red Hat, FreeBSD, MacOS X и QNX. Типовое приложение на PIP выглядит примерно так:

#include <pip.h>
// declare key press handler
void key_event(char key, void * );
PIConsole console(false, key_event); // don`t start now, key handler is "key_event"
// some vars
int i = 2, j = 3;
// implicit key press handler
void key_event(char key, void * ) {
switch (key) {
case '-':
i--;
break;
case '+':
i++;
break;
case '(':
j--;
break;
case ')':
j++;
break;
};
};
class MainClass: public PITimer {
PIOBJECT(MainClass)
public:
MainClass() {}
protected:
void tick(int delimiter) {
piCout << "timer tick";
// timer tick
}
};
MainClass main_class;
int main(int argc, char * argv[]) {
// enabling auto-detection of exit button press, by default 'Q' (shift+q)
console.enableExitCapture();
// if we want to parse command-line arguments
PICLI cli(argc, argv);
cli.addArgument("console"); // "-c" or "--console"
cli.addArgument("debug"); // "-d" or "--debug"
// enabling or disabling global debug flag
piDebug = cli.hasArgument("debug");
// configure console
console.addTab("first tab", '1');
console.addString("PIP console", 1, PIConsole::Bold);
console.addVariable("int var (i)", &i, 1);
console.addVariable("int green var (j)", &j, 1, PIConsole::Green);
console.addString("'-' - i--", 2);
console.addString("'+' - i++", 2);
console.addString("'(' - j--", 2);
console.addString("')' - j++", 2);
console.addTab("second tab", '2');
console.addString("col 1", 1);
console.addString("col 2", 2);
console.addString("col 3", 3);
console.setTab("first tab");
// start output to console if "console" argument exists
if (cli.hasArgument("console"))
console.start();
// start main class, e.g. 40 Hz
main_class.start(25.);
// wait for 'Q' press, independently if console is started or not
console.waitForFinish();
return 0;
};
Класс парсера аргументов командной строки
Определения picli.h:40
Периодический таймер, который выдает тики из внутреннего рабочего потока.
Определения pitimer.h:60
bool piDebug
Глобальная переменная, включающая вывод в piCout, при старте true.
Определения piincludes.cpp:37
#define piCout
Макрос для условного (piDebug) вывода в PICout(StdOut).
Определения picout.h:36
Зонтичный include для публичного API PIP.

Этот код демонстрирует простую конфигурируемую программу, которая может быть запущена с консолью или без неё, с отладочным выводом или без. MainClass — центральный класс, который также может быть унаследован от PIThread с переопределением run().
У многих классов PIP есть события и обработчики, которые можно связывать между собой. Подробности — на странице PIObject (События и Обработчики событий).
Для настройки приложения из файла используйте PIConfig (см. Конфигурация из файла).
Дополнительные темы — на странице Дополнительные темы.