Forum Programmation.c [Débutant] Compilation gnuplot

Posté par  . Licence CC By‑SA.
Étiquettes :
0
22
mai
2015

Bonjour,

Tout d'abord je tiens à vous présenter mes excuses pour mon niveau très bas en programmation.

Je viens de découvrir le C depuis une semaine dans le cadre d'un stage.
Mon tuteur, qui travaille sur Windows, veut que je visualiser une partie d'un programme écrit en C sous Visual C++ Express, en utilisant Gnuplot. Visiblement sous Windows, il suffit de compiler et exécuter le programme, de cliquer sur le fichier .plt pour qu'il s'exécute et ouvrir le fichier dans GhostScript Viewer. Voici mes questions:

1) Quel est l'équivalent de GhostScript Viewer sur Linux? Je dois dire que je ne connaissait pas du tout les fichier .Eps et cie jusqu'à aujourd'hui.

2) Tout simplement: Comment dois-je exécuter mon fichier .plt pour qu'il prenne en compte le fait que j'ai compilé/exécuté mon programme en C, et comment puis-je le visualiser?
Edit: Okay, je compile et exécute mon programme sous Code Blocks, j'ouvre un terminal, me place dans le dossier où se trouve mes fichiers, et je tape la commande plot 'monfichier.plt'. J'obtiens les erreurs suivantes:

# PLOT 1
plot: an unrecognized command 0xd' was encountered in the input
plot: the input file
ZVC.plt' could not be parsed

J'utilise Code Blocks pour coder. Je suis sous Ubuntu 14.04.

En vous remerciant pour votre lecture,

Bonne journée,

