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 - Questions sur les transferts


Index du Forum » Questions sur les transferts » Utiliser le port 3-pin avec le langage C.basic ?
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Utiliser le port 3-pin avec le langage C.basic ?

Posté le 21/01/2020 21:02

Je voulais savoir s'il y était possible d'utiliser le port 3-pin (communiquer avec arduino par exemple) d'une calculatrice casio 35+e avec le langage C.Basic ?


Lightmare Hors ligne Membre de CreativeCalc Points: 690 Défis: 0 Message

Citer : Posté le 21/01/2020 21:14 | #


Oui, c'est possible avec les commandes Send() et Receive() ! avec cette syntaxe :

>programme émetteur :

4->A
Send(A, [baudrate])


>programme receveur :

Receive(A, [baudrate])


la commande Receive est une boucle et interrompt le programme tant que rien n'est recu. Si tu émet la variable A avec Send, tu ne peux pas recevoir autre chose que A (genre ici Receive(B) aurait fait une erreur). De la même manière tu peux émettre des listes/matrices du moment qu'elles sont correctement initialisées sur la calculatrice qui doit recevoir. Je dis bien la calculatrice car je ne sais pas ce qu'il en est avec des arduinos.
"Quand je dis à la cour : "Sautez ! ", tout le monde me demande "jusqu'où ?" "
Dijkstra - The Witcher
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 21/01/2020 21:25 | #


Merci beaucoup pour ton aide !

Ajouté le 21/01/2020 à 21:43 :
C'est quoi le [baudrate] svp ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 21/01/2020 22:06 | #


Le baudrate c'est la fréquence de transmission. Il y a des valeurs standard et il faut que ce soit la même des deux côtés. Plus c'est élevé et plus le transfert va vite. La base c'est 9600 bauds. Tu peux généralement monter bien plus haut (genre 115200 baud) mais si tu vas trop vite les périphériques risquent de plus suivre et ça provoquera des erreurs de transmission.
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 21/01/2020 22:29 | #


J'ajoute aussi que Casio gère plutôt bien le port 3 pins (SCIF pour les intimes) mais n'utilise absolument pas de DMA (?) pour copier les données en plus d'utiliser un buffer interne de 256 octets (ou 512 je ne sais plus) ce qui rend très instables les transmissions de données à "haut débit" car tu risques de saturer en permanence le buffer de réception. Je te conseille donc d'utiliser le "haut débit" seulement si tu es sûr de ne jamais envoyer trop de donnée d'un coup et / ou en permanence.

D'ailleurs, je suis curieux, le C. Basic utilise les syscalls de Casio où il a son propre driver ?
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 21/01/2020 22:44 | #


Merci pour vos réponses
Est-ce qu'il est possible d'envoyer des String via send() ? (et si c'est le cas faire un exemple rapide pour que je puisse comprendre pls)

Ajouté le 21/01/2020 à 23:21 :
C'est bon je viens de comprendre après plusieurs heures de tests !
"La créativité est contagieuse faites la tourner"
Albert Einstein
Sentaro21 Hors ligne Membre Points: 878 Défis: 0 Message

Citer : Posté le 22/01/2020 05:54 | #


Thanks all.

C.Basic supports 3-pin communication.
It is implemented using SysCall.
The Send/Receive command can communicate numerical values and character strings, but since it uses a simple proprietary protocol, it can be used only for communication between C.Basic.

For fine control, please set the transfer mode to send and receive raw byte data.
Or maybe you use SysCall directly or you need your own driver.
Je continue à développer C.Basic. (Il est compatible avec Basic Casio.)
Overclocking utilitaire Ftune/Ptune2/Ptune3 est également disponible.
Si vous avez des questions ou un rapport de bogue, n'hésitez pas à me le faire savoir.
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 22/01/2020 14:04 | #


Merci beaucoup pour tes conseils !
Est-ce qu'il serait possible de faire du threading avec C.Basic ? Par exemple pendant que tu affiches quelque chose il reçoit des informations en parallèle ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 22/01/2020 15:02 | #


Le processeur de la calculatrice n'a qu'un seul coeur, donc quoi que tu fasses, ce ne sera jamais simultané à proprement parler. Par contre, dans l'absolu tu peux :

Utiliser les signaux provenant du port série qui indique quand il faut reremplir le buffer. Dans ce cas le dessin est interrompu par une fonction courte qui fait de la communication (interruption, le modèle normal pour la communication série).
Faire un peu de l'un, puis faire un peu de l'autre, en aternance assez rapide (ordonnancement, le modèle normal pour le threading).
Peut-être d'autres options, selon ton imagination.

Bon ça c'est dans l'absolu avec ce processeur. C.Basic peut supporter moins ou plus de méthodes. Je le mentionne juste au passage...
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 22/01/2020 15:26 | #


D'accord Merci !

Ajouté le 22/01/2020 à 15:59 :
J'essaye d'envoyer un string depuis le port 3-pin et la calculatrice reçoit le string mais elle continue à essayer de recevoir et je n'arrive pas à stopper la réception (et la fréquence que j'utilise est 9600).

