Utilisation des ncurses sous Solaris 9/10.

Utilisation des ncurses sous Solaris 9/10. - C - Programmation

Marsh Posté le 10-12-2005 à 15:11:06    

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 :
  1. #include <stdio.h>
  2. #include <curses.h>
  3. int main()
  4. {
  5.         int h, w;       // Pour les dimensions de la fenêtre
  6.         int ch;
  7.         int vitesse=0;
  8.         initscr();      // Initialisation des curses, le terminal est considéré
  9.                         // comme le stdscr par défaut
  10.         getmaxyx(stdscr, h, w); // Récupère les dimensions de la fenêtre
  11.         cbreak();       // Pas de buffer TTY
  12.         noecho();       // Pas d'echo de la frappe
  13.         keypad(stdscr, TRUE);   // Gestion des touches spéciales (flèches, backspace...)
  14.         nodelay(stdscr, TRUE);  // getch non bloquant
  15.         // On peut faire le con avec des couleurs
  16.         start_color();
  17.         attrset(A_BOLD);        // Pour un blanc éclatant (:D)
  18.         init_pair(1, 1, 0);     // Rouge, fond noir
  19.         border(0, 0, 0, 0, 0, 0, 0, 0); // Une belle bordure
  20.         move(1, 1);
  21.         printw("Regulateur de vitesse : %d km/h",vitesse);
  22.         move(2, 1);
  23.         printw("Utiliser les fleches haut et bas." );
  24.         move(3,1);
  25.         printw("Touche x pour quitter." );
  26. //      move(4,1);
  27. //      hline(ACS_HLINE, w-2); // Ligne de séparation horizontale
  28.         while(1) {
  29.                 if ((ch = getch()) == ERR) {}
  30.                 else {
  31.                         switch (ch) {
  32.                                 case KEY_UP: if(vitesse<150) vitesse=vitesse+5; else beep(); break;
  33.                                case KEY_DOWN: if(vitesse>0) vitesse=vitesse-5; else beep(); break;
  34.                                 case 'x': endwin(); return(0);
  35.                         }
  36.                         clear();
  37.                         border(0, 0, 0, 0, 0, 0, 0, 0);
  38.                         move(1, 1);
  39.                         printw("Regulateur de vitesse : %d km/h",vitesse);
  40.                         if(vitesse>130) {
  41.                                 attron(COLOR_PAIR(1));
  42.                                 printw(" /!\\ Vitesse elevee." );
  43.                                 attroff(COLOR_PAIR(1));
  44.                         }
  45.                         move(2, 1);
  46.                         printw("Utiliser les fleches haut et bas." );
  47.                         move(3,1);
  48.                         printw("Touche x pour quitter." );
  49.                 }
  50.         }
  51. }


Message édité par Master_Jul le 10-12-2005 à 15:14:20
Reply

Marsh Posté le 10-12-2005 à 15:11:06   

Reply

Marsh Posté le 15-05-2006 à 15:54:25    

Pour ton interface tu peux effectivement utiliser ncurses sous solaris la librairie se lie via -lcurses. Concernant les couleurs méfie toi les terminaux sous cde sont compatibles avec la couleur mais pas les terminaux gnome du java desktop ... pour etre sur tu peux faire un test du style :
 
if(has_colors()==FALSE){
 printw("pas de couleur" );
}

Reply

Marsh Posté le 15-05-2006 à 16:25:31    

Je te remercie pour ta réponse. J'ai pu compiler cet exemple et mon projet le semestre dernier en utilisant effectivement -lcurses.


---------------
En français, on écrit "connexion", pas "connection".
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed