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 - Autres questions


Index du Forum » Autres questions » Une erreur que google ne connait pas sur Bfile :O
Ziqumu Hors ligne Membre d'honneur Points: 3055 Défis: 9 Message

Une erreur que google ne connait pas sur Bfile :O

Posté le 28/02/2012 17:45

Bonjour a tous, Bfile_WriteFile me return l'erreur -31, qui veut dire d'apprès la doc "IML_FILEERR_DEVICEERROR" et le problème se pose sur l'emulateur comme sur la calto. je vais vous expliquer un peu sur quoi je bosse pour que vous compreniez mieu le code qui est un peu sale actuellement. N'hesitez pas a me le dire si vous avez des idées pour améliorer aussi :P

je développe actuellement une methode pour pouvoir enregistrer des "images de l'écran" sur la memoire de la calto. Le but est que le fichier soit le plus petit possible donc j'utilise des char pour stocker les coordonnées.
- Le fichier commence donc par un char qui vaut 1 si la suite donne les coordonnées des point noir, ou 0 si c'est les coorodonées des points blanc.
- Pour tous les autres, lorsque le nombre est négatif c'est une ligne, et les nombres positifs suivant sont les colonnes des points que l'on cherche.


Bref voici le code en question


#include "fxlib.h"
#include "stdio.h"
//#include "revolution\revolution.h"
//#include "syscall.h"
//#include "generalfunc.h"

