#include "fxlib.h"
#include "stdio.h"
unsigned int key;
int caractere, caractere2;
char chaine[21];
char ident[21];
char domaine[30];
char mdp[30];
char destinataire[40];
char sujet[30];
char corps[50];
int AddIn_main(int isAppli, unsigned short OptionNum){
Bdisp_AllClr_DDVRAM();
demmarage();
identif();
return 1;
}
demmarage(){
int key;
Bdisp_AllClr_DDVRAM();
PrintMini(80,58,"Version 1.0",0);
Bdisp_DrawLineVRAM(10,10,10,50);
Bdisp_DrawLineVRAM(10,50,117,50);
Bdisp_DrawLineVRAM(117,50,117,10);
Bdisp_DrawLineVRAM(10,10,117,10);
Bdisp_DrawLineVRAM(10,10,63,25);
Bdisp_DrawLineVRAM(117,10,63,25);
locate(7,5);
Print("Messagerie");
do{
GetKey(&key);
} while(key != 30004);
Bdisp_AllClr_DDVRAM();
}
identif(){
Bdisp_AllClr_DDVRAM();
locate(1,1);
Print("Identifiant:");
locate(1,2);
Print("+------------------+");
locate(1,3);
Print("| |");
locate(1,4);
Print("+------------------+");
remplichaine();
caractere2=0;
do{
caractere2++;
ident[caractere2] = chaine[caractere2];
} while(caractere2+1 != caractere);
========================== > ICI < ========
locate(2,3);
Print(ident);
do{
GetKey(&key);
} while(key != 30004);
}
remplichaine(){
caractere=0;
do{
caractere++;
======================= > ET ICI < ========
locate(2,3);
Print(chaine);
GetKey(&key);
//==========Conversion==========
if (key==48)key= 71;
if (key==46)key= 61;
if (key==15)key= 51;
if (key==135)key= 41;
if (key==30004)key= 31;
if (key==49)key= 72;
if (key==50)key= 62;
if (key==51)key= 52;
if (key==137)key= 42;
if (key==153)key= 32;
if (key==52)key= 73;
if (key==53)key= 63;
if (key==54)key= 53;
if (key==169)key= 43;
if (key==185)key= 33;
if (key==55)key= 74;
if (key==56)key= 64;
if (key==57)key= 54;
if (key==30025)key= 44;
if (key==30015)key= 34;
if (key==187)key= 75;
if (key==30046)key= 65;
if (key==40)key= 55;
if (key==41)key= 45;
if (key==44)key= 35;
if (key==14)key= 25;
if (key==30001)key= 76;
if (key==149)key= 66;
if (key==133)key= 56;
if (key==129)key= 46;
if (key==130)key= 36;
if (key==131)key= 26;
if (key==30007)key= 77;
if (key==205)key= 67;
if (key==168)key= 57;
if (key==30002)key= 47;
if (key==30023)key= 37;
if (key==30021)key= 27;
if (key==30006)key= 78;
if (key==30008)key= 68;
if (key==30016)key= 58;
if (key==30020)key= 38;
if (key==30018)key= 28;
if (key==30009)key= 79;
if (key==30010)key= 69;
if (key==30011)key= 59;
if (key==30012)key= 49;
if (key==30013)key= 39;
if (key==30014)key= 29;
//==============================
if(key==31)caractere=19;
if(key==76)chaine[caractere]='a';
if(key==66)chaine[caractere]='b';
if(key==56)chaine[caractere]='c';
if(key==46)chaine[caractere]='d';
if(key==36)chaine[caractere]='e';
if(key==26)chaine[caractere]='f';
if(key==75)chaine[caractere]='g';
if(key==65)chaine[caractere]='h';
if(key==55)chaine[caractere]='i';
if(key==45)chaine[caractere]='j';
if(key==35)chaine[caractere]='k';
if(key==25)chaine[caractere]='l';
if(key==74)chaine[caractere]='m';
if(key==64)chaine[caractere]='n';
if(key==54)chaine[caractere]='o';
if(key==73)chaine[caractere]='p';
if(key==63)chaine[caractere]='q';
if(key==53)chaine[caractere]='r';
if(key==43)chaine[caractere]='s';
if(key==33)chaine[caractere]='t';
if(key==72)chaine[caractere]='u';
if(key==62)chaine[caractere]='v';
if(key==52)chaine[caractere]='w';
if(key==42)chaine[caractere]='x';
if(key==32)chaine[caractere]='y';
if(key==71)chaine[caractere]='z';
if(key==61)chaine[caractere]='.';
if(key==57)chaine[caractere]='@';
} while(caractere!=19);
if(key==31)chaine[caractere]='\0';
if(key!=31)chaine[caractere+1]='\0';
}
#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
Citer : Posté le 21/08/2014 17:41 | #
je pensais que jamais je ne mettrais un commentaire là mais j'ai un system error sur
char charge_val[3];
for (charge = 0; charge<100; charge ++ )
{
sprintf(charge_val,"%d",charge);
PrintMini(92,58,charge_val,0);
}
Je sais pas d'où ça viens
Citer : Posté le 21/08/2014 17:52 | #
Tu as inclus stdio.h au début du fichier ?
Citer : Posté le 18/09/2014 19:23 | #
Bon c'est un peut en train de me rendre fou:
GetKey(&key);
if(key == KEY_CTRL_EXIT || key == KEY_CTRL_F6){
Serial_Close(0);
SaveDisp(2);
fenetre_f(0,45,2);
for(i=10;i>=0;i--){
ML_clear_vram();
ML_bmp_or_cl(banniere_mp, 0, 56-i, 128, 8 );
ML_bmp_or_cl(banniere_convois, 0, 65-i, 128, 8 );
ML_display_vram();
Sleep(50);
}
return;
}
if(key == KEY_CTRL_EXE) break;
}
Si j’appuie sur EXE ça marche, mais si j’appuie sur Exit ou F6 ca marche pas :aie2:
Citer : Posté le 18/09/2014 19:26 | #
tu devrai essayer avec le numéro des touches
Citer : Posté le 18/09/2014 19:29 | #
C'est pas du a ça, juste après j'utilise le KEY_CTRL_EXIT et ca marche. De toute façon, ce sont des simples directives processeur donc je vois pas comment ça pourrait empêcher ça
Mais merci quand même
Citer : Posté le 18/09/2014 19:31 | #
Mais sinon pour simplifier tu ne pourrais pas écrire key(KEY_CTRL_EXIT) ?
Citer : Posté le 18/09/2014 19:32 | #
key() ?
Citer : Posté le 18/09/2014 19:34 | #
TheProg, les defines sont fait pour faciliter la vie, si tu ne les utilisent pas, ton code est moins compréhensibles
Citer : Posté le 18/09/2014 19:36 | #
Mais j'ai jamais dit le contraire
Je repondait a Flo qui me disait que ca pouvait venir de la
Citer : Posté le 18/09/2014 20:05 | #
T'es sûr que le code à l'intérieur du bloc est pas exécuté ?
Citer : Posté le 18/09/2014 20:14 | #
Ben si le code dans la boucle est exécuté vu qu'en appuyant sur EXE j'en sort et j’accède a la suite du programme ...
Citer : Posté le 18/09/2014 20:47 | #
Oui mais le code qui est censé ne pas être exécuté même lorsque tu appuies sur [EXIT] ou [F6]... peut-être qu'il est exécuté mais que tu le vois pas...
Citer : Posté le 18/09/2014 21:23 | #
Comprend pas
{
const unsigned char banniere_mp[]={
0x3f,0xff,0xf9,0xff,0xff,0xcf,0xff,0xfe,0x7f,0xff,0xf3,0xff,0xff,0x9f,0xff,0xfc,
0x2a,0xaa,0xa9,0x55,0x55,0x4a,0xaa,0xaa,0x55,0x55,0x52,0x0,0x0,0x15,0x55,0x54,
0x35,0x55,0x51,0xaa,0xea,0x8d,0x55,0xd4,0x6a,0xee,0xa2,0x1,0x80,0x1a,0xae,0xa8,
0x2a,0xfe,0xa9,0x55,0xf5,0x4a,0xbf,0xea,0x55,0x7d,0x52,0xf,0x38,0x15,0x7d,0x54,
0x35,0xdf,0x51,0xbb,0xbb,0x8d,0x5d,0xd4,0x6a,0xee,0xa2,0x1f,0x3c,0x1a,0xef,0xa8,
0x2a,0xfe,0xa9,0x5f,0xff,0x4a,0xaa,0xaa,0x55,0xd7,0x52,0x18,0x6c,0x15,0x75,0xd4,
0x35,0xff,0x51,0xbf,0xff,0x8d,0x5d,0xd4,0x6a,0xaa,0xa2,0x18,0xc,0x1a,0xff,0xa8,
0x2a,0x7e,0xa9,0x5f,0xff,0x4a,0xbe,0xaa,0x55,0x7d,0x52,0x18,0xc,0x15,0x7f,0x54
};
const unsigned char banniere_convois[]={
0x3f,0xff,0xf9,0xff,0xff,0xcf,0xff,0xfe,0x7f,0xff,0xf3,0xff,0xff,0x9f,0xff,0xfc,
0x20,0x0,0x9,0x0,0x0,0x8,0x0,0x2,0x40,0x0,0x2,0x0,0x0,0x90,0x0,0x0,
0x20,0x0,0x9,0x30,0x1,0x8,0x0,0x2,0x58,0x0,0x2,0x0,0x0,0x90,0xe,0x0,
0x20,0x0,0x9,0x42,0x63,0x8,0x0,0x2,0x54,0x8d,0x42,0x0,0x0,0x90,0xe,0x0,
0x20,0x0,0x9,0x25,0x55,0x8,0x0,0x2,0x59,0x51,0x42,0x0,0x0,0x90,0x1f,0x0,
0x20,0x0,0x9,0x14,0x55,0x8,0x0,0x2,0x55,0x11,0x42,0x0,0x0,0x90,0xe,0x0,
0x20,0x0,0x9,0x63,0x53,0x8,0x0,0x2,0x54,0xcc,0x82,0x0,0x0,0x90,0x4,0x0,
0x3f,0xff,0xf9,0x0,0x0,0xf,0xff,0xfe,0x40,0x0,0x3,0xff,0xff,0x90,0x0,0x0
};
int i, erreur1, erreur2;
unsigned int j, k, temps, temps_m, temps_h, temps_j, key;
unsigned char buffer[50];
unsigned char config[] = {0, 5, 0, 0, 0, 0};
char communication = '0';
fenetre_f(0,54,1);
for(i=0;i<10;i++){
ML_clear_vram();
ML_bmp_or_cl(banniere_mp, 0, 56-i, 128, 8);
ML_bmp_or_cl(banniere_convois, 0, 65-i, 128, 8);
ML_display_vram();
Sleep(50);
}
PrintMini(3,3, "CONVOIS:", 0);
SaveDisp(2);
fenetre_o(0,45,2);
SaveDisp(2);
Serial_Open(config);
Serial_ClearReceiveBuffer();
Serial_ClearTransmitBuffer();
ML_rectangle(2,56,125,65,1,ML_BLACK,ML_WHITE);
PrintMini(3,17, "Connectez les 2 calculatrices", 0);
PrintMini(3,24, "puis appuyez sur [EXE]...", 0);
ML_display_vram();
while(1){
GetKey(&key);
if(key == KEY_CTRL_EXIT || key == KEY_CTRL_F6){
Serial_Close(0);
SaveDisp(2);
fenetre_f(0,45,2);
for(i=10;i>=0;i--){
ML_clear_vram();
ML_bmp_or_cl(banniere_mp, 0, 56-i, 128, 8);
ML_bmp_or_cl(banniere_convois, 0, 65-i, 128, 8);
ML_display_vram();
Sleep(50);
}
return;
}
if(key == KEY_CTRL_EXE) break;
}
ML_clear_vram();
RestoreDisp(2);
ML_rectangle(2,56,125,65,1,ML_BLACK,ML_WHITE);
PrintMini(3,17, "Test de connection", 0);
PrintMini(3,24, "( [EXIT] pour interrompre )", 0);
ML_display_vram();
communication = 'T';
Serial_WriteByte(communication);
communication = 'N';
i = 500;
while(sizeof(char) != Serial_GetRxBufferSize() && IsKeyUp(KEY_CTRL_EXIT) && i) i--, Sleep(10);
Serial_ReadByte(&communication);
if(communication == 'T'){
ML_clear_vram();
RestoreDisp(2);
PrintMini(3,20, "Connection reussie !", 0);
ML_display_vram();
Sleep(3000);
Serial_ClearReceiveBuffer();
Serial_ClearTransmitBuffer();
do{
if(IsKeyDown(KEY_CTRL_F2)){
ML_clear_vram();
RestoreDisp(2);
ML_rectangle(2,56,125,65,1,ML_BLACK,ML_WHITE);
PrintMini(3,17, "Demande en cours...", 0);
PrintMini(3,24, "( [EXIT] pour interrompre )", 0);
ML_display_vram();
// DEMANDE D'ENVOIE
Serial_WriteByte('S');
communication = 0;
i = 5000;
while(sizeof(char) != Serial_GetRxBufferSize() && IsKeyUp(KEY_CTRL_EXIT) && i) i--, Sleep(1);
Serial_ReadByte(&communication);
// ETUDE RETOUR
if(communication == 'O'){
ML_clear_vram();
RestoreDisp(2);
PrintMini(3,20, "Demande acceptee !", 0);
ML_display_vram();
Sleep(2000);
envoie();
break;
}
else if(communication == 'R'){
ML_clear_vram();
RestoreDisp(2);
PrintMini(3,20, "Demande acceptee !", 0);
ML_display_vram();
Serial_WriteByte('O');
Sleep(2000);
recevoir();
break;
}
else if(communication == 'N'){
ML_clear_vram();
RestoreDisp(2);
PrintMini(3,20, "Demande refusee !", 0);
ML_display_vram();
Sleep(2000);
break;
}
else if(communication == 'S'){
ML_clear_vram();
RestoreDisp(2);
PrintMini(3,20, "Mettez-vous d'accord !", 0);
ML_display_vram();
Serial_ClearReceiveBuffer();
Serial_ClearTransmitBuffer();
}
else{
ML_clear_vram();
RestoreDisp(2);
PrintMini(3,20, "Echec communication...", 0);
Serial_WriteByte('F');
ML_display_vram();
Sleep(2000);
break;
}
}
if(IsKeyDown(KEY_CTRL_F4)){
ML_clear_vram();
RestoreDisp(2);
ML_rectangle(2,56,125,65,1,ML_BLACK,ML_WHITE);
PrintMini(3,17, "Demande en cours...", 0);
PrintMini(3,24, "( [EXIT] pour interrompre )", 0);
ML_display_vram();
// DEMANDE D'ENVOIE
Serial_WriteByte('R');
communication = 0;
i = 5000;
while(sizeof(char) != Serial_GetRxBufferSize() && IsKeyUp(KEY_CTRL_EXIT) && i) i--, Sleep(1);
Serial_ReadByte(&communication);
// ETUDE RETOUR
if(communication == 'O'){
ML_clear_vram();
RestoreDisp(2);
PrintMini(3,20, "Demande acceptee !", 0);
ML_display_vram();
Sleep(2000);
recevoir();
break;
}
else if(communication == 'S'){
ML_clear_vram();
RestoreDisp(2);
PrintMini(3,20, "Demande acceptee !", 0);
ML_display_vram();
Serial_WriteByte('O');
Sleep(2000);
recevoir();
break;
}
else if(communication == 'N'){
ML_clear_vram();
RestoreDisp(2);
PrintMini(3,20, "Demande refusee !", 0);
ML_display_vram();
Sleep(2000);
break;
}
else if(communication == 'R'){
ML_clear_vram();
RestoreDisp(2);
PrintMini(3,20, "Mettez-vous d'accord !", 0);
ML_display_vram();
Serial_ClearReceiveBuffer();
Serial_ClearTransmitBuffer();
}
else{
ML_clear_vram();
RestoreDisp(2);
PrintMini(3,20, "Echec communication...", 0);
Serial_WriteByte('F');
ML_display_vram();
Sleep(2000);
break;
}
}
if(IsKeyDown(KEY_CTRL_F6) || IsKeyDown(KEY_CTRL_EXIT)) break;
if(sizeof(char) == Serial_GetRxBufferSize()){
Serial_ReadByte(&communication);
if(communication == 'S'){
ML_clear_vram();
RestoreDisp(2);
ML_rectangle(2,56,125,65,1,ML_BLACK,ML_WHITE);
PrintMini(3,17, " Voulez-vous recevoir ?", 0);
PrintMini(3,24, "( [EXE] OUI / [EXIT] NON )", 0);
ML_display_vram();
communication = 0;
do{
if(IsKeyDown(KEY_CTRL_EXE)) communication = 'O';
if(IsKeyDown(KEY_CTRL_EXIT)) communication = 'N';
}while(communication == 0);
Serial_WriteByte(communication);
if(IsKeyDown(KEY_CTRL_EXIT)) break;
ML_clear_vram();
RestoreDisp(2);
PrintMini(3,20, "Demande acceptee !", 0);
ML_display_vram();
Sleep(2000);
recevoir();
break;
}
if(communication == 'R'){
ML_clear_vram();
RestoreDisp(2);
ML_rectangle(2,56,125,65,1,ML_BLACK,ML_WHITE);
PrintMini(3,17, " Voulez-vous envoyer ?", 0);
PrintMini(3,24, "( [EXE] OUI / [EXIT] NON )", 0);
ML_display_vram();
communication = 0;
do{
if(IsKeyDown(KEY_CTRL_EXE)) communication = 'O';
if(IsKeyDown(KEY_CTRL_EXIT)) communication = 'N';
}while(communication == 0);
Serial_WriteByte(communication);
if(IsKeyDown(KEY_CTRL_EXIT)) break;
ML_clear_vram();
RestoreDisp(2);
PrintMini(3,20, "Demande acceptee !", 0);
ML_display_vram();
Sleep(2000);
envoie();
break;
}
}
}while(1);
}
else{
ML_clear_vram();
RestoreDisp(2);
ML_rectangle(2,56,104,65,1,ML_BLACK,ML_WHITE);
PrintMini(3,17, "Echec de la connection", 0);
PrintMini(3,25, "Reponse trop lente", 0);
ML_display_vram();
while(IsKeyDown(KEY_CTRL_F6) || IsKeyDown(KEY_CTRL_EXIT));
while(IsKeyUp(KEY_CTRL_F6) && IsKeyUp(KEY_CTRL_EXIT));
}
Serial_Close(0);
SaveDisp(2);
fenetre_f(0,45,2);
for(i=10;i>=0;i--){
ML_clear_vram();
ML_bmp_or_cl(banniere_mp, 0, 56-i, 128, 8);
ML_bmp_or_cl(banniere_convois, 0, 65-i, 128, 8);
ML_display_vram();
Sleep(50);
}
}
Citer : Posté le 18/09/2014 21:47 | #
C'est pas grave, laisse tomber.
T'as essayé de conditionner ton bloc qui s'exécute pas par la touche [EXE] pour voir ?
Citer : Posté le 18/09/2014 21:53 | #
Pas con, c'est fou comment parfois tu me résous des problèmes en 5 minutes, ça m'énerfe, tout ca pour des macarons, mas bon, y parait qu'ils sont bons
Sinon ca marche avec EXE, comme quoi j'ai négligé Flo mais il avait peut-être pas totalement tord
Citer : Posté le 18/09/2014 21:55 | #
À mon avis il avait même carrément raison.
Bref, t'as essayé -- même si c'est pas forcément recommandé, ce qui ne m'empêche pas de le faire tout le temps -- de remplacer KEY_CTRL_EXIT par 30002 et KEY_CTRL_F6 par 30014 ?
Et tu es sûr d'avoir inclus keybios.h ou à défaut, fxlib.h dans le fichier source ?
Citer : Posté le 18/09/2014 22:02 | #
C'etait sur que non dans le sens ou il y a 44 occurrences de KEY_CTRL_F6 ou de KEY_CTRL_EXIT dans mon code et que c'est les deux seuls qui ne marchent pas
(oui avec les codes non plus ca marche pas )
Citer : Posté le 19/09/2014 06:37 | #
... ça m'énerfe, tout ca pour des macarons, mas bon, y parait qu'ils sont bons ...
Citer : Posté le 02/10/2014 20:36 | #
Trouvé
Salut,
J'ai encore des soucis avec les types de variables (int/doucle) pour mon Fourmizzz.
Le probleme se fait a l'affichage des barres dans le menu principal, quand on lance l'add-in. En fait, j'ai un nombre n de nourriture, un nombre m qui definit la quantité max de stockage. Ce que je veux c'est afficher une barre sur 100 pixels qui soit a 100 pixels pour l'entrepot rempli au max et a 0 pixel pour le min (evident).
Voila ce que je fait actuellement:
for(i=0;i<data[2][2];i++)
j=j*2-500;
i=j;
j=100000/j*data[0][1];
ML_horizontal_line(16, 4, j/1000+4, ML_BLACK);
1700 est le m pour le niveau de base, que l'on multiplie par 2 et auquel on retranche 500 pour avoir le niveau supperieur.
Et apres c'est le merdier
On a aussi data[0][1] qui equivaut a n.
Les data, i et sont des entiers.
Ajouté le 09/10/2014 à 18:24 :
Pour flo:
unsigned int unite[12] = {0};
const char nom_unite[12][25]={
"Jeunes soldates naines",
"Soldates naines",
"Naines d'elite",
"Jeunes soldates",
"Soldates",
"Concierges",
"Artilleuses",
"Artilleuses d'elite",
"Soldates d'elite",
"Tanks",
"Tueuses",
"Tueuses d'elite"
};
PrintMini(35,22,nom_unite[type],0);
sprintf(buffer, "%u", unite[type]);
PrintMini(35,29,buffer,0);
Citer : Posté le 09/10/2014 19:01 | #
Pourquoi tu t'embêtes ? Tu peux pas utiliser un truc simple des fois ?
Bon, je vois pas trop comment fonctionne ton code mais il te suffit de tracer une ligne, après c'est selon ton ui.
Attention à bien faire la multiplication avant la division !
Citer : Posté le 01/12/2014 21:18 | #
Retour des problèmes
Je pensait qu'il était possible de déclarer des variables dans des if mais j'ai une erreur:
{
int tx, ty;
if(type == BRIQUE)
{
const unsigned char sprite[]={
0x6f, 0x9f, 0x9f, 0xbf, 0x9f, 0x9f, 0xdf,
0x9f, 0x9f, 0xbf, 0x9f, 0x9f, 0xdf, 0x9f, 0x6f,
};
tx = 4;
ty = 15;
}
ML_bmp_or_cl(sprite, x, y, tx, ty);
}
L'erreur c'est a la ligne du ML_bmp: C2225 (E) Undeclared name "sprite"