Posté le 30/04/2017 11:08
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 191 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 27/08/2020 09:47 | #
Les nombres décimaux de C.Basic sont au format flottant, 0.01 est difficile à traquer. Ce sera plus simple si tu vas juste de 1 en 1 pour trouver. Soit c'est un float de 4 octets, soit c'est un double de 8 octets. Tu peux aussi envoyer des chaînes de caractères, ce sera plus facile à déchiffrer. Une fois que tu auras trouvé les données tu peux trouver l'en-tête et le footer. Ou lire le code de C.Basic !
Citer : Posté le 27/08/2020 11:08 | #
En effet j'ai trouvé que le chiffre flottant était de 8 octets. Et actuellement j'essaye de convertir ces octets mais j'ai du mal à comprendre la comment ça fonctionne.
J'ai aussi essayer les chaînes de caractère mais cela ne fonctionne pas du tout de la même manière.
Maintenant ce qu'il reste à faire c'est trouver un moyen pour convertir 8 octets en float.
Merci pour ton message
Albert Einstein
Citer : Posté le 27/08/2020 11:16 | #
8 bytes is for storing a double-precision floating point number, and in the calculator would be stored as big-endian - info on doubles can be found here.
Citer : Posté le 27/08/2020 18:36 | #
Merci beaucoup Kbd2 !
Grâce à toi j'ai réussi à convertir les données en floattant
Voici le code pour ceux qui sont intéressés.
C.Basic:
1.01->A
Send(A,7)
Python:
import serial
import struct
arduino=serial.Serial("COM6",baudrate=38400,timeout=1)#port de l'arduino à régler en fonction de celui que vous utilisez
b=arduino.readline()
c=list(b)
c=c[8:] #Retire le header
data=bytes(c)
NbFloat=struct.unpack('>d', data)[0]
Arduino:
#include <SoftwareSerial.h>
SoftwareSerial serialCalc(10, 11); // RX, TX
void setup()
{
// Ouvre les ports serials
Serial.begin(38400); //Pour la com avec l'ordi. Dont les ports sont Tx:1, Rx:0
serialCalc.begin(38400); //Pour la com avec la calculatrice. Les Donc les ports sont Tx:11, Rx:10 (ils sont définis juste au dessus)
}
void loop()
{
//si la calculatrice nous envoi quelque chose, alors on l'envoi sur l'ordi
if(serialCalc.available())
Serial.write(serialCalc.read());
//si l'ordi nous envoi quelque chose, alors on l'envoi sur la calculatrice
if(Serial.available())
serialCalc.write(Serial.read());
}
Voilà !
Albert Einstein
Citer : Posté le 28/08/2020 00:54 | #
Glad I could help
Citer : Posté le 07/09/2020 12:54 | #
Bug Report: "" commands are very slow
This is because the screen is refreshed everytime a new character is displayed, rather than after the entire string, like in normal CASIO Basic
Create a program like
"1234567890ABCDEFGHIJ"
"1234567890ABCDEFGHIJ"
"1234567890ABCDEFGHIJ"
"1234567890ABCDEFGHIJ"
"1234567890ABCDEFGHIJ"
"1234567890ABCDEFGHIJ"
Notice how every single character of each line is sent to the screen separately, instead of the entire line all at once
This ends up making C.Basic being slower than normal CASIO Basic
(Can be more easily seen when using a ScreenReceiver tool)
Citer : Posté le 07/09/2020 13:14 | #
Usually C.Basic native rendering functions such as those from MonochromeLib are much faster. There might be options to Locate and LocateYX to not refresh the VRAM too.
Citer : Posté le 31/08/2021 18:04 | #
il est ou le code source?
Citer : Posté le 31/08/2021 20:44 | #
On page 26
Citer : Posté le 07/01/2022 10:10 | #
Désolé si je ressors un topic du fin fond des abîmes mais, franchement, WAOUW
Du Casio Basic avec des graphismes fluides, des fonctions graphiques étendues, des switchs, elseIf, des sous-programmes prenant des arguments et renvoyant des valeurs, la possibilité d'utiliser plus de variables que A~Z, je n'aurai même pas oser en rêver quand j'ai commencé le Basic Casio (bon, ok, c'était il y a 15 ans ) ... et tu l'as fait !
Sans oublier l'éditeur qui ajoute pas mal de petites fonctionnalités. C'est juste incroyable comme travail. C'est bien simple, c'est la seule raison pour laquelle je viens de racheter une calculatrice après avoir crashé la mienne
Merci pour ce travail incroyable, qui me permet de rédécouvrir le plaisir du Casio Basic, tout en profitant de fonctionnalités que je me suis habitué à utiliser dans d'autres langages. Enfin fini de passer d'un programme à un autre avec des stockages dans des variables temporaires ou d'enchaîner des If imbriqués
En tous cas, je me vais me faire un plaisir de tester tout ça
Citer : Posté le 18/02/2022 05:28 | #
Bug report:
Mat Ans memory is not seperate from List Ans memory
running this code will assign [5,6,7,8] to Mat Ans
// [0,1]
// [2,3]
{5,6,7,8}
// 5
// 6
// 7
// 8
Mat Ans
(not to be confused with Ans, which is a variable)
Ajouté le 18/02/2022 à 05:31 :
I notice @Sentaro21 hasn't been on in a while
is there a way to contact him?
Also running
1->A
This because C.Basic tries to the find closing ], but instead finds 1, which causes a syntax error
In normal basic, the closing ] is optional
I did notice that having it at the end of the file causes no error
Citer : Posté le 18/02/2022 09:00 | #
Yeah Sentaro is very busy IRL as far as I understand. CalcLoverHK has been maintaining documentation, but I don't think there's anyone other than Sentaro who can work on the code right now.
Citer : Posté le 24/01/2023 11:08 | #
Est-ce que quelqu'un aurait un exemple d'utilisation de DrawMat sur une calculatrice monochrome ? J'ai essayé de me baser sur les exemples dans la doc mais je n'ai jamais réussi à afficher quoi que ce soit :/
Citer : Posté le 25/01/2023 18:33 | # | Fichier joint
Pour DrawMat, c'est très facile :
[1,0,1]
[1,1,1]]→Mat B
DrawMat Mat B[1,1],X,Y,3,3
Affiche un petit carré avec un pixel blanc au milieu.
Maintenant si tu veux afficher des vraies images, tu t'en sortiras mieux avec _Bmp. Mettons que je veux afficher cette image de 16x16 :
Je convertis les pixels en bits (blanc=0, noir=1), et en les lisant ligne par ligne, de gauche à droite, je les groupe par 8 en entiers (le classique) ; je stocke le résultat dans une matrice d'octets, et j'utilise _Bmp :
_Bmp VarPtr(Mat A),X,Y,16,16
C'est plus compact et il y a pas mal de fonctions qui acceptent ce format.
Citer : Posté le 01/02/2023 00:20 | #
Oups, je viens seulement de voir ton message, désolé
De fait, j'avais trouvé pour drawMat, mais le conseil de _bmp me sera très utile pour réduire la taille de mon programme Merci !
PS: Mais du coup, on est obligé d'avoir un multiple de 8 pour la longueur et la largeur ?
Citer : Posté le 01/02/2023 08:05 | #
PS: Mais du coup, on est obligé d'avoir un multiple de 8 pour la longueur et la largeur ?
Pour le stockage, tu es obligé de compléter chaque ligne pour atteindre un multiple de 8 (ie. chaque nombre dans la matrice est sur une seule ligne, si un nombre n'est pas complet en fin du ligne tu complètes avec des pixels blancs et tu commences la prochaine ligne au nombre suivant), par contre si tu mets une lrgeur qui n'est pas multiple de 8 dans _Bmp, il va afficher ce que tu veux, ie. ignorer les pixels blancs de remplissage.
Citer : Posté le 28/05/2023 20:30 | #
Salut, je voulais savoir : comment contrôler le rafraîchissement de l'écran ? Je suis allé lire le manuel mais il n'y a pas d'explications précises.
Quelqu'un pourrait m'expliquer ?
Ce que j'aimerais c'est pouvoir contrôler le rafraîchissement pour que cela soit constant pour éviter que mes FPS changent en fonction du nombre d'infos à traiter
Citer : Posté le 28/05/2023 20:45 | #
@Dimartino
It looks like you are looking for the TicksWait command. TicksWait accepts negative value alongside the positive one, and its usage is a bit different.
From C.Basic Wiki (https://cbasic.fandom.com/wiki/Commands/TicksWait):
Skips the pause otherwise, or if executing it for the first time.
Using the following program as a example:
<statements>
TicksWait -8
LpWhile 1
Assume <statements> take 2 ticks to complete, then "TicksWait -8" will create 6 ticks pause such that the loop runs constantly at 16 fps. In other words, the duration of the pause created by "TicksWait -8" depends on the total time spent by the previous statements.
Citer : Posté le 31/05/2023 11:35 | #
Salut, j'ai une nouvelle question : est-il possible de récupérer la vram pour la stocker dans une matrice ? Donc une matrice de 127x63 ?
Citer : Posté le 31/05/2023 12:11 | #
Oui : https://gitlab.com/sentaro21/cbasic/blob/master/FX/Manual_FR.txt#L234-235
Citer : Posté le 31/05/2023 13:11 | #
Merci beaucoup, ça réduit mon temps de chargement entre les maps de 3 secondes à 0.1s !