Après m’être battu comme un beau diable avec Haskell pour voir ENFIN un beau JPEG s’afficher sur un Minitel, je suis en train de m’attaquer à PyMinitel, histoire de voir ce que je pourrais éventuellement en tirer. Il est à noter que je ne connais quasiment rien à Linux et pas plus à Python …
==> Quelqu’un a-t-il déjà joué avec ?
Je trouve cette librairie intéressante à deux titres :
Gestion du multi-thread
Existence d’une interface utilisateur comprenant menu, saisie de texte, etc
Oui, je suis je connais bien cette bibliothèque car je bosse dessus pour améliorer quelques points. Elle fonctionne plutôt bien et a été bien écrite (testé sur Minitel 1 et 2). Elle mériterait d’être plus connue
Je viens de passer quelques heures à essayer d’en tirer quelque chose et j’ai quelques questions, peut-être pourras-tu éclairer ma lanterne ?
Je suis jusque-là infoutu de « compiler » la doc (déjà, ça part mal, mais bon, il y a les exemples et le code !) - As-tu des instructions pour me guider ?
Je ne parviens pas à recevoir de caractère ‹ correct › en 9600 avec mon M2, comme si la parité n’était pas prise en compte à cette vitesse [mais en émission, tout est OK ???]
L’UI comporte des fonctionnalités intéressantes, mais je ne comprends pas bien cette notion de « surcharge de méthode » ==> Ex dans UI.py
def gere_touche(self, sequence):
« Gère une touche
Cette méthode est appelée automatiquement par la méthode executer dès
qu’une séquence est disponible au traitement.
Pour tout élément interactif, cette méthode doit être surchargée car
elle ne traite aucune touche par défaut et renvoie donc False. »
Si vous l’améliorez, merci de reverser au repo d’origine avec des pull-requests (aussi par respect de l’esprit de la licence A-GPL).
De même si vous avez des problèmes, ouvrez une issue: Issues · cquest/pynitel · GitHub
Dans un premier temps, je vais me faire les dents sur Python/Linux et sur PyMinitel, si je n’arrive vraiment à rien, je changerai mon fusil d’épaule, mais je ne veux pas courir deux lièvres à la fois (du moins, dans un premier temps).
(i) Pour la doc, tu m’apprends qu’il y en a une. Pour la générer, il faut installer sphinx, aller dans le répertoire « doc » et taper « make html » pour avoir la doc au format « html » par exemple.
(ii) Aucune idée. Si tu te connectes au minitel par la prise péri-informatique, as-tu vérifié le câble ?
(iii) C’est de la programmation objet : la classe « UI » est une classe abstraite qui fournit un cadre général pour un composant graphique. Les sous-classes (« Menu », « Label », « ChampTexte », « Conteneur ») héritent de cette classe et peuvent réimplémenter des méthodes de la classe « UI » pour changer leur comportement par défaut. Par exemple, la méthode « gere_touche » a un comportement différent pour un label et un menu.
(i) Oui, j’ai vu ça, mais mon PI de test est actuellement plein à 92% ! Je ne voudrais pas risquer le disk full avec ces plaisanteries, d’autant que si on peut la générer en HTML, ca m’arrangerait bien de l’avoir ailleurs - sauf que je n’ai pas d’autre pingouin sous la main. StandBy donc sur ce point tant que je ne trouve pas les HTML « tout fait »
(ii) Oui - Il marche on ne peut mieux en 4800/1200/300, et aussi en 9600 (mais émission seulement - en réception, je reçois bien des caractères mais on dirait qu’il manque des bits - le A et le B retournent tous les deux 64 ??!!!)
NB : Mon câble est on ne peut plus con : Un FTDI, un transistor et 2 résistances.
(iii) Aïe, du jargon ! Si je comprends bien, si je veux bêtement prendre en compte la touche ‹ annulation › dans un champ de texte, je n’ai que deux options :
Soit je modifie le fichier « ChampTexte.py » (et je modifie par là même la sous-classe)
Soit je copie le fichier « ChampTexte.py » en « ChampTexteAnnulation.py » (et je crée par là une nouvelle sous-classe)
(i) J’ai essayé de générer la doc html de mon côté mais je n’avais qu’un bout, je peux essayer de creuser et te la filer toute faite quand j’ai un moment.
(ii) Si le câble est ok, je n’ai pas trop d’idée, je laisse les autres réagir sur ce point.
(iii) Tu peux faire ça, oui. Idéalement, on ne devrait pas modifier les fichiers mais c’est là qu’il y a encore un peu de marge pour améliorer l’existant. Que veux-tu faire exactement ? Des boutons qui déclenchent une action spécifique ?
Pareil - Je vais le tester avec autre chose qu’un PI « pour voir » [je n’avais jamais ‹ joué › en 9600 jusque maintenant]
C’est bien ce que je me dis, donc, en conséquence, il faudrait faire de nouvelles sous-classes qui font ce que j’attends d’elles … s’il n’y a pas d’autre option
(*) Nécessite une ligne téléphonique fantôme (cf mon post sur le sujet) et idéalement la simulation d’une sonnerie
(**) Permet l’utilisation de minitels ne disposant pas de prise péri-info