Accueil > Forum > > > > Passer un code PERL en C++
Passer un code PERL en C++
mercredi 30 novembre 2005 à 11:19:44 |
Passer un code PERL en C++

gaspard83
|
Bonjour à tous,
J'ai trouvé un script Perl qui correspond à une recherche que je fais
depuis un certain temps : passer du morse sur les leds du clavier. Et
je voulais savoir comment passer ce script Perl en C++ ?
Avez-vous une idée ? Existe-t-il des converttisseurs ? Merci à tous :)
#!/usr/bin/perl -w
# # morsecat.pl # # Jacek Fedorynski <jfedor@jfedor.org> # http://www.jfedor.org/ # 2001-11-15 # # Displays a text file in Morse code using a LED on your keyboard. # # (as in the book Cryptonomicon by Neal Stephenson) # # If the DISPLAY environment variable is set we will use xset to control # the LED. If it's not set we will use setleds (which is probably very # Linux-specific). To make it work under X I had to change the InputDevice # section for the keyboard in /etc/X11/XF86Config-4 to look like this # (the side effect was that my xmodmap keyboard mappings stopped working): # # Section "InputDevice" # Identifier "Keyboard0" # Driver "keyboard" # Option "Xleds" "1 2 3" # Option "XkbDisable" # EndSection # # If you know a way to control keyboard LEDs (or other LEDs) on other platforms # please let me know. If you think there's something wrong with the Morse # code this program generates also let me know. # # Have fun! #
use strict;
my $UNIT_TIME = 0.12; # length of a single dot in seconds
my %code = ( 'A' => [0, 1], 'B' => [1, 0, 0, 0], 'C' => [1, 0, 1, 0], 'D' => [1, 0, 0], 'E' => [0], 'F' => [0, 0, 1, 0], 'G' => [1, 1, 0], 'H' => [0, 0, 0, 0], 'I' => [0, 0], 'J' => [0, 1, 1, 1], 'K' => [1, 0, 1], 'L' => [0, 1, 0, 0], 'M' => [1, 1], 'N' => [1, 0], 'O' => [1, 1, 1], 'P' => [0, 1, 1, 0], 'Q' => [1, 1, 0, 1], 'R' => [0, 1, 0], 'S' => [0, 0, 0], 'T' => [1], 'U' => [0, 0, 1], 'V' => [0, 0, 0, 1], 'W' => [0, 1, 1], 'X' => [1, 0, 0, 1], 'Y' => [1, 0, 1, 1], 'Z' => [1, 1, 0, 0], '0' => [1, 1, 1, 1, 1], '1' => [0, 1, 1, 1, 1], '2' => [0, 0, 1, 1, 1], '3' => [0, 0, 0, 1, 1], '4' => [0, 0, 0, 0, 1], '5' => [0, 0, 0, 0, 0], '6' => [1, 0, 0, 0, 0], '7' => [1, 1, 0, 0, 0], '8' => [1, 1, 1, 0, 0], '9' => [1, 1, 1, 1, 0], ' ' => [2] );
sub mysleep { my ($time) = @_; select(undef, undef, undef, $time); }
sub turn { my ($on) = (@_); if (defined $ENV{DISPLAY}) { system("xset ".($on ? "" : "-")."led 2"); } else { system("setleds -L ".($on ? "+" : "-")."num"); } }
my $buf;
my $filename = $ARGV[0] || "-";
open(INPUT, "< $filename") or die "cannot open input file";
while (sysread INPUT, $buf, 1) { if (defined $code{uc($buf)}) { for my $i (@{$code{uc $buf}}) { turn(1) unless $i == 2; if ($i == 0) { mysleep($UNIT_TIME); # dot } elsif ($i == 1) { mysleep($UNIT_TIME * 3); # dash } elsif ($i == 2) { mysleep($UNIT_TIME * 3); # word space } turn(0); mysleep($UNIT_TIME); } mysleep($UNIT_TIME * 2); # letter space } }
|
|
mercredi 30 novembre 2005 à 12:58:14 |
Re : Passer un code PERL en C++

ymca2003
|
Réponse acceptée !
#include <windows.h> #include <stdio.h> #include <stdlib.h> #include <string.h>
struct DATA { char c; char* str; };
DATA aData[] = { {'A', "01"}, {'B', "1000"}, {'C', "1010"}, {'D', "100"}, {'E', "0"}, {'F', "0010"}, {'G', "110"}, {'H', "0000"}, {'I', "00"}, {'J', "0111"}, {'K', "101"}, {'L', "0100"}, {'M', "11"}, {'N', "10"}, {'O', "111"}, {'P', "0110"}, {'Q', "1101"}, {'R', "010"}, {'S', "000"}, {'T', "1"}, {'U', "001"}, {'V', "0001"}, {'W', "011"}, {'X', "1001"}, {'Y', "1011"}, {'Z', "1100"}, {'0', "11111"}, {'1', "01111"}, {'2', "00111"}, {'3', "00011"}, {'4', "00001"}, {'5', "00000"}, {'6', "10000"}, {'7', "11000"}, {'8', "11100"}, {'9', "11110"}, };
#define SLEEP_TIME 120
void led(int on) { }
int main(int argc, char* argv[]) { if(argc != 2) { printf("No input file\n"); return 0; }
FILE* f = fopen(argv[1], "rt"); if(f == NULL) { printf("Unable to open input file\n"); return 0; } led(0);
while(!feof(f)) { char c = fgetc(f); if(c == ' ' || c == '\r' || c == '\n') { // word break led(0); Sleep(3*SLEEP_TIME); } else { for(int i = 0; i < sizeof(aData)/sizeof(aData[0]); i++) { if(aData[i].c == toupper(c)) { int len = strlen(aData[i].str); for(int j = 0; j < len; j++) { led(1); if(aData[i].str[j] == '0') Sleep(SLEEP_TIME); // Dot else Sleep(3*SLEEP_TIME); // Dash
led(0); Sleep(SLEEP_TIME); } } } }
// letter break led(0); Sleep(2*SLEEP_TIME); }
fclose(f); return 0; }
Pas testé mais doit donner un truc du genre Il manque le code pour allumer les Leds (doit se trouver et dépend bien sur de la plateforme)
|
|
mercredi 30 novembre 2005 à 13:27:09 |
Re : Passer un code PERL en C++

gaspard83
|
Merci ! Je vais tester et combiner ça avec mes bouts de code en leds... à bientôt !
|
|
Cette discussion est classée dans : code, time, my, unit, mysleep
Répondre à ce message
Sujets en rapport avec ce message
Initialisation de structure [ par goutbouyo ]
Salut,J'ai une structure temps:struct temps { float time, elapsedTime, lastTime;};Je l'itinialise :<table border=0 cel
Difference [ par xionoxid ]
C'est koi la difference entre time (0) et time (NULL) les 2 font des nbr aleatoire !??#include #include #i
débuter en gtk+ [ par fgh39 ]
Bonjour Je débute le language GTK+ avec code:block. Je recherche a afficher des nombres qui s'incrémentes ou décrémentes a partir d'un boucle while.
Socket avec Time out sous windows [ par ghanmi04_05 ]
Bonjour, J'ai un programme qui intercept les paquets sur une ip(de l'une de mes cartes réseaux) sous windows. [code=cpp] SOCKET sock; if((sock = s
time() compile avec g++ mais pas avec code blocks (windows) [ par hacker_mt ]
Bonjour tout le monde, j'ai fait une classe en C++ qui utilise les fonction srand et time pour générer un nombre aléatoire dans une des méthodes de la
trop de changements sur un Form = plantage (Borlandc++Builder) [ par claudiusenshortus ]
Bonjour, Je suis de retour sur le forum avec une nouvelle question. Mon problème: En c++ avec Borland C++ Builder 6.0, j'utilise des Forms et des th
Définition et utilisation de structures dans plusieurs fichiers sources [ par bvincent84 ]
Bonjour à tous, J'ai toujours du mal à utiliser les structures, en plus je voudrais les définir dans un .c et les utiliser aussi dans un autre (exter
invalid application of 'sizeof' to incomplete type 'struct pam_handle' [ par razuki ]
Bonjour, j'ai le message d'erreur suivante à la compilation : invalid application of 'sizeof' to incomplete type 'struct pam_handle' dans mon fichier
Directx 9 - Jouer un son [ par mohdaef ]
Bonjour Je débute dans l'utilisation de directX et je souhaiterai arriver à jouer une musique grace à directMusic ainsi que des sons, seulement aucun
traduit pascal code en c code aide [ par zilot2 ]
Bonjour,et pardonnez mon francais j'ai un code source en pascal et j'ai pas reusii a le traduire en c si quelq'un peut m'aide Program patch; //juste p
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : CXIMAGERE : CXIMAGE par rt15
Cliquez pour lire la suite par rt15
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|