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
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:
d'après la doc
D'après quelle doc ?
Citer : Posté le 14/11/2020 11:29 | #
Très certainement la documentation des bibliothèques fournies dans le fx-9860G SDK de CASIO.
Mon blog ⋅ Mes autres projets
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" ?
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 :
#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.
Mon blog ⋅ Mes autres projets
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
Citer : Posté le 14/11/2020 11:48 | #
Super ! beaucoup!