Les membres ayant 30 points peuvent parler sur les canaux annonces, projets et hs du chat.
La shoutbox n'est pas chargée par défaut pour des raisons de performances. Cliquez pour charger.

Forum Casio - Projets de programmation


Index du Forum » Projets de programmation » [GNU/Linux] P7, pour des transferts à repasser
Cakeisalie5 Hors ligne Ancien administrateur Points: 1957 Défis: 11 Message

[GNU/Linux] P7, pour des transferts à repasser

Posté le 22/08/2016 12:13

Le projet est déprécié au profit de Cahute, qui réimplémente p7 et p7screen !
Dans un effort d'adopter un système de build plus moderne, une documentation bien plus complète, des rationales plus simples, et davantage d'éléments de l'écosystème logiciel de CASIO, le projet Cahute a été lancé en février 2024 par l'auteur de P7. Cahute supplante complètement les utilitaires autrefois proposés dans le projet P7, en conservant une interface en ligne de commande compatible.

The project is deprecated in favour of Cahute, which reimplements p7 and p7screen!
In order to adopt a more modern build system, a documentation that is far more complete, simpler rationales, and more elements from CASIO's digital ecosystem, the Cahute project has been in launch in February 2024 by the same author as P7. Cahute completely reimplements the utilities previously distribued with the P7 project, while keeping a compatible command line syntax.

Ce topic est conservé pour des raisons historiques.


Le projet P7 est constitué d'utilitaires de communication destinés à être utilisés avec des calculatrices CASIO fx (Graph). Ces utilitaires permettent d'interagir avec les systèmes de fichiers présents sur la calculatrice (envoi et réception de fichiers, inventaire des fichiers présents sur la calculatrice, copie, suppression, ...), d'afficher l'écran en temps réel, et de sauvegarder/remplacer les composants du système présents sur la machine.

Pour ne pas utiliser les commandes en root (administrateur), n'oubliez pas de faire :
sudo usermod -a -G uucp <votre nom d'utilisateur>
Puis déconnectez-vous/reconnectez-vous (pas besoin de redémarrer votre ordinateur).

Découvrez comment construire, installer et utiliser ces utilitaires ici.
Des notes ici. - Des sources là.
Ceci est un topic pour les annonces, les retours divers (problèmes rencontrés, ...) et les demandes de fonctionnalités.


Pour les réponses, notez que le topic était originellement consacré à l'utilitaire P7, et non au projet, qui n'existait pas à l'époque.



Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 Suivante
Cakeisalie5 Hors ligne Ancien administrateur Points: 1957 Défis: 11 Message

Citer : Posté le 27/04/2018 02:54 | #


Comme dit plus haut, effectivement, p7 est à l'état de chantier et il faut que je réimplémente pas mal de choses de façon propre dans la libcasio concernant le protocole de communication. Je me suis pas mal concentré sur la mémoire principale de base, les archives etc, et moins sur les fichiers de stockage, voilà pourquoi. Mais j'y travaille !

Concernant le niveau de zoom de p7screen, ça m'étonne, c'est à 8 normalement… si tu pouvais m'envoyer le Makefile.cfg en réponse ou via MP, je t'en serais reconnaissant (normalement le zoom par défaut apparaît aussi dans p7screen --help). Concernant les signaux qui ne répondent pas, ça c'est parce que la SDL2 catche les signaux pour les retourner en tant qu'évènements. Je n'ai pas encore trouvé de façon propre pour gérer ça, il faut que je me penche sur la question de façon plus sérieuse. Et p7screen ne se met pas en boucle infinie, il s'est probablement connecté avec ta calto et est en attente du prochain paquet

Autrement, je travaille aussi sur une autre syntaxe pour p7, plus verbeuse et basée sur le positionnel que la précédente. L'idée principale était de pouvoir combiner des actions différentes dans une seule exécution de p7, et de pouvoir adapter l'interface à p7mcs (l'équivalent de p7 pour la mémoire principale). Les mauvaises langues diront que ça s'approche du SQL, mais je leur rétorque qu'il n'y a pas encore de conditions ni de boucles dans ma syntaxe (et qu'en plus elle est trop cool). Voici quelques exemples pour vous donner un aperçu de ce que ça va donner :

p7 help about commands

Affiche de l'aide concernant les sous-commandes disponibles.

p7 optimize device fls0 and list files on crd0

Optimise la mémoire de stockage (sur la flash) et liste les fichiers sur la carte SD.

p7 on serial /dev/ttyUSB1 setting 115200N1 send ~/addin.g1a as ADDIN.g1a in ADDINS

On commence à entrer dans du tordu. Ici, la connexion se passera, comme le préfixe on serial /dev/ttyUSB1 setting 115200N1 l'indique, sur la connexion série dont la liaison est disponible sur /dev/ttyUSB1 (interface USB-série que j'utilise pour me connecter à la calculatrice), sur laquelle on se met d'accord avec la calculatrice pour définir les paramètres de connexions à 115200 bauds, pas de parité, un bit de stop. Sur cette liaison, on envoie le fichier disponible localement sur ~/addin.g1a qu'on renomme ADDIN.g1a sur la calculatrice et qu'on place dans le dossier ADDINS.

De plus, le type de liaison parle aussi du protocole « applicatif » (les protocoles propriétaires utilisés pour les calculatrices CASIO ne sont pas vraiment pensées pour rentrer dans des couches du modèle OSI, mais supposons), donc ici par exemple, serial représente le protocole 7 au-dessus d'une liaison série et usb représente le protocole 7 au-dessus d'une liaison USB. On pourrait tout à fait imaginer l'introduction d'autres types, comme legacy, pour le protocole legacy, ou afx pour les AlgebraFX/Graph 100.

p7 on /dev/ttyUSB1 setting 115200N2 not ending show os version and show product id and on usb show username

L'avantage de cette syntaxe est qu'on peut même faire varier la liaison sur plusieurs sous-commandes. Ici, on commence par définir la couche de liaison comme étant une liaison série sur /dev/ttyUSB1, où on définit les paramètres de connexion 115200 bauds, pas de parité, deux bits de stop, et où on dit à p7 de ne pas terminer la connexion pour qu'on puisse la reprendre plus tard. Sur cette liaison, on affiche la version de l'OS et l'ID de la calculatrice (product ID).

Ensuite, on change de liaison pour une liaison USB, et on récupère et affiche le nom d'utilisateur sur cette nouvelle liaison (la première liaison est fermée).

De plus, mais ce n'est guère plus qu'une idée pour le moment, j'aimerais implémenter une exécution de scripts externes avec quelque chose du type :

p7 execute /my/script.p7

Mais j'ignore totalement ce qui peut se passer si je met un préfixe de liaison, etc. Je me pencherai sur la question quand j'aurai fini d'implémenter le reste.

J'espère avoir pu vous donner une idée de la puissance de la syntaxe que j'implémente au travers de ces quelques commandes. J'essaierai, quand j'aurai fini d'implémenter un décodeur correct pour cette syntaxe, de faire quelque chose de rétrocompatible avec les anciennes options et sous-commandes (en fait, celles du p7 actuel) pour que vos scripts ne soient pas complètement à la ramasse. De plus, on m'a également suggéré de proposer la gestion de chemins complets comportant nom, dossier et appareil de stockage, du type crd0:dossier/fichier.ext, que j'aimerais aussi implémenter en plus de la forme décomposée que j'ai un peu présentée au-dessus. Normalement tout ça devrait cohabiter de façon pas trop mauvaise
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Lephenixnoir En ligne Administrateur Points: 24552 Défis: 170 Message

Citer : Posté le 27/04/2018 07:21 | # | Fichier joint


Je te joins les infos dans en fichier texte. Rien d'anormal a priori.

Et p7screen ne se met pas en boucle infinie, il s'est probablement connecté avec ta calto et est en attente du prochain paquet

Il se met en attente alors que la calculatrice est déjà en train d'envoyer des paquets et que lui n'arrive pas à créer la surface dont il a besoin pour les afficher... ?

(Je réagis pas en détail sur la syntaxe, on en a déjà parlé pas mal sur la shout...)
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Cakeisalie5 Hors ligne Ancien administrateur Points: 1957 Défis: 11 Message

Citer : Posté le 27/04/2018 13:38 | #


À l'époque de la libp7, le callback pour afficher une frame pouvait retourner un code d'erreur pour que la fonction qui a pris le contrôle du fil d'exécution puisse le rendre. Mais en vrai, ça ne me plaît plus que la fonction qui reçoive les frames prenne le contrôle du fil d'exécution, et c'est pas vraiment dans la logique de la façon dont ça marche pour la Prizm/G90+E, donc je vais changer ça.

EDIT : ah mince, je me souviens de pourquoi j'ai fait ça. Bon, va falloir jouer avec.

Ajouté le 27/04/2018 à 15:37 :
J'ai fait ce que j'ai dit plus haut, et corrigé quelques petits trucs au passage, donc p7screen devrait marcher encore plus like a charm qu'avant, en récupérant et adaptant quelques trucs de la libp7 d'ailleurs. Je t'invite à re-tester
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Lephenixnoir En ligne Administrateur Points: 24552 Défis: 170 Message

Citer : Posté le 27/04/2018 21:41 | #


Voilà qui règle bien le problème du zoom par défaut !
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Cakeisalie5 Hors ligne Ancien administrateur Points: 1957 Défis: 11 Message

Citer : Posté le 03/05/2018 22:51 | #


Bon, récemment, j'ai fait un peu de recherches concernant le screenstreaming pour la Graph 90+E (et les autres plateformes par la même occasion), et je partage ici quelques conclusions que ça puisse resservir plus tard.

Concernant le format des paquets eux-mêmes : au-delà de ce qui est spécifique au protocole 7 (donc type 0x0B pour le screenstreaming), trois formats possibles : TYP01, TYPZ1 et TYPZ2.

Le TYP01 n'a aucun sous-header et est directement suivi d'une image de 128x64 pixels au format casio_pictureformat_1bit (1 bpp, de haut en bas, de gauche à droite, et comme ça tombe pile on n'a pas à se poser la question des fill bits).

Le TYPZ1 et le TYPZ2 ont un sous-header qui est quasiment le même pour les deux, au premier champ près :
- taille (6o pour le TYPZ1, 8o pour le TYPZ2) : taille en octets de ce qui suit le sous-header, champ de contrôle exclu, en base16 (appelé « ASCII-HEX » par Simon Lothar, appellation qui est restée dans la communauté) ;
- largeur (4o) : largeur (hauteur) de l'image en pixels, en base16 ;
- longueur (4o) : longueur de l'image en pixels, en base16 ;
- un "1" en ASCII (1o) ;
- format d'image (3o).

Les formats d'images connus sont :
- RC2 (casio_pictureformat_16bit) : 16 bpp, de haut en bas, de gauche à droite. R5G6B5.
- RC3 (casio_pictureformat_4bit_rgb) : 4 bpp, de haut en bas, de gauche à droite. R1G1B1 puis un bit de déchet.
- RM2 (casio_pictureformat_2bit_dual) : deux fois une image comme pour le TYP01, mais avec des dimensions différentes.

Voyez libcasio/picture.h pour les formats d'images gérés par la libcasio en long et en large.

Pour ce qui concerne le SCSI : comme le révèle cette page de chez Cemetech, en plus des commandes de base qui permettent à la calculatrice de se comporter en mode « clé USB », la calculatrice implémente des commandes supplémentaires… qui permettent d'accéder à un flux avec un simili-Protocole 7.00 dessus.

Grosso modo, trois commandes propriétaires : 0xC0 pour voir s'il y a des données (le retour contient le nombre d'octets disponibles), 0xC1 pour recevoir des données (dont on précise la quantité dans la commande), et 0xC2 pour envoyer des données.

Pourquoi est-ce que je parle d'un simili-Protocole 7.00, alors que le wiki a l'air de dire que c'est le Protocole 7.00 ? Parce que le paquet envoyé par Screen Receiver, l'appli de BrandonW sur Cemetech, envoie un paquet qui ressemble à du protocole 7, mais n'en est pas :

06 30 32 30 30 31 30 44

Le premier byte est un type valide (ACK), les deux derniers caractères correspondent bien au « checksub » ('%02X'%((0 - 0x30 - 0x32 - 0x30 - 0x30 - 0x31) % 256) == '0D'), tout ce qui n'est pas le premier byte est en ASCII, ça c'est bon. Mais deux choses me chiffonnent :
- le fait qu'il s'agisse d'un ACK étendu d'après le sous-code (02) mais qu'il n'y aie pas de données (0 juste après) ;
- le dernier '0' avant le « checksub ». Il n'a rien à faire là, mais sans lui le « checksub » est invalide. C'est surtout lui qui me fait me dire que c'est une évolution du Protocole 7.00 et non le protocole lui-même.

Pour en savoir plus, j'enquête parmi ce que je trouve comme documentation, et j'ai demandé à Lephenixnoir de me faire un dump avec le Screen Receiver de CASIO et sa Graph 90+E, on verra ce que ça donne
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 04/05/2018 17:25 | #


Ça a pas à voir avec p7 mais vu que ça concerne les communications USB avec la calto, je pose ça ici.

Je tente de communiquer avec ma calto avec usb4java, qui utilise libusb en tant que back-end. J'arrive à détecter la calto, mais je ne peux pas communiquer avec parce que le driver n'est pas adapté. Du coup j'ai utilisé un convertisseur pour rendre le driver compatible : ça marche, mais maintenant fa-124 n'arrive plus à communiquer avec la calto...

Du coup j'ai supprimé le driver et réinstallé l'original, ça remarche avec fa-124 mais plus avec libusb.

Est ce qu'il y a moyen de faire que les 2 marchent sans jongler entre les drivers ?
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Cakeisalie5 Hors ligne Ancien administrateur Points: 1957 Défis: 11 Message

Citer : Posté le 04/05/2018 19:55 | #


Pour ce que j'avais fait comme recherches, non, ce n'est pas possible sous Microsoft Windows. C'est pour ça que je cherche à gérer les deux drivers, CESG502 et WinUSB, en fait.

Et CESG502 est pas génial. Déjà je n'ai pas trouvé comment savoir si c'est lui ou non, donc je n'ai pas l'impression qu'il n'y aie de GUID associé (ou peut-être que si, mais je n'ai pas trouvé comment le récupérer). Ensuite, pour les opérations de lecture, contrairement à la grande majorité des drivers proposant un flux, il ne faut pas lui donner un buffer de la taille qu'on veut lui demander, mais d'une taille supérieure à ce qu'on peut recevoir au maximum.

J'avais posté un topic sur le forum du MSDN, mais je n'ai pas eu de réponse convaincante. Si tu trouves, fais-moi signe
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Zezombye Hors ligne Rédacteur Points: 1756 Défis: 13 Message

Citer : Posté le 04/05/2018 21:56 | #


Ah dommage, du coup c'est soit l'un soit l'autre. Ou alors il faudrait voir si je peux dire à libusb d'utiliser le driver compatible sans devoir l'installer sur le système.
Divers jeux : Puissance 4 - Chariot Wars - Sokoban
Ecrivez vos programmes basic sur PC avec BIDE
Yatis Hors ligne Membre Points: 581 Défis: 0 Message

Citer : Posté le 22/09/2018 12:22 | #


J'ai quelques soucis d'installation sur Fedora 28.
N’ayant pas les packages: libusb-1.0-0-dev && libsdl1.2-dev avec yum (ou alors je suis bigleux) j'ai les ais DL manuellement et foutu dans un repo.
Après avoir installer libusb (1.0.22) et sdl (1.2.15) impossible d'installer libp7-3.0

>a2x doc/libp7-config.1.txt
make: *** [Makefile:225: man/man1/libp7-config.1] Error 127


Au passage, est-ce qu'il est possible d'installer seulement p7 et non p7screen ? Parce que j'en ai pas besoin et visiblement c'est ça qui foire l'installation (d’ailleurs j'avais déjà eu ce problème sous Arch mais comme j’étais passé par yaourt bah p7 c'est installer et p7screen à foirer complet).
Lephenixnoir En ligne Administrateur Points: 24552 Défis: 170 Message

Citer : Posté le 22/09/2018 12:30 | #


Désactive la doc à la configuration ou installe pandoc (a2x est pour la conversion des fichiers texte en manpages).
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Yatis Hors ligne Membre Points: 581 Défis: 0 Message

Citer : Posté le 22/09/2018 12:40 | #


Merci
Je suis aller un peu plus loin mais maintenant p7utils ne trouve pas <libp7.h> alors que je n'ai pas eu de probleme lors du make install de libp7

Ajouté le 24/09/2018 à 15:18 :
Bon j'ai essayé de tout ré-installer mais impossible de trouver comment régler ce problème...
Dark storm Hors ligne Labélisateur Points: 11641 Défis: 176 Message

Citer : Posté le 24/09/2018 15:21 | #


Mmm, je connais pas du tout le gestionnaire de paquets de Fedora, mais à priori, si la libp7 est installée, ça devrait fonctionner. T'as bien compilé avec make all (libp7) ou équivalent ?
Finir est souvent bien plus difficile que commencer. — Jack Beauregard
Cakeisalie5 Hors ligne Ancien administrateur Points: 1957 Défis: 11 Message

Citer : Posté le 24/09/2018 15:21 | #


a2x fait partie d'asciidoc. C'est pas précisé dans le README de l'époque ?
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Yatis Hors ligne Membre Points: 581 Défis: 0 Message

Citer : Posté le 24/09/2018 16:04 | #


Pour libp7
Je viens d'installer asciidoc (parce que avant je passais par ./configure --no-manpages --udev).
Je fais ./configure --udev, make puis sudo make install et tout se passe bien

Pour p7utils
Je fais ./configure, tout se passe bien.
Mais dès que je fais make (ou sudo make) j'ai un message d'erreur:

>mkdir obj/p7
>cc obj/p7/arg.o
In file included from src/p7/args.c:10:
src/p7/main.h:15:11 fatal error libp7.h no such file or directory
# include <libp7.h>

compilation terminated.



(Breizh: c'est à cause de cette erreur que je me suis mis à écouter du Fatal Bazooka)
Cakeisalie5 Hors ligne Ancien administrateur Points: 1957 Défis: 11 Message

Citer : Posté le 24/09/2018 16:09 | #


Parmi les dépendances de construction des p7utils se trouve sans doute pkg-config (« README » veut dire « Lisez-moi » ). Je t'invite à l'installer et à refaire make.

Sous Fedora et distributions dérivées, d'après mes recherches, yum install pkgconfig devrait le faire.
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Yatis Hors ligne Membre Points: 581 Défis: 0 Message

Citer : Posté le 24/09/2018 16:18 | #


Cakeisalie5 a écrit :
Parmi les dépendances de construction des p7utils se trouve sans doute pkg-config (« README » veut dire « Lisez-moi » ). Je t'invite à l'installer et à refaire make.

Sous Fedora et distributions dérivées, d'après mes recherches, yum install pkgconfig devrait le faire.

J'ai lu le « README » figure-toi (et aucune trace d'un quelconque pkg-config dans les dépendances).
Une fois pkg-config installé, j'ai le même résultat en faisant make.
Cakeisalie5 Hors ligne Ancien administrateur Points: 1957 Défis: 11 Message

Citer : Posté le 24/09/2018 16:21 | #


Oh tiens, effectivement. Je pensais pas que je faisais autant n'importe quoi à cette époque. Pardon pour ça !

Si tu fais pkg-config libp7 --cflags manuellement, qu'as-tu comme sortie ?
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Yatis Hors ligne Membre Points: 581 Défis: 0 Message

Citer : Posté le 24/09/2018 16:29 | #


pkg-config a écrit :

Package libp7 was not found in the pkg-config search path.
Perhaps you should add the directory containing 'libp7.pc'
to the PKG_CONFIG_PATH environment variable
Package 'libp7', required by 'virtual:world', not found


Cakeisalie5 Hors ligne Ancien administrateur Points: 1957 Défis: 11 Message

Citer : Posté le 24/09/2018 16:35 | #


Hm, ça veut dire que le chemin par défaut où la configuration du paquet libp7 n'est pas géré par Fedora. Il a été installé par défaut dans /usr/lib/pkgconfig/, de là tu as deux possibilités :

- le copier dans l'un des dossiers par défaut de pkg-config, que tu peux obtenir via pkg-config --variable pc_path pkg-config.
- ajouter le dossier /usr/lib/pkgconfig/ à pkg-config avant de l'exécuter, en utilisant export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/lib/pkgconfig (à ajouter dans ton .profile, .bashrc, .zshrc ou autre pour un ajout permanent)..
Respirateur d'air, BDFL de Cahute, des utilitaires de communication pour calculatrices CASIO.


Mon blogMes autres projets
Yatis Hors ligne Membre Points: 581 Défis: 0 Message

Citer : Posté le 24/09/2018 17:03 | #


J'ai choisit la 2eme option et ça fonctionne
J'arrive enfin à envoyer mes .g1a a ma calto merci


Jeanmariejeq Invité

Citer : Posté le 20/09/2019 14:08 | #


Dsl pour ce détérage d'une année mais j'ai ça: The command is unsupported by the calculator
Précédente 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 Suivante

LienAjouter une imageAjouter une vidéoAjouter un lien vers un profilAjouter du codeCiterAjouter un spoiler(texte affichable/masquable par un clic)Ajouter une barre de progressionItaliqueGrasSoulignéAfficher du texte barréCentréJustifiéPlus petitPlus grandPlus de smileys !
Cliquez pour épingler Cliquez pour détacher Cliquez pour fermer
Alignement de l'image: Redimensionnement de l'image (en pixel):
Afficher la liste des membres
:bow: :cool: :good: :love: ^^
:omg: :fusil: :aie: :argh: :mdr:
:boulet2: :thx: :champ: :whistle: :bounce:
valider
 :)  ;)  :D  :p
 :lol:  8)  :(  :@
 0_0  :oops:  :grr:  :E
 :O  :sry:  :mmm:  :waza:
 :'(  :here:  ^^  >:)

Σ π θ ± α β γ δ Δ σ λ
Veuillez donner la réponse en chiffre
Vous devez activer le Javascript dans votre navigateur pour pouvoir valider ce formulaire.

Si vous n'avez pas volontairement désactivé cette fonctionnalité de votre navigateur, il s'agit probablement d'un bug : contactez l'équipe de Planète Casio.

Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 42 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements

Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd