Master_Jul | Hello,
J'ai un projet à faire en C avec utilisation de sémaphores, files de messages, mémoire partagée etc.
Le projet est un ordinateur de bord de voiture et je souhaite faire une interface un minimum correcte. Notre projet doit fonctionner sous Solaris (pour nous "obliger" à rester au plus près de la norme Unix). J'ai pensé aux (n)curses. D'après plusieurs docs, ça semble dans la norme d'Unix System V.
En pratique, est-ce que c'est utilisable ? J'ai essayé en installant une Solaris 10 chez moi, malgré la présence des .o libcurses dans le système, je n'ai pas été foutu de compiler mon misérable programme de test. Et impossible de trouver les fonctions sur les ordinateurs du bahut en compilant avec -lncurses. Mon ami n'a pas eu le temps d'essayer avec -lcurses. Mais bon, j'ai pas mal de doutes.
J'ai donc deux questions :
Est-ce que l'utilisation des ncurses pour une "interface" est correcte dans le cadre d'un projet portable ?
Est-ce que quelqu'un s'est déjà servi des curses sous Solaris ?
Merci,
Julien
Je joins le code en question si quelqu'un est en mesure d'essayer.
Code :
- #include <stdio.h>
- #include <curses.h>
- int main()
- {
- int h, w; // Pour les dimensions de la fenêtre
- int ch;
- int vitesse=0;
- initscr(); // Initialisation des curses, le terminal est considéré
- // comme le stdscr par défaut
- getmaxyx(stdscr, h, w); // Récupère les dimensions de la fenêtre
- cbreak(); // Pas de buffer TTY
- noecho(); // Pas d'echo de la frappe
- keypad(stdscr, TRUE); // Gestion des touches spéciales (flèches, backspace...)
- nodelay(stdscr, TRUE); // getch non bloquant
- // On peut faire le con avec des couleurs
- start_color();
- attrset(A_BOLD); // Pour un blanc éclatant (:D)
- init_pair(1, 1, 0); // Rouge, fond noir
- border(0, 0, 0, 0, 0, 0, 0, 0); // Une belle bordure
- move(1, 1);
- printw("Regulateur de vitesse : %d km/h",vitesse);
- move(2, 1);
- printw("Utiliser les fleches haut et bas." );
- move(3,1);
- printw("Touche x pour quitter." );
- // move(4,1);
- // hline(ACS_HLINE, w-2); // Ligne de séparation horizontale
- while(1) {
- if ((ch = getch()) == ERR) {}
- else {
- switch (ch) {
- case KEY_UP: if(vitesse<150) vitesse=vitesse+5; else beep(); break;
- case KEY_DOWN: if(vitesse>0) vitesse=vitesse-5; else beep(); break;
- case 'x': endwin(); return(0);
- }
- clear();
- border(0, 0, 0, 0, 0, 0, 0, 0);
- move(1, 1);
- printw("Regulateur de vitesse : %d km/h",vitesse);
- if(vitesse>130) {
- attron(COLOR_PAIR(1));
- printw(" /!\\ Vitesse elevee." );
- attroff(COLOR_PAIR(1));
- }
- move(2, 1);
- printw("Utiliser les fleches haut et bas." );
- move(3,1);
- printw("Touche x pour quitter." );
- }
- }
- }
|
Message édité par Master_Jul le 10-12-2005 à 15:14:20
|