Posté le 21/01/2020 21:02
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 249 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
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.
Dijkstra - The Witcher
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 ?
Albert Einstein
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.
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 ?
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 !
Albert Einstein
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.
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.
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 ?
Albert Einstein
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...
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).
Receive38k Str 1
CloseComport38k
Albert Einstein
Citer : Posté le 22/01/2020 16:15 | #
Essaie d'envoyer une Str de taille maximum (255).
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 ?
Albert Einstein
Citer : Posté le 22/01/2020 17:02 | #
Comme vous pouvez le voir dans le manuel, la syntaxe est :
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.
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)
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
Albert Einstein
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
Citer : Posté le 22/01/2020 18:28 | #
Ha ok, je vais voir ce que je peux faire merci
Albert Einstein
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 ?
Citer : Posté le 22/01/2020 21:34 | #
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.
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.