Morse pour MacOS
Bonsoir bonsoir !
Je vous présente une petite application que je dois réaliser pour mon école et à rendre en juin. Notre groupe devait réaliser une application permettant de coder du texte en morse et vice-vers-ca. On peut écrire directement ou charger un fichier .txt.
Je vous laisse découvrir l'application et me donner vos idées et/ou commentaires pour améliorer. Je planche déjà sur le problème des bips que l'on ne peut pas arrêter en cours
.
Si vous voulez en voir un peu plus sur le projet : Le site du projet .
L'application Morse
Merci !
p.s: oui le morse est mort mais c'est le sujet proposé ^^
Je vous présente une petite application que je dois réaliser pour mon école et à rendre en juin. Notre groupe devait réaliser une application permettant de coder du texte en morse et vice-vers-ca. On peut écrire directement ou charger un fichier .txt.
Je vous laisse découvrir l'application et me donner vos idées et/ou commentaires pour améliorer. Je planche déjà sur le problème des bips que l'on ne peut pas arrêter en cours

Si vous voulez en voir un peu plus sur le projet : Le site du projet .
L'application Morse
Merci !

p.s: oui le morse est mort mais c'est le sujet proposé ^^
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
C'est un moyen de transmission qui passe dans les pires conditions atmosphériques et qui n'a besoin que d'un émetteur radio très simple avec une modulation des plus sommaire!
Bon, j'ai jeté un oe“il au programme et au projet.
Le projet, tel qu'il est décrit sur le site n'indique pas les formes de réception/émission du morse: audio? texte en point tiret? autre?
Pour le programme lui-même, je trouve les '/' peu adaptés à la séparation des caractères: trop d'impact visuel. Je pense qu'il faudrait permettre de régler la taille des caractères dans la fenêtre du morse car les points traits sont vraiment petits.
Sur mon G4, le clic sur "BIP" bloque le programme et ne sort aucun son.
Et je signe: _ ._ _... ._.. .. . ._.
Je vais essayer mettre l'espace alors plutôt que des / et une option d'affichage.
Pour les sons, j'ai des soucis, en effet ca bloque bien le programme. Par contre les sons marchent normalement.
Regarde cette adresse: http://radioamateur.f1rfn.online.fr/jcm_divers3.htm#%A74cm
Tablier et ceetix s'écrirait:
_ ._ _... ._.. .. . ._. / . _ / _._. . . _ .. _.._
Une autre solution serait de créer une fonte spécifique (à largeur variable) et de ne mettre un espace qu'entre les mots. Je sais que cela s'est déjà fait, mais je ne trouve plus ou !
je te confirme que sur mon PowerBook G4 je n'ai aucun son.
Je le ferai dans les jours à venir car on a une reunion avec notre prof suiveur demain et j'ai pas envie de refaire iphone,mac, C# et flash:) mais c'est clair que c'est mieux.
Apres pour le son c'est bizar, ce sont des .aif mais normalement quand on release ça met tout dedans non?
Sinon pour améliorer le truc, apres le code par souris on pensait faire avec juste la touche espace en fonction du temps d'appuie sur celle-ci.
C'est peu lisible comme ça... En général on utilise plutôt un "/" entre les lettres et deux "//" entre les mots.
s o s donne : .../_/---/_/.../
Pou info, si cela n'a pas changé, le SOS se lance en continu et sans interruption, c'est à dire que l'on envoie: SOSOSOSOSOSOSOSO..........san fin car ça urge!
ce qui à l'oreille fait ti ti ti ta ta ta ti ti ti ta ta ta ti ti ti ta ta ta ..... etc
Pour la fonte que je préconisais, comme les caractères peuvent être de n'importe quelle largeur il suffit d'ajouter un / ou un | à la fin du dessin de chaque caractère et le tour est joué. Il reste à ajouter un / ou un | supplémentaire entre chaque mot. J'ai essayer de faire des caractères avec FonteForge et InkScape. Assez facile et surtout gratuit!
Tablier et ceetix s'écrirait alors:
_/._/_.../._../.././._.//./_ //_._./././_/../_.._//
ou bien
_|._|_...|._..|..|.|._.||.|_||_._.|.|.|_|..|_.._|| ce que je préferrai presque!
télécharger à : http://tavmjong.free.fr/INKSCAPE/
FonteForge est un éditeur de fontes de bon niveau et libre également.
télécharger à : http://fontforge.sourceforge.net/
Dans le tutorial de FonteForge tout les explications existent pour le création de fontes ou pour la re-édition de fontes existantes.
Pour essai, jai créé une nouvelle fonte, dessiné un caractère Morse dans Inkscape et introduit ce caractère dans la fonte. La seule précaution que j'ai pris est d'avoir créé un dessin-modèle séparé qui ne contient qu'un point, un trait, et une barre de séparation. Pour chaque caractère morse, je crée un nouveau dessin et je Copie/colle les points/traits depuis le modèle ce qui me gagne du temps car cela m'évite de re-dessiné.
Mon avis: Ces programmes sont bons, avec comme bémol qu'ils ne sont pas nativement Mac et que les Aides ne sont pas incluses dans les logiciels (donc pour lire les explications il faut être connecté. C'est correct pour un poste fixe, pas pour un mobile)
En ce qui concerne la fonte "morse", j'en ai fait une "pour voir". Voir le dossier joint et les explications à l'intérieur. Après installation (livre des polices), ça marche assez bien dans TextEdit.
Bon je j'up ce post car je m'arrache les cheveux sur un bug de mon application, à savoir jouer des bips.
En effet j'émets des sons plus ou moin long en fonction du code.
Le problème c'est que quand je commence à jouer je suis obligé d'attendre la fin pour que mon programme réponde enfin à mes actions. Or j'aimerai mettre une action stop, qui stop les sons en pleine lecture.
Je n'y arrive pas.
Voici mon code :
Classe SoundEffect
.h
.m
Classe où j'utilise les sons avec le code
.h
.m
J'aimerai qu'en appuyant sur un bouton "Stop" tout s'arrête ...
Merci pour votre aide !
Juste de ma classe principale.
.h
.m
J'arrive donc bien à stopper les sons quand j'appuis sur mon bouton "stop" mais les sons se jouent trop rapidement ce qui fait qu'on n'entend que le dernier. J'aimerai entendre chaque son et qu'une fois que celui-ci à fini de se jouer, le suivant se joue etc... Il faut passer par un NSTimer non? Mais je vois pas comment agencer tout ça.
Un peu de lecture...
http://developer.apple.com/DOCUMENTATION/Cocoa/Conceptual/CocoaFundamentals/AddingBehaviortoaCocoaProgram/chapter_4_section_6.html
" Cocoa par la pratique ", ça pourrait être un bon investissement aussi pour apprendre comment la mémoire et les threads fonctionnent
C'est un truc génial mais qui a pas mal de contraintes au niveau de la gestion de la mémoire, donc il faut connaà®tre tout ça sur le bout des doigts (NSThread, NSLock, @synchronized...)
Je vais regarder ta doc mais il n'y a pas un moyen de faire avec un NSTimer?
EDIT : Merci pour ton explication, hum sur le bout des doigts ... c'est pas gagné.
Avec Cocoa par exemple, il faut savoir que certains Frameworks ne supportent pas le multithreading (QuickTime par exemple), et que tout ce qui est graphique doit être fait dans le thread principal ("- (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait")
http://www.projectomega.org/article.php?lg=fr&php=oreilly_cocoa17&p=1
Je te conseille ce tuto... La page 5 présente une solution de multi-threading.
(d'ailleurs, il risque de te dire quelque chose :P)
J'ai essayé de mettre en action les explications de ProjetOmega (je le pensais fermé) mais je suis tjs bloqué lol. Je suis chauve maintenant .
J'ai reussi a lire mes sons sans bloqué l'interface, maintenant je peux cliquer sur les boutons environnant ^^.
Par contre quand je veux stoper ca ne marche pas.
Tu aurais un idée?
J'ai essayé [NSTread exit] mais ca fait planter...
Sinon mon stop coupe bien le son en train de se jouer mais pas les suivants...
EDIT : en mettnt une variable global BOOL etat. Quand je clique sur play etat = YES; et stop etat = NO; et un if dans ma fonction beep qui regarde etat. Ca peut le faire non?
Il te faut une variable partagée "stop" qui dans le thread "beep" sort de la boucle si elle est à true, et qui dans le thread "principal" devient true quand on appuie sur le bouton "stop".
Si c'est juste un booléen (donc une variable scalaire), toute action dessus est appelée "atomique", et donc on n'a pas à se soucier des problèmes de "thread-safe" avec.
dans mon .h j'ai :
BOOL etat;
@property(nonatomic,assign)BOOL etat
et dans mon .m
je synthetize,
quand je clique sur stop je met etat à NO.
Dans ma fonction beep
if(etat == YES) je joue ma fonction sinon je fais rien.
Et je reste au meme stade, comme si mon état n'était pas lu.
Tu l'as fait afficher à chaque passage pour voir ?