PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > fr.comp.os.unix > utiliser ncurses pour afficher une barre de progression
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
fr.comp.os.unix Système UNIX.

utiliser ncurses pour afficher une barre de progression

Réponse
 
LinkBack Outils de la discussion
Vieux 25/01/2007, 14h01   #1
n@pster
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut utiliser ncurses pour afficher une barre de progression

Bonjours !

J'ai fait un petit programme en C qui traite des milliers de fichiers
et qui affiche le traitement à l'écran, et j'aimerai aussi pouvoir
afficher la progression de ce traitement en bas avec une espèce de
progressbar en console, exemple :
[**************----------------------------------------------] 15,2% du
traitement
Un peut comme apt-get avec la progression du téléchargement des
paquets.
On m'impose d'utiliser ncurses pour implémenter cette fonctionnalité,
mais je ne vois pas trop comment procéder.
J'ai regardé un peut la doc sur
http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ mais je n'ai pas
vraiment trouvé comment résoudre mon problème.
J'ai cru comprendre qu'il était possible de créer des "fenetre" dans
la console avec ncurses, c'est sûrement ce qu'il faudrait que je fasse
: faire une fenêtre d'une ligne en bas de la console avec la progress
bar, mais je ne trouve pas d'exemple, d'autant plus que le résultat du
traitement des fichier doit continuer à s'afficher comme avant.

Quelqu'un pourrais t'il me mettre sur la voie ou m'aider un peut ?

Fabien

  Réponse avec citation
Vieux 25/01/2007, 14h14   #2
ALain Montfranc
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

n@pster a écrit
> Bonjours !
>
> J'ai fait un petit programme en C qui traite des milliers de fichiers
> et qui affiche le traitement à l'écran, et j'aimerai aussi pouvoir
> afficher la progression de ce traitement en bas avec une espèce de
> progressbar en console, exemple :
> [**************----------------------------------------------] 15,2% du
> traitement
> Un peut comme apt-get avec la progression du téléchargement des
> paquets.
> On m'impose d'utiliser ncurses pour implémenter cette fonctionnalité,
> mais je ne vois pas trop comment procéder.
> J'ai regardé un peut la doc sur
> http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ mais je n'ai pas
> vraiment trouvé comment résoudre mon problème.
> J'ai cru comprendre qu'il était possible de créer des "fenetre" dans
> la console avec ncurses, c'est sûrement ce qu'il faudrait que je fasse
>> faire une fenêtre d'une ligne en bas de la console avec la progress

> bar, mais je ne trouve pas d'exemple, d'autant plus que le résultat du
> traitement des fichier doit continuer à s'afficher comme avant.
>
> Quelqu'un pourrais t'il me mettre sur la voie ou m'aider un peut ?
>
> Fabien


Si tu n'as pas besoin de faire de l'ultra portable, un truc du style
suivant me donne toute satisfaction ;-)

#include <stdio.h>

void DisplayPercent( int p )
{
int i;
printf( "[" );
for(i=0;i<=p;i+=2) printf( "*" );
for ( ;i<=100; i+=2 ) printf( "-" );
printf( "] %3d %%", p );

for(i=0;i<59;++i) printf( "%c", 8 );

fflush(stdout );
}

main()
{
int p;

for(p=0<=100;++p)
{
DisplayPercent( p );
usleep(100000);
}
printf( "\n" );
}


  Réponse avec citation
Vieux 25/01/2007, 15h13   #3
n@pster
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