OpenComport38k, 5, 0
Receive38k Str 1
CloseComport38k


"La créativité est contagieuse faites la tourner"
Albert Einstein
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 22/01/2020 16:15 | #


Essaie d'envoyer une Str de taille maximum (255).
ouais ouais
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 22/01/2020 16:22 | #


En effet ça fonctionne merci, mais on est obligé de communiquer qu'avec une taille de 255 ?
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 22/01/2020 17:02 | #


Comme vous pouvez le voir dans le manuel, la syntaxe est :

(Format) Receive38k données [,nombre d'octets]

Si tu indiques la longueur de la chaîne en octets tu dois pouvoir arrêter le transfert au bon moment. Pour ça, il faut envoyer la longueur en premier côté émetteur.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Calcloverhk Hors ligne Membre Points: 358 Défis: 10 Message

Citer : Posté le 22/01/2020 17:06 | #


I feel like these serial commands should be improved in the future (at least in understanding because they are somehow technical)
C.Basic Wiki Project progress as of 2024/2/12
   30%


Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 22/01/2020 18:24 | #


J'avais vu qu'on pouvait saisir le nombre d'octets mais le souci c'est qu'on ne connait pas la taille du String.
Ce que je veux faire c'est depuis l'arduino envoyer un String dont on ne connait pas la taille car elle peut varier et que depuis la calculatrice on reçoit le String dans Str 1. La partie arduino fonctionne correctement c'est sur la calculatrice que je n'y arrive pas. En plus clair je voudrais recréer Serial monitor mais en C.Basic
"La créativité est contagieuse faites la tourner"
Albert Einstein
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 22/01/2020 18:25 | #


Comme je l'ai dit, tu peux envoyer la taille du String avant d'envoyer le String, comme ça le destinataire connaît la taille à l'avance
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)
Farhi Hors ligne Membre Points: 1375 Défis: 0 Message

Citer : Posté le 22/01/2020 18:28 | #


Ha ok, je vais voir ce que je peux faire merci
"La créativité est contagieuse faites la tourner"
Albert Einstein
Leno Hors ligne Membre Points: 282 Défis: 0 Message

Citer : Posté le 22/01/2020 20:36 | #


Question un peu hors sujet mais bon... Est-il possible de transférer des données en basic entre deux G90+E ?
Kikoodx Hors ligne Ancien labélisateur Points: 3039 Défis: 11 Message

Citer : Posté le 22/01/2020 21:34 | #


Leno a écrit :
Question un peu hors sujet mais bon... Est-il possible de transférer des données en basic entre deux G90+E ?

Non. Pas que l'on sache.
ouais ouais
Lephenixnoir En ligne Administrateur Points: 24574 Défis: 170 Message

Citer : Posté le 23/01/2020 08:43 | #


C'est impossible sans modifier le système, avoir de l'aide de la part d'un add-in, ou utiliser une interface matérielle externe. C'est possible avec n'importe laquelle de ces extensions.
Mon graphe (11 Avril): ((Rogue Life || HH2) ; PythonExtra ; serial gint ; Boson X ; passe gint 3 ; ...) || (shoutbox v5 ; v5)

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 137 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