Aide sur l'execution d'un code en perl

Aide sur l'execution d'un code en perl - Perl - Programmation

Marsh Posté le 01-11-2010 à 10:10:28    

BOnjour à tous,
J'aurais besoin de votre aide pour tenter de faire fonctionner et comprendre un script écrit en perl. Il permet de générer des screenshot d'écrans LCD en .gif. Seulement il doit y avoir des choses à faire passer en arguments dans des fonctions ou bien peut être avoir des bibliothèques, le fait est qu'il me met toujours la même erreur lorsque je l'execute sur mon Mac.
 
Pourriez-vous m'aider ?
voici le code en question :
http://www.ucapps.de/midibox_seq/gen_mbseqv4_screens
 
merci à vous.

Reply

Marsh Posté le 01-11-2010 à 10:10:28   

Reply

Marsh Posté le 01-11-2010 à 11:44:25    

Si on met ceci à la fin en commentaire:

Code :
  1. if( $convert_gif )
  2.   {
  3.      # system("convert ${output_file}.xpm ${output_file}.gif" ) && die ("convert failed!\n" );
  4.      # system("rm ${output_file}.xpm" );
  5.   }


Ca crée (il faut avoir créé un répertoire cs4 a l'endroit du script) ceci:

Citation :

Writing 'cs4/tmp_layers.xpm'...
Writing 'cs4/session_main.xpm'...
Writing 'cs4/session_open.xpm'...
Writing 'cs4/session_saveas.xpm'...
Writing 'cs4/session_new.xpm'...
Writing 'cs4/session_exist.xpm'...
Writing 'cs4/edit1.xpm'...
Writing 'cs4/edit2.xpm'...
Writing 'cs4/edit3.xpm'...
Writing 'cs4/edit4.xpm'...
Writing 'cs4/edit5.xpm'...
Writing 'cs4/edit6.xpm'...
Writing 'cs4/edit7.xpm'...
Writing 'cs4/edit8.xpm'...
Writing 'cs4/edit9.xpm'...
Writing 'cs4/edit10.xpm'...
Writing 'cs4/edit11.xpm'...
Writing 'cs4/edit12.xpm'...
Writing 'cs4/edit_d1.xpm'...
Writing 'cs4/edit_d2.xpm'...
Writing 'cs4/edit_d3.xpm'...
Writing 'cs4/trksel1.xpm'...
Writing 'cs4/parsel1.xpm'...
Writing 'cs4/trgsel1.xpm'...
Writing 'cs4/stepsel1.xpm'...
Writing 'cs4/trkevent1.xpm'...
Writing 'cs4/trkevent2.xpm'...
Writing 'cs4/trkevent3.xpm'...
Writing 'cs4/trkevent4.xpm'...
Writing 'cs4/trkevent5.xpm'...
Writing 'cs4/trkmode1.xpm'...
Writing 'cs4/trkdir1.xpm'...
Writing 'cs4/trkdir2.xpm'...
Writing 'cs4/trkdiv1.xpm'...
Writing 'cs4/trklen1.xpm'...
Writing 'cs4/trktran1.xpm'...
Writing 'cs4/trkgrv1.xpm'...
Writing 'cs4/trkgrv2.xpm'...
Writing 'cs4/trgasg1.xpm'...
Writing 'cs4/manualtrg1.xpm'...
Writing 'cs4/trkmorph1.xpm'...
Writing 'cs4/bpm1.xpm'...
Writing 'cs4/bpm2.xpm'...
Writing 'cs4/save1.xpm'...
Writing 'cs4/save2.xpm'...
Writing 'cs4/save3.xpm'...
Writing 'cs4/metronome1.xpm'...
Writing 'cs4/midi1.xpm'...
Writing 'cs4/midi2.xpm'...
Writing 'cs4/midi3.xpm'...
Writing 'cs4/midi4.xpm'...
Writing 'cs4/midi4_usb4.xpm'...
Writing 'cs4/midi5.xpm'...
Writing 'cs4/midi6.xpm'...
Writing 'cs4/record1.xpm'...
Writing 'cs4/util1.xpm'...
Writing 'cs4/mixer1.xpm'...
Writing 'cs4/mixer2.xpm'...
Writing 'cs4/opt1.xpm'...
Writing 'cs4/trkrnd1.xpm'...
Writing 'cs4/mute1.xpm'...
Writing 'cs4/mute2.xpm'...
Writing 'cs4/pattern1.xpm'...
Writing 'cs4/song1.xpm'...
Writing 'cs4/song2.xpm'...
Writing 'cs4/mute_01.xpm'...
Writing 'cs4/mute_02.xpm'...
Writing 'cs4/mute_03.xpm'...
Writing 'cs4/disk1.xpm'...
Writing 'cs4/disk_i1.xpm'...
Writing 'cs4/disk_p1.xpm'...
Writing 'cs4/disk_e1.xpm'...
Writing 'cs4/disk_e2.xpm'...
Writing 'cs4/disk_e3.xpm'...
Writing 'cs4/disk_e4.xpm'...
Writing 'cs4/pmute1.xpm'...
Writing 'cs4/fx_menu.xpm'...
Writing 'cs4/fx_echo.xpm'...
Writing 'cs4/fx_humanizer.xpm'...
Writing 'cs4/fx_limiter.xpm'...
Writing 'cs4/fx_lfo.xpm'...
Writing 'cs4/fx_loop.xpm'...
Writing 'cs4/fx_scale.xpm'...
Writing 'cs4/eth1.xpm'...
Writing 'cs4/cv1.xpm'...


system("convert ${output_file}.xpm ${output_file}.gif" )  
c'est un appel a un programme externe, convert. Si il est pas sur la bécane, le programme va pas aller plus loin  (c'est le cas sur mon PC).
Sinon, ça convertit tous les xpm en gif, et ça efface les gifs.
Les gifs obtenus, ça doit être des images utilisées par un programme, et ton script perl les génère toutes d'un coup (ce pourquoi il prend pas de paramètres)
system("rm ${output_file}.xpm" );
montre que le programme est écrit pour un environnement unix/linux vu que rm existe pas sous windows (et mac?).
Le code est de toute façon pas fini, car  if( $convert_gif ) dépend d'un flag $convert_gif qui est pas positionné par le programme et qui a une valeur au hasard (donc pas zéro).
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 01-11-2010 à 11:56:43    

Un des trucs répétitifs de ce code, c'est

Code :
  1. init_mb_screen(0);
  2. print_string(0, 0, "texte a ecrire en ligne 1" );
  3. print_string(0, 1, " texte a ecrire en ligne 2" );
  4. write_screen("nom du fichier" );


ca va écrire un fichier XPM contenant les textes donnés.
Donc c'est print_string qui fait le boulot d'écrire ça comme du LCD.
On voit que cette routine écrit lettre a lettre en découpant chaque lettre en 8 segments horizontaux empilés verticalement, et que chaque segment horizontal est constitué de 8 points (défini pour chaque lettre dans init_chars et init_mb_screen, si j'ai bien pigé [bon, j'ai pas été voir en détails])
A+,


Message édité par gilou le 01-11-2010 à 11:57:21

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 01-11-2010 à 18:18:50    

Hello et un grand merci !
j'ai fini par généré les .xpm. J'ai fini par trouver commnet générer le .png => http://www.imagemagick.org/script/ [...] php#macosx
j'ai tout mis dans le répertoire cible et ça a fonctionné !
Pour le flag, $convert_gif est semble t-il défini au tout début du programme... je l'ai positionné à 1 pour qu'il passe sur la routine de conversion.
 
Merci encore pour votre aide,
reste plus qu'à digérer tout ça pour faire mes propres screenshots et caractères spéciaux (je ne sais pas encore comment il a défini les caractères).


Message édité par houly75 le 01-11-2010 à 18:51:43
Reply

Marsh Posté le 01-11-2010 à 18:54:58    

Autre chose, savez-vous s'il existe un debugger pour exécuter pas à pas un script Perl ? ça m'aiderait à mieux débuter...

Reply

Marsh Posté le 01-11-2010 à 19:07:38    

Il faut lancer le script sous perl avec l'option -d  (debugger), pour le reste, voir la doc perl.
A+,


Message édité par gilou le 01-11-2010 à 19:08:27

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

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