int AddIn_main(int isAppli, unsigned short OptionNum)
{
//init vars
    char test[300];
    int file;
    char chap;
    char stringPage[50];
    char screen[128][64] = {0};
    char x, y, pxmode, tempchar;
    unsigned short int nbrpixelsON, filesize; //nbrpixelsON:max 8182;moitie 4091
    FONTCHARACTER directory[] = {'\','\','f','l','s','0','\','c','o','u','r','s',0};
    FONTCHARACTER filename[] = {'\','\','f','l','s','0','\','c','o','u','r','s','\','t','e','s','t','h','.','g','a','h',0};

//contenu de l'ecran, lorsque c'est egal a 1, le point est noir, le reste est blanc
    screen[2][3]=1;
    screen[13][3]=1;
    screen[123][62]=1;
    
//compte le nombre de pixel noir et calcul de la taille du fichier
    nbrpixelsON=0;
    filesize=1;
    tempchar=0;
    for(y=0;y<=63;y++)
    {
        for(x=0;x<=127 && x>-10;x++)
        {
            if(screen[x][y]==1)
            {
                if(tempchar!=y)
                {
                    filesize++;
                    tempchar=y;
                }
                filesize++;
                nbrpixelsON++;
            }
        }
    }

//si plus de pixel noir que de blanc, mode blanc
    if(nbrpixelsON<4091){pxmode=1;}else{pxmode=0;}

//creation du dichier et du dossier
    Bfile_CreateDirectory(directory);
    Bfile_DeleteFile(filename);
    Bfile_CreateFile(filename, filesize);
    file = Bfile_OpenFile(filename, _OPENMODE_WRITE);
//remplissage
    Bfile_WriteFile(file, &pxmode, 1);
    tempchar=1;
    for(y=0;y>=-63;y--)
    {
        for(x=0;x<=127 && x>-10;x++)
        {
            if(screen[x][y*-1]==1)
            {                
                if(tempchar!=y)
                {
                    tempchar=Bfile_WriteFile(file, &y, 1);
                    tempchar=y;
                }
                Bfile_WriteFile(file, &x, 1);
            }
        }
    }
//fermeture
    Bfile_CloseFile(file);

    
//lecture
            //    int file;
            //FONTCHARACTER filename[] = {'\','\','f','l','s','0','\','Z','i','q','G','y','v','e','r','\','M','a','t','h','s','.','s','a','v',0};
    file = Bfile_OpenFile(filename, _OPENMODE_READ);
    if(file>=0) {
        Bfile_ReadFile(file, &chap, 1,0);
        Bfile_ReadFile(file, &test[0], 1,1);
        Bfile_ReadFile(file, &test[1], 2,2);
        Bfile_ReadFile(file, &test[2], 2,3);
        Bfile_ReadFile(file, &test[3], 1,4);    
        Bfile_ReadFile(file, &test[4], 1,5);    
        Bfile_CloseFile(file);
    }
    //ecriture a l'ecran
    Bdisp_AllClr_DDVRAM();
    sprintf(stringPage, "%d.%d.%d.%d.%d",chap,test[0],test[1],test[2],test[3]);
    PrintMini(0,59,(unsigned char*)stringPage,MINI_OVER);//resultat de la lecture : 1.-1.-1.-1.-1
    PrintMini(0,53,(unsigned char*)"1.-3.2.13.-62.123",MINI_OVER); // ce qu'il devrait renvoiyer : 1.-3.2.13.-62.123
    Bdisp_PutDisp_DD();
    //sleep pour voir l'ecran
    Sleep(5000);
    return 1;
}


#pragma section _BR_Size
unsigned long BR_Size;
#pragma section
#pragma section _TOP
int InitializeSystem(int isAppli, unsigned short OptionNum)
{
    return INIT_ADDIN_APPLICATION(isAppli, OptionNum);
}
#pragma section


Merci d'avance si vous pouvez m'aider


Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 14/11/2020 11:25 | #


Désolé pour le déterrage, mais je cherchais justement une documentation qui rassemblerait les erreurs liées à Bfile.
Et donc:
Ziqumu a écrit :
d'après la doc

D'après quelle doc ?
Cakeisalie5 En ligne Membre de CreativeCalc Points: 1872 Défis: 10 Message

Citer : Posté le 14/11/2020 11:29 | #


Très certainement la documentation des bibliothèques fournies dans le fx-9860G SDK de CASIO.

Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !

Mon blogBesoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 14/11/2020 11:35 | #


Oui, mais le problème, c'est que les erreurs sont dites "déclarées dans filebios.h", et sans instructions supplémentaires… Du coup, où pourrait-on avoir accès à "filebios.h" ?
Cakeisalie5 En ligne Membre de CreativeCalc Points: 1872 Défis: 10 Message

Citer : Posté le 14/11/2020 11:39 | #


Voici ce qui concerne les erreurs dans filebios.h, qui est l'un des fichiers disponibles quand tu installes le fx-9860G SDK de CASIO :

filebios.h
Cliquez pour recouvrir
// File system standard error code
#define IML_FILEERR_NOERROR             0
#define IML_FILEERR_ENTRYNOTFOUND       -1
#define IML_FILEERR_ILLEGALPARAM        -2
#define IML_FILEERR_ILLEGALPATH         -3
#define IML_FILEERR_DEVICEFULL          -4
#define IML_FILEERR_ILLEGALDEVICE       -5
#define IML_FILEERR_ILLEGALFILESYS      -6
#define IML_FILEERR_ILLEGALSYSTEM       -7
#define IML_FILEERR_ACCESSDENYED        -8
#define IML_FILEERR_ALREADYLOCKED       -9
#define IML_FILEERR_ILLEGALTASKID       -10
#define IML_FILEERR_PERMISSIONERROR     -11
#define IML_FILEERR_ENTRYFULL           -12
#define IML_FILEERR_ALREADYEXISTENTRY   -13
#define IML_FILEERR_READONLYFILE        -14
#define IML_FILEERR_ILLEGALFILTER       -15
#define IML_FILEERR_ENUMRATEEND         -16
#define IML_FILEERR_DEVICECHANGED       -17
//#define IML_FILEERR_NOTRECORDFILE     -18     // Not used
#define IML_FILEERR_ILLEGALSEEKPOS      -19
#define IML_FILEERR_ILLEGALBLOCKFILE    -20
//#define IML_FILEERR_DEVICENOTEXIST    -21     // Not used
//#define IML_FILEERR_ENDOFFILE         -22     // Not used
#define IML_FILEERR_NOTMOUNTDEVICE      -23
#define IML_FILEERR_NOTUNMOUNTDEVICE    -24
#define IML_FILEERR_CANNOTLOCKSYSTEM    -25
#define IML_FILEERR_RECORDNOTFOUND      -26
//#define IML_FILEERR_NOTDUALRECORDFILE -27     // Not used
#define IML_FILEERR_NOTALARMSUPPORT     -28
#define IML_FILEERR_CANNOTADDALARM      -29
#define IML_FILEERR_FILEFINDUSED        -30
#define IML_FILEERR_DEVICEERROR         -31
#define IML_FILEERR_SYSTEMNOTLOCKED     -32
#define IML_FILEERR_DEVICENOTFOUND      -33
#define IML_FILEERR_FILETYPEMISMATCH    -34
#define IML_FILEERR_NOTEMPTY            -35
#define IML_FILEERR_BROKENSYSTEMDATA    -36
#define IML_FILEERR_MEDIANOTREADY       -37
#define IML_FILEERR_TOOMANYALARMITEM    -38
#define IML_FILEERR_SAMEALARMEXIST      -39
#define IML_FILEERR_ACCESSSWAPAREA      -40
#define IML_FILEERR_MULTIMEDIACARD      -41
#define IML_FILEERR_COPYPROTECTION      -42
#define IML_FILEERR_ILLEGALFILEDATA     -43


À noter que des recherches ont été faites et que davantage d'informations ont été trouvées sur le système de fichiers utilisé sur la fx-9860G et dérivées (Graph monochromes). Je n'ai plus les détails donc je laisse les initiés répondre sur ce fil.

Promotion ordinaire sur les inscriptions sur Planète Casio : en ce moment, c'est gratuit !

Mon blogBesoin d'utilitaires de transfert vers et depuis la calculatrice sous GNU/Linux ?
Yatis Hors ligne Membre Points: 579 Défis: 0 Message

Citer : Posté le 14/11/2020 11:42 | #


Yo, j'ai désassemblé une bonne partie de Bfile et il faut faire gaffe avec les valeurs d'erreur parce que ça varie en fonction de l'OS et du FS utilisé par Casio. Généralement, IML_FILEERR_DEVICEERROR et là pour indiquer que le device n'est pas monté ou qu'il n'as pas pu être monté correctement. C'est généralement mauvais signe car ça signifie qu'il y a une potentielle corruption de mémoire quelque part.

Sinon pour filebios.h

/*****************************************************************/
/*                                                               */
/*   CASIO fx-9860G SDK Library                                  */
/*                                                               */
/*   File name : filebios.h                                      */
/*                                                               */
/*   Copyright (c) 2006 CASIO COMPUTER CO., LTD.                 */
/*                                                               */
/*****************************************************************/

#ifdef __cplusplus
extern "C" {
#endif

#ifndef __FILEBIOS_H__
#define __FILEBIOS_H__


// Defines

#define FONTCHARACTER               unsigned short

#define _OPENMODE_READ              0x01
#define _OPENMODE_READ_SHARE        0x80
#define _OPENMODE_WRITE             0x02
#define _OPENMODE_READWRITE         0x03
#define _OPENMODE_READWRITE_SHARE   0x83

#define _CREATEMODE_BINARY          1
#define _CREATEMODE_DIRECTORY       5

enum DEVICE_TYPE{
    DEVICE_MAIN_MEMORY,
    DEVICE_STORAGE,
    DEVICE_SD_CARD,                 // only fx-9860G SD model
};


// File system standard error code
#define IML_FILEERR_NOERROR             0
#define IML_FILEERR_ENTRYNOTFOUND       -1
#define IML_FILEERR_ILLEGALPARAM        -2
#define IML_FILEERR_ILLEGALPATH         -3
#define IML_FILEERR_DEVICEFULL          -4
#define IML_FILEERR_ILLEGALDEVICE       -5
#define IML_FILEERR_ILLEGALFILESYS      -6
#define IML_FILEERR_ILLEGALSYSTEM       -7
#define IML_FILEERR_ACCESSDENYED        -8
#define IML_FILEERR_ALREADYLOCKED       -9
#define IML_FILEERR_ILLEGALTASKID       -10
#define IML_FILEERR_PERMISSIONERROR     -11
#define IML_FILEERR_ENTRYFULL           -12
#define IML_FILEERR_ALREADYEXISTENTRY   -13
#define IML_FILEERR_READONLYFILE        -14
#define IML_FILEERR_ILLEGALFILTER       -15
#define IML_FILEERR_ENUMRATEEND         -16
#define IML_FILEERR_DEVICECHANGED       -17
//#define IML_FILEERR_NOTRECORDFILE     -18     // Not used
#define IML_FILEERR_ILLEGALSEEKPOS      -19
#define IML_FILEERR_ILLEGALBLOCKFILE    -20
//#define IML_FILEERR_DEVICENOTEXIST    -21     // Not used
//#define IML_FILEERR_ENDOFFILE         -22     // Not used
#define IML_FILEERR_NOTMOUNTDEVICE      -23
#define IML_FILEERR_NOTUNMOUNTDEVICE    -24
#define IML_FILEERR_CANNOTLOCKSYSTEM    -25
#define IML_FILEERR_RECORDNOTFOUND      -26
//#define IML_FILEERR_NOTDUALRECORDFILE -27     // Not used
#define IML_FILEERR_NOTALARMSUPPORT     -28
#define IML_FILEERR_CANNOTADDALARM      -29
#define IML_FILEERR_FILEFINDUSED        -30
#define IML_FILEERR_DEVICEERROR         -31
#define IML_FILEERR_SYSTEMNOTLOCKED     -32
#define IML_FILEERR_DEVICENOTFOUND      -33
#define IML_FILEERR_FILETYPEMISMATCH    -34
#define IML_FILEERR_NOTEMPTY            -35
#define IML_FILEERR_BROKENSYSTEMDATA    -36
#define IML_FILEERR_MEDIANOTREADY       -37
#define IML_FILEERR_TOOMANYALARMITEM    -38
#define IML_FILEERR_SAMEALARMEXIST      -39
#define IML_FILEERR_ACCESSSWAPAREA      -40
#define IML_FILEERR_MULTIMEDIACARD      -41
#define IML_FILEERR_COPYPROTECTION      -42
#define IML_FILEERR_ILLEGALFILEDATA     -43

// FILE_INFO.type
#define DT_DIRECTORY            0x0000      // Directory
#define DT_FILE                 0x0001      // File
#define DT_ADDIN_APP            0x0002      // Add-In application
#define DT_EACT                 0x0003      // eActivity
#define DT_LANGUAGE             0x0004      // Language
#define DT_BITMAP               0x0005      // Bitmap
#define DT_MAINMEM              0x0006      // Main Memory data
#define DT_TEMP                 0x0007      // Temporary data
#define DT_DOT                  0x0008      // .  (Current directory)
#define DT_DOTDOT               0x0009      // .. (Parent directory)
#define DT_VOLUME               0x000A      // Volume label


// Structs

typedef struct tag_FILE_INFO
{
    unsigned short  id;
    unsigned short  type;
    unsigned long   fsize;                  // File size
    unsigned long   dsize;                  // Data size
    unsigned int    property;               // The file has not been completed, except when property is 0.
    unsigned long   address;
} FILE_INFO;


#endif

#ifdef __cplusplus
}
#endif
Darkjura Hors ligne Membre Points: 389 Défis: 0 Message

Citer : Posté le 14/11/2020 11:48 | #


Super ! beaucoup!

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