Kochflakes

  • # decouper le probleme pour le comprendre

    Posté par  . Évalué à 2.

    1°) tu as un programme developpé en C (peut-etre pour windows) qui genere un fichier de sortie .plt

    il faut deja verifier que ce programme peut se compiler et se lancer sous windows pour generer le fichier .plt
    qui sera lisible par le lecteur habituel sous windows (via gnuplot)

    2°) tu peux/dois verifier que le fichier .plt genéré sous windows soit bien lisible sous linux (via gnuplot)

    3°) visiblement ton gnuplot prend le fichier .plt pour en faire un fichier postscript (.ps)
    et c'est pour cela que ton tuteur utilise ghostscript pour le visionner.

    finalement, tu as de la chance, ton tuteur, meme s'il est sous windows, utilise des outils GNU.
    - gnuplot (dispo sous linux aussi)
    - ghostscript (dispo sous linux aussi)

    il ne te reste donc plus que la problematique de compiler le projet avec codeblock ou l'IDE de ton choix, à partir du code source du projet VisualC++

    • [^] # Re: decouper le probleme pour le comprendre

      Posté par  . Évalué à 1.

      Hello,

      finalement, tu as de la chance, ton tuteur, meme s'il est sous windows, utilise des outils GNU.

      Pas si sûr. Devoir travailler dans un environnement que son tuteur ne connais pas, ça peut vite deveir gênant. Il ne s'agit pas que d'un "simple" travail exploratoire d'une bibliothèque, d'un outil, qui même si pas connus du tuteur peut être conduit de manière guidée. Là, j'ai plus l'impression que le tutoré est complètement laissé à lui même (parce qu'un gnuplot qui ne lirait pas un fichier généré sous windows, ça me semble louche, à la base).

      Matricule 23415

  • # (bug de ma part)

    Posté par  (site web personnel) . Évalué à 2. Dernière modification le 22 mai 2015 à 20:16.

    (zip au temps pour moi)

    Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

  • # Fin de ligne ?

    Posté par  (site web personnel) . Évalué à 1.

    Hypothèse : le code source issu de Visual C++ comporte des caractères littéraux encodés en cp1252 ou autre encodage windowsien.
    Lors de la compilation sous GNU-Linux, ces caractères sont scrupuleusement recopiés dans l'exécutable, qui lui même les insère dans le fichier plt produit.
    Je suggère donc de chercher dans le fichier plt (en l'ouvrant avec un éditeur de texte) où se trouve ce caractère 0xd (qui semble être un retour chariot, on est donc peut-être bien dans un problème de différence de fin de ligne), ce qui permettra peut-être d'identifier quelle partie du code source en est à l'origine, et de corriger.
    Bon, c'est peut-être pas du tout ça, hein, mais ça vaut le coup d'essayer.

  • # Erreurs suivantes

    Posté par  . Évalué à 1. Dernière modification le 23 mai 2015 à 14:14.

    Bonjour,

    Merci pour vos réponses.

    @Neox: 1) Visiblement lorsque mon tuteur compilait sous Windows, tout fonctionnait correctement.
    2) C'est justement là mon problème, je n'arrive pas à lancer le fichier .plt et visualiser la courbe cherchée.
    3)Je vais installer GhostScript et essayer de voir un peu comment me dépatouiller.

    @ kaos: C'est en effet le cas. D'un point de vue purement ethnocentré, je partait du principe que le monde universitaire fonctionnait tous sur Linux (comme c'est le cas en France en sciences). Sauf qu'en Espagne, ce n'est pas le cas (c'est même voire l'inverse.) Du coup mon tuteur n'a visiblement pas une bonne connaissance de Linux (je dirais: la même que la mienne, à savoir, très basse…).

    @audionuma: J'ai essayé d'encoder le fichier .plt en UTF-8, je crois que j'ai réussi. Désormais je rencontre les erreurs suivantes:

    Sachant que le fichier est le suivant:

    set term epslatex size 15cm, 15cm
    set output "ZVC.tex"
    set xrange[-2.0:2.0]
    set yrange[-2.0:2.0]
    plot "ZVC1.out" u 1:2 w l lc rgb "#000000" notitle, "ZVC2.out" u 1:2 w l lc rgb "#000000" notitle

    set output
    set terminal

    Originellement, mon tuteur avait écrit "set term", que gnuplot ne comprenait visiblement pas.

    Si j'effectue la commande suivante:

    $ plot 'ZVC.plt'
    #PLOT 1
    plot: an unrecognized command 0xd' was encountered in the input
    plot: the input file
    ZVC.plt' could not be parsed

    et l'autre:

    plot 'ZVC.plt'
    #PLOT 1
    plot: an unrecognized command 0xd' was encountered in the input
    plot: the input file
    ZVC.plt' could not be parsed
    oxliserose@ordinateur:~/ENSRennes/Practica BCN 2015/Code MhI/RungeKutta4/RTBP$ gnuplot 'ZVC.plt'
    "ZVC.plt", line 6: warning: Skipping data file with no valid points

    Available terminal types:
    cairolatex LaTeX picture environment using graphicx package and Cairo backend
    canvas HTML Canvas object
    cgm Computer Graphics Metafile
    context ConTeXt with MetaFun (for PDF documents)
    corel EPS format for CorelDRAW
    dumb ascii art for anything that prints text
    dxf dxf-file for AutoCad (default size 120x80)
    eepic EEPIC—extended LaTeX picture environment
    emf Enhanced Metafile format
    emtex LaTeX picture environment with emTeX specials
    epscairo eps terminal based on cairo
    epslatex LaTeX picture environment using graphicx package
    fig FIG graphics language for XFIG graphics editor
    gif GIF images using libgd and TrueType fonts
    gpic GPIC—Produce graphs in groff using the gpic preprocessor
    hp2623A HP2623A and maybe others
    hp2648 HP2648 and HP2647
    hpgl HP7475 and relatives [number of pens] [eject]
    imagen Imagen laser printer
    jpeg JPEG images using libgd and TrueType fonts
    latex LaTeX picture environment
    Press return for more:

    Merci pour votre aide, avec un peu de chance, ce n'est qu'un petit problème!

    • [^] # Re: Erreurs suivantes

      Posté par  (site web personnel) . Évalué à 3.

      Comme déjà dit, gnuplot et ghostscript sont dans toutes les distribs linux. Un rpm -i xxx ou un apt-get install xxx en étant root devrait faire l'affaire pour les installer (sinon passer par le gestionnaire graphique de paquets - ou installeur d'application).

      Pour ton erreur 0xd. Une possibilité de cause:

      • sous Windows (et MS-DOS précédemment), les fin de ligne sont composés de 2 caractères CR+LF (codes 0x0d et 0x0a ou encore "\r\n" dans beaucoup de langages de programmation).

      • sous Unix (et repris par Linux), les fin de ligne sont composées d'un seul caractère LF (code 0x0a ou encore "\n").

      Si tu reprends tel quel le script de ton tuteur en le transférant, il est probable qu'il vienne en mode fin de ligne MS-DOS, et que gnuplot ne comprenne pas le CR surnuméraire.

      Deux solutions:

      • l'ouvrir avec un éditeur de texte et l'enregistrer en spécifiant bien "fin de ligne Unix".

      • utiliser un outil de conversion comme dos2unix (qui est aussi dispo dans les packages Linux sur toutes les distribs).

      Note que si tu as des fichiers de donnée sous forme de texte, provenant du monde Windows, il est probable qu'ils souffrent du même défaut qui les empêche d'être lus par gnuplot (que tu peux résoudre avec la même solution)

      Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

      • [^] # Re: Erreurs suivantes

        Posté par  . Évalué à 1.

        Merci lolop, pour ces conseils.

        J'ai réenregistré tous les fichiers potentiellement lié s au fichier .plt en changeant leurs fins de ligne, et de même pour le fichier .plt.

        Le plot ne marche toujours pas.

        J'ai installé dos2unix, essayé dos2unix 'monfichier.pt', ou encore dos2unix 'monfichier.txt' en ayant changé le fichier en .txt.
        Au bout de 20 minutes, dos2unix n'a toujours pas converti le fichier.

        En tous les cas maintenant, ce n'est plus 0xd, mais 0xa…

        #PLOT 1
        plot: an unrecognized command 0xa' was encountered in the input
        plot: the input file
        ZVC.plt' could not be parsed

        Je revois mon tuteur lundi, avec un peu de chances quelqu'un de son entourage pourra nous aider aussi. En attendant, merci pour votre aide,j'y vois au moins plus clair dans ce qui potentiellement pose problème!

  • # Problème résolu

    Posté par  . Évalué à 1.

    Bonjour,

    Alors, visiblement, quelques réponses bêtes:

    Je ne me plaçait pas dans le bon répertoire pour exécuter mes commandes.

    Un peu moins facile:

    J'étais (tout simplement) en train de coder en C, alors que j'aurais dû utiliser un langage c++.
    Par ailleurs je n'utilisais pas la bonne commande. Il fallait utiliser load 'Monfichier.plt' et non gnuplot 'Monfichier.plt' ou plot 'Monfichier.plt'.

    Merci pour votre aide, et bonne journée.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.