Je n'ai pas besoin que ce soit ultra portable, et ce que tu as fais me
conviendrais très bien sauf que je suis obligé d'utiliser ncuses pour
mettre en oeuvre cette fonction (c'est imposé dans le projet).
Et puis ta méthode ne permet pas d'afficher le traitement des fichiers
en même temps que le pourcentage en bas de la console.
en tout cas, merci de ton aide quand même

Amicalement

Fabien

On 25 jan, 15:14, ALain Montfranc <x...@x.con> wrote:
> n@pster a écrit
>
>
>
> > Bonjours !

>
> > J'ai fait un petit programme en C qui traite des milliers de fichiers
> > et qui affiche le traitement à l'écran, et j'aimerai aussi pouvoir
> > afficher la progression de ce traitement en bas avec une espèce de
> > progressbar en console, exemple :
> > [**************----------------------------------------------] 15,2% du
> > traitement
> > Un peut comme apt-get avec la progression du téléchargement des
> > paquets.
> > On m'impose d'utiliser ncurses pour implémenter cette fonctionnalité,
> > mais je ne vois pas trop comment procéder.
> > J'ai regardé un peut la doc sur
> >http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/mais je n'ai pas
> > vraiment trouvé comment résoudre mon problème.
> > J'ai cru comprendre qu'il était possible de créer des "fenetre" dans
> > la console avec ncurses, c'est sûrement ce qu'il faudrait que je fasse
> >> faire une fenêtre d'une ligne en bas de la console avec la progress

> > bar, mais je ne trouve pas d'exemple, d'autant plus que le résultat du
> > traitement des fichier doit continuer à s'afficher comme avant.

>
> > Quelqu'un pourrais t'il me mettre sur la voie ou m'aider un peut ?

>
> > FabienSi tu n'as pas besoin de faire de l'ultra portable, un truc du style

> suivant me donne toute satisfaction ;-)
>
> #include <stdio.h>
>
> void DisplayPercent( int p )
> {
> int i;
> printf( "[" );
> for(i=0;i<=p;i+=2) printf( "*" );
> for ( ;i<=100; i+=2 ) printf( "-" );
> printf( "] %3d %%", p );
>
> for(i=0;i<59;++i) printf( "%c", 8 );
>
> fflush(stdout );
>
> }main()
> {
> int p;
>
> for(p=0<=100;++p)
> {
> DisplayPercent( p );
> usleep(100000);
> }
> printf( "\n" );
>
> }


  Réponse avec citation
Vieux 26/01/2007, 21h48   #4
Harpo
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

n@pster wrote:

> Je n'ai pas besoin que ce soit ultra portable, et ce que tu as fais me
> conviendrais très bien sauf que je suis obligé d'utiliser ncuses pour
> mettre en oeuvre cette fonction (c'est imposé dans le projet).


Rajoute #include <ncurses.h> en tête du source comme ça tu es sûr de
pouvoir dire que tu utilises ncurses.

> Et puis ta méthode ne permet pas d'afficher le traitement des fichiers
> en même temps que le pourcentage en bas de la console.


Les pages man de ncurses ne valent pas grand chose pour apprendre,
essaie:
http://www.faqs.org/docs/Linux-HOWTO...ing-HOWTO.html

--
Page maison : http://patrick.davalan.free.fr/
Propositions sur Usenet-fr : http://www.alea.net/usenet/fr/etat/
Comment voter : http://www.alea.net/usenet/fr/fur/minis-faqs/vote.php
  Réponse avec citation
Vieux 27/01/2007, 15h44   #5
n@pster
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

> Les pages man de ncurses ne valent pas grand chose pour apprendre,
> essaie:
> http://www.faqs.org/docs/Linux-HOWTO...ing-HOWTO.html


Ouais, mais j'ai beau lire ces pages, compiler des exemples etc.. je
pense avoir un peut près compris le fonctionnement global, mais je ne
sais même pas si ce que je veux faire est possible.
En tout cas, je vois pas comment, c'est pour ça que je poste ici, des
fois qu'un gars aurais déjà tenté des choses similaires ou qu'il
saurait comment s'y prendre...

  Réponse avec citation
Vieux 27/01/2007, 15h45   #6
n@pster
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

> Les pages man de ncurses ne valent pas grand chose pour apprendre,
> essaie:
> http://www.faqs.org/docs/Linux-HOWTO...ing-HOWTO.html


Ouais, mais j'ai beau lire ces pages, compiler des exemples etc.. je
pense avoir un peut près compris le fonctionnement global, mais je ne
sais même pas si ce que je veux faire est possible.
En tout cas, je vois pas comment, c'est pour ça que je poste ici, des
fois qu'un gars aurais déjà tenté des choses similaires ou qu'il
saurait comment s'y prendre...

  Réponse avec citation
Vieux 27/01/2007, 16h33   #7
ALain Montfranc
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

n@pster a écrit
>> Les pages man de ncurses ne valent pas grand chose pour apprendre,
>> essaie:
>> http://www.faqs.org/docs/Linux-HOWTO...ing-HOWTO.html

>
> Ouais, mais j'ai beau lire ces pages, compiler des exemples etc.. je
> pense avoir un peut près compris le fonctionnement global, mais je ne
> sais même pas si ce que je veux faire est possible.
> En tout cas, je vois pas comment, c'est pour ça que je poste ici, des
> fois qu'un gars aurais déjà tenté des choses similaires ou qu'il
> saurait comment s'y prendre...


C'est pas dur, tu positionne le curseur là ou tu veux ecrire et tu
ecrits ;-)

Pour effacer tu affiches des espaces


  Réponse avec citation
Vieux 27/01/2007, 16h41   #8
Harpo
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

n@pster wrote:

>> Les pages man de ncurses ne valent pas grand chose pour apprendre,
>> essaie:
>> http://www.faqs.org/docs/Linux-HOWTO...ing-HOWTO.html

>
> Ouais, mais j'ai beau lire ces pages, compiler des exemples etc.. je
> pense avoir un peut près compris le fonctionnement global, mais je ne
> sais même pas si ce que je veux faire est possible.


C'est certainement possible, la preuve : d'autres le font.

En fait, si j'ai bien compris, il s'agit de placer un asterisque à 1
certain endroit de l'écran en augmentant l'abscisse à chaque fois et de
placer un nom de fichier à un endroit absolu. ncurses peut le faire
mais mes souvenirs sont au mieux confus.

Ce que je ferais maintenant si je devais le faire, c'est regarder la doc
de ncurses bien sûr mais aussi de regarder des sources de programmes
qui le font, tu parlais de apt-get dans ton post d'origine, je ne suis
pas sûr qu'il utilise ncurses mais c'est possible. sinon il y a dialog,
il utilise certainement ncurses, regarder les sources pourrait être
instructif.

--
NOUVELLE proposition pour USENET-FR :
AAD1 : news:87veixwh16.fsf@u2.shayol.org
BILAN1 : news:45bb70d0$0$2381$426a74cc@news.free.fr
  Réponse avec citation
Vieux 27/01/2007, 16h47   #9
n@pster
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

> Les pages man de ncurses ne valent pas grand chose pour apprendre,
> essaie:
> http://www.faqs.org/docs/Linux-HOWTO...ing-HOWTO.html


Ouais, mais j'ai beau lire ces pages, compiler des exemples etc.. je
pense avoir un peut près compris le fonctionnement global, mais je ne
sais même pas si ce que je veux faire est possible.
En tout cas, je vois pas comment, c'est pour ça que je poste ici, des
fois qu'un gars aurais déjà tenté des choses similaires ou qu'il
saurait comment s'y prendre...

  Réponse avec citation
Vieux 27/01/2007, 16h48   #10
n@pster
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

> Les pages man de ncurses ne valent pas grand chose pour apprendre,
> essaie:
> http://www.faqs.org/docs/Linux-HOWTO...ing-HOWTO.html


Ouais, mais j'ai beau lire ces pages, compiler des exemples etc.. je
pense avoir un peut près compris le fonctionnement global, mais je ne
sais même pas si ce que je veux faire est possible.
En tout cas, je vois pas comment, c'est pour ça que je poste ici, des
fois qu'un gars aurais déjà tenté des choses similaires ou qu'il
saurait comment s'y prendre...

  Réponse avec citation
Vieux 27/01/2007, 19h11   #11
Michel Talon
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

n@pster <fabien.morin@gmail.com> wrote:
> > Les pages man de ncurses ne valent pas grand chose pour apprendre,
> > essaie:
> > http://www.faqs.org/docs/Linux-HOWTO...ing-HOWTO.html

>
> Ouais, mais j'ai beau lire ces pages, compiler des exemples etc.. je
> pense avoir un peut près compris le fonctionnement global, mais je ne
> sais même pas si ce que je veux faire est possible.
> En tout cas, je vois pas comment, c'est pour ça que je poste ici, des
> fois qu'un gars aurais déjà tenté des choses similaires ou qu'il
> saurait comment s'y prendre...
>


A tout hasard, avant de faire un monstre en C, tu devrais regarder si tu
peux faire ton truc en python, en 10 fois moins de lignes et de temps.
Il y a un bon support de curses, et en outre si tu veux des choses plus
compliquées tu peux aller voir du coté de la librairie urwid
http://excess.org/urwid/
Regardes en particulier
http://excess.org/urwid/examples.html
tu verras si ça t'impressionne ou pas. Question documentation tu as un
howto de Eric Raymond soi même:
http://www.amk.ca/python/howto/curses/
A mon humble avis, à moins d'avoir le couteau sous la gorge pour le faire
en C, c'est la meilleure solution.

--

Michel TALON

  Réponse avec citation
Vieux 27/01/2007, 19h20   #12
Michel Talon
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

Harpo <invalid@invalid.invalid> wrote:
> Ce que je ferais maintenant si je devais le faire, c'est regarder la doc
> de ncurses bien sûr mais aussi de regarder des sources de programmes
> qui le font, tu parlais de apt-get dans ton post d'origine, je ne suis
> pas sûr qu'il utilise ncurses mais c'est possible. sinon il y a dialog,
> il utilise certainement ncurses, regarder les sources pourrait être
> instructif.
>


Un exemple qui réalise ce genre de choses trés simplement:le programme
fdformat sous FreeBSD, écrit des F, V, ou E au fur et à mesure de la
progression du formattage. Voici comment il fait:
if(!quiet && !((track + 1) % tracks_per_dot)) {
putchar('F');
fflush(stdout);
}

if(!quiet && !((track + 1) % tracks_per_dot)) {
if (!verify_only)
putchar('\b'); <--- ce qui fait que ça marche
if (error) {
putchar('E');
error = 0;
}
else
putchar('V');
fflush(stdout);
}



--

Michel TALON

  Réponse avec citation
Vieux 28/01/2007, 06h58   #13
Harpo
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

Michel Talon wrote:

> tu verras si ça t'impressionne ou pas. Question documentation tu as un
> howto de Eric Raymond soi même:
> http://www.amk.ca/python/howto/curses/
> A mon humble avis, à moins d'avoir le couteau sous la gorge pour le
> faire en C, c'est la meilleure solution.


Je crois qu'il a le couteau sous la gorge.
Son programme doit copier des tas de fichiers, c'est peut-être pour une
installation de distribution alors qu'il n'y a qu'un système minimal.
Ou alors c'est un exercice d'étudiant.
Ou bien le chef ne veut que du C.

Sinon, je ne vois pas pourquoi faire ça en C...

--
NOUVELLE proposition pour USENET-FR :
AAD1 : news:87veixwh16.fsf@u2.shayol.org
BILAN1 : news:45bb70d0$0$2381$426a74cc@news.free.fr
  Réponse avec citation
Vieux 28/01/2007, 07h03   #14
Harpo
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

Michel Talon wrote:

> Un exemple qui réalise ce genre de choses trés simplement:le programme
> fdformat sous FreeBSD, écrit des F, V, ou E au fur et à mesure de la
> progression du formattage. Voici comment il fait:
> if(!quiet && !((track + 1) % tracks_per_dot)) {
> putchar('F');
> fflush(stdout);
> }
>
> if(!quiet && !((track + 1) % tracks_per_dot)) {
> if (!verify_only)
> putchar('\b'); <--- ce qui fait que ça marche
> if (error) {
> putchar('E');
> error = 0;
> }
> else
> putchar('V');
> fflush(stdout);
> }


L'algo m'a l'air tout à fait bon, Il veut en plus afficher sur une ligne
fixe de l'écran et afficher le %age à droite, mais l'algo peut être
repris en changeant au niveau des putchar ds appels à ncurses.

--
NOUVELLE proposition pour USENET-FR :
AAD1 : news:87veixwh16.fsf@u2.shayol.org
BILAN1 : news:45bb70d0$0$2381$426a74cc@news.free.fr
  Réponse avec citation
Vieux 28/01/2007, 16h56   #15
n@pster
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

C'est en effet un exercice d'étudiant !
Je dois donc respecter les contraintes, même si il y a plus simple.
Mais ça y est, j'ai réussi à me dépatouiller avec ncurses (je suis en
train en fait ).
Le but du programme était de retager tous les mp3 d'un repertoire et
d'afficher la progression.
Mais on est obligé de mettre des usleep parce que même pour 300 mp3,
c'est quasiment instantanés.

Si ça intéresse quelqu'un je pourrais vous donner notre code, on le
met sous GPL.

Sinon, j'essairai de vous donner notre solution pour répondre au
problème en utilisant ncurses dès que j'aurais terminé.

  Réponse avec citation
Vieux 28/01/2007, 17h47   #16
Harpo
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: utiliser ncurses pour afficher une barre de progression

n@pster wrote:

> Sinon, j'essairai de vous donner notre solution pour répondre au
> problème en utilisant ncurses dès que j'aurais terminé.


Suivant qu'il s'agit de pb C ou non on pourra aller sur fclc.

--
NOUVELLE proposition pour USENET-FR :
AAD1 : news:87veixwh16.fsf@u2.shayol.org
BILAN1 : news:45bb70d0$0$2381$426a74cc@news.free.fr
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 04h31.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,27117 seconds with 24 queries