Moiii9  | enfaie j'ai les 3 colones de tout à droite de l'image qui s'affichent tout a gauche ...
       Colones :
 125,126,127,0,1,2,3,4,5,6,7,8,9,.....,124
     Désolé, voilà le code complet :
  
  Code :
 - /*
 - *	Alm
 - *     uServer
 - *     bmp.c
 - */
 - #include <stdio.h>;
 - #include <stdlib.h>;
 - #include <FOSSIL.H>
 - #include "fonctions.h";
 - int main(void)
 - {
 -      FILE *fichierImage;
 -      fichierImage = fopen("test.bmp", "rb" );
 -      ClearScreen();
 -      LireBmpParPixel(fichierImage);
 -      return 0;
 - }
 
  |  
 
                
  Code :
 - /*
 - *	Alm
 - *     uServer
 - *     Fonctions.h  
 - */
 - void LireBmpParPixel(FILE *fichier); // Affiche une image bmp de 5r 6v 5b de 128*128 65k couleur sur un ulcd 4D system
 - int Initialize(void);    	// Initialise le driver fossil
 - void ClearScreen(void);       // Efface tout l'écran
 - void LcdPowerUp(void);       	// Démarre l'écran
 - void LcdPowerDown(void);       // arrête l'écran
 - void LcdIntensitee(int intensitee); // Définie l'intensitée lumineuse de l'écran
 - void SetContraste(int b);
 - void DisplayState(int b);     	// L'état de l'écran allumé, ou éteint
 - unsigned char far *buffer[10];
 - /*
 - *
 - *	Affiche une image bmp de 5r 6v 5b de 128*128 65k couleur sur un ulcd 4D system
 - *
 - * Paramètre:
 - *   	  FILE *fichierImage;
 - *	     fichierImage = fopen("PictureName.bmp", "rb" );
 - *
 - * returns:
 - *  4 printf du nombre de données envoyées
 - *
 - * Remarque(s)
 - *  entre l'envoie des données et l'affichage sur le uLcd, s'écoulent quelques secondes
 - */
 - #define U 32774
 - void LireBmpParPixel(FILE *fichier)
 - {
 - 	unsigned char *buffer;
 - 	unsigned char *bufferTemp;
 - 	unsigned char *PtrStartBuffer;
 - 	unsigned char *PtrStartBufferTemp;
 - 	unsigned char *PtrBufferInverse;
 - 	unsigned char *PtrStartBufferInverse;
 - 	int caractereActuel;
 - 	int caractereActuel2;
 - 	long i =0;
 - 	long temp=0;
 - 	int caractenv=0;
 - 	buffer =(unsigned char *) malloc(U);
 - 	bufferTemp =(unsigned char *) malloc(U);
 - 	PtrBufferInverse =(unsigned char *) malloc(U);
 -    if(buffer == NULL || bufferTemp == NULL || PtrBufferInverse == NULL)
 -    	printf("Erreur allocation mémoire ..." );
 -    else
 -    {
 -         // Ajoute     I  0  0  128  128  1  (puis toute l'image)
 -         // I (La commande)
 -         // 0 (Position début de l image en x )
 -         // 0 (Position début de l image en y )
 -         // 128 (Taille horizontale de l'image)
 -         // 128 (Taille verticale de l'image)
 -         // 1 (Pour préciser que c'est en 65k couleur et non en 256 couleur)
 -   	PtrStartBuffer = buffer;
 -   	*PtrStartBuffer = 'I';
 -   	PtrStartBuffer++;
 -   	*PtrStartBuffer = (char)0;
 -   	PtrStartBuffer++;
 -   	*PtrStartBuffer = (char)0;
 -   	PtrStartBuffer++;
 -   	*PtrStartBuffer = (unsigned char)128;
 -   	PtrStartBuffer++;
 -   	*PtrStartBuffer = (unsigned char)128;
 -   	PtrStartBuffer++;
 -   	*PtrStartBuffer = (char)1;
 -   	PtrStartBuffer++;
 -    }
 - 	PtrStartBuffer = PtrStartBuffer+(32768);  // on se place a la fin du buffer
 - if(fichier != NULL)
 - {
 - 	do
 - 	{
 -   caractereActuel = fgetc(fichier); // On lit le caractère
 -   caractereActuel2 = fgetc(fichier); // On lit le caractère suivant
 -   if(i>34) // on saute le header de l'image
 -     {
 -   	if(i==35)
 -     {
 -      caractereActuel = fgetc(fichier);
 -      caractereActuel2 = fgetc(fichier);
 -     }
 -   	if(i<16422)//  on remplie le buffer depuis la fin vu que les données du bmp sont à l'envers
 -           {
 -       *PtrStartBuffer = (unsigned char) caractereActuel2;
 -       PtrStartBuffer--;
 -       *PtrStartBuffer = (unsigned char) caractereActuel;
 -       PtrStartBuffer--;
 -     }// fin i<32843
 -    }-//fin i >35
 -   i++;
 - 	} while (caractereActuel != EOF); // On continue tant que fgetc n'a pas retourné EOF (fin de fichier)
 - 	fclose(fichier); //ferme le fichier
 - 	sleep(1); // temps d'attente sinon la transmission ne s'effectue pas
 -    PtrStartBuffer=buffer;
 -    PtrStartBufferTemp=bufferTemp;
 -    i=0;
 - 	while(i<=32774)       //32768
 -     {
 - 	         *PtrStartBufferTemp=*PtrStartBuffer;
 -               if((i%10240==0 ||i==32774) && i!=0)
 -               {
 -                  if(i==32774)
 -                    caractenv=2054;
 -                  else
 -                    caractenv=10240;
 -         	  printf("\nNbre de données envoyer : %d \n",fossil_writeblock(1,bufferTemp,caractenv));
 -                  if(i!=32774)
 - 	                 sleep(7); // temps d'attente afin que les 10240 données soir traiter par le ulcd de 4d systems
 -                  *bufferTemp=NULL;
 -                  PtrStartBufferTemp=bufferTemp;
 - 	           }
 -              PtrStartBuffer++;
 -              PtrStartBufferTemp++;
 -              i++;
 -     }
 -  }
 - else
 - 	printf("Erreur de lecture de fichier" );
 - printf("\nFin d'execution\n" );
 - return;
 - }
 - /*****************************************************
 - ******************************************************/
 - /*
 - * Initialise le driver fossil
 - *
 - * returns:
 - *  1 en cas d'erreur
 - *  0 si tout s'est déroulé correctememt
 - *
 - * Remarque(s)
 - *  A utiliser qu'une fois
 - *
 - */
 - int Initialize(void)
 - {
 -    fossil_init(1);
 - 	fossil_putbyte(1,'U');
 -    if(fossil_getbyte_wait(1)==6)
 -   return 0;
 -    else
 -    	return 1;
 - }
 - /*****************************************************
 - ******************************************************/
 - /*
 - * Démarre l'écran
 - */
 - void LcdPowerUp(void)
 - {
 -    sprintf(buffer,"%c%c%c",'Y',3,1);
 -    fossil_writeblock(1,buffer,3);
 -     return;
 - }
 - /*****************************************************
 - ******************************************************/
 - /*
 - * arrête l'écran
 - */
 - void LcdPowerDown(void)
 - {
 -    sprintf(buffer,"%c%c%c",'Y',3,0);
 -   fossil_writeblock(1,buffer,3);
 -     return;
 - }
 - /*****************************************************
 - ******************************************************/
 - /*
 - * Efface tout l'écran
 - */
 - void ClearScreen(void)
 - {
 - 	fossil_putbyte(1,'E');
 -    return;
 - }
 - /*****************************************************
 - ******************************************************/
 - /*
 - * Définie l'intensitée lumineuse de l'écran
 - *
 - *	buffer 'Y',0,(paramètre)
 - *
 - * paramètres:
 - *	- int intensitee -
 - *  0 => off
 - *  1 => intensitée normal (par défaut)
 - *  2 => intensitée élevée
 - *
 - */
 - void LcdIntensitee(int intensitee)
 - {
 - 	sprintf(buffer,"%c%c%c",'Y',0,intensitee);
 -   fossil_writeblock(1,buffer,3);
 -    return;
 - }
 - /*****************************************************
 - ******************************************************/
 - /*
 - *   écran allumé ou éteind
 - *
 - * Paramètres:
 - *  	- int b -
 - *  	1 => écran allumé
 - *  	0 => écran éteint
 - *
 - */
 - void DisplayContraste(int b)
 - {
 -   sprintf(buffer,"%c%c%c",'Y',1,b);
 -      	fossil_writeblock(1,buffer,3);
 - 	   return;
 - }
 - /*****************************************************
 - ******************************************************/
 - /*
 - * Le contraste de l'écran
 - *
 - *	buffer,'Y',2,(param)
 - * Paramètres:
 - *
 - *  	0 => contraste min
 - *  	40 => contraste max
 - *
 - */
 - void SetContraste(int b)
 - {
 -   sprintf(buffer,"%c%c%c",'Y',2,b);
 -      	fossil_writeblock(1,buffer,3);
 - 	   return;
 - }
 
  |  
    Message édité par Moiii9 le 08-06-2009 à 08:25:03
  |