Les mysteres de l'Ouest ... avec James Conrad
mais les mysteres du C dans l'Est .. avec paulfjujo
me voci de nouveau confronté à un smilblick ..
je veux afficher l'entete d'un fichier BMP 16 bits , contenue dans les 54 premiers bytes
Utilisant UART RX Interrupt,
je lance une capture du fichier sur un compte d'octets atteint ..54
et j'affiche le contenu ... qui n'atteint pas 54 valeurs ?
avec ce code C (XC8)
uint16_t k;
Buffer1[256] recoit l'entete du fichier BMP
p1 = pointeur sur debut du Buffer1
Bavard=2:
Code : Tout sélectionner
if(Requete_BMP==0)
{
CPrint(" Entete BMP de 54 bytes\r\n");// (6x8)+6 bytes
for (i=0;i<6;i++)
{
PrintChar((char)i+48);PrintChar('>');PrintChar(' ');
for (j=0;j<8;j++)
{
k=(i*8)+j;
Un.Entete_BMP[k] =*(p1+k);
if(Bavard>1)
sprintf( CRam1,"%3d> 0x%02X ",k,*(p1+k) );
else
sprintf( CRam1,"0x%02X ",*(p1+k) );
Print(CRam1);
}
CRLF1();
}
k=k+1;
PrintChar('6');PrintChar('>');PrintChar(' ');
for (j=0;j<6;j++)
{
k=k+j;
if(k>54) break;
Un.Entete_BMP[k] =*(p1+k);
//*( Entete_BMP+k)=*(p1+k);
if(Bavard>1)
sprintf( CRam1,"%3d> 0x%02x ",k,*(p1+k) );
else
sprintf( CRam1,"0x%02x ",*(p1+k) );
Print(CRam1);
}
CRLF1();
}
else
{ // --- dialogue normal operateur --------
if((*(p1)=='H') && (*(p1+3)=='p')) //Help<CR>
{
CPrint("\r\n Help : Help<CR> \r\n");
CPrint(" RTC Update: U;18;01;26;11;36;06;#<CR>\r\n");
CPrint(" exemple pour :18 janv 2026 11:36 Dimanche\r\n");
CPrint(" Nota: lundi=0 dimanche=6\r\n");
CPrint(" BAUD=X pour SPI Speed x=0=>32Mhz X=1=>16Mhz X=3=>8MHz X=7=> 4MHz\r\n");
CPrint(" BAV=0,1..9 -> Bavard pour tracage programme\r\n");
CRLF1();
p1=0;
}
resultat obtenu sur YAT Terminal
Code : Tout sélectionner
Demande d'envoi Fichier Image BMP , valide 4sec
.. sur terminal YAT , send file :Image_128x160_16.bmp
Stop envoi terminal YAT
Entete BMP de 54 bytes
0> 0> 0x42 1> 0x4D 2> 0x46 3> 0xA0 4> 0x00 5> 0x00 6> 0x00 7> 0x00
1> 8> 0x00 9> 0x00 10> 0x46 11> 0x00 12> 0x00 13> 0x00 14> 0x38 15> 0x00
2> 16> 0x00 17> 0x00 18> 0x80 19> 0x00 20> 0x00 21> 0x00 22> 0x60 23> 0xFF
3> 24> 0xFF 25> 0xFF 26> 0x01 27> 0x00 28> 0x10 29> 0x00 30> 0x03 31> 0x00
4> 32> 0x00 33> 0x00 34> 0x00 35> 0xA0 36> 0x00 37> 0x00 38> 0x20 39> 0x1C
5> 40> 0x00 41> 0x00 42> 0x20 43> 0x1C 44> 0x00 45> 0x00 46> 0x00 47> 0x00
6> 48> 0x00 49> 0x00 51> 0x00 54> 0x00
HEADER type : 4D42
Taille: 41030
Headsize 70
W=128 x H=-160
plan= 1
bitsColor= 16
ResolH: 7200
ResolV: 7200
Problemo :
quid des des valeurs manquantes 50,52,53 ?
Entete vue par XNVIEW
je viens de rajouter ce test :
Code : Tout sélectionner
CPrint("Contenu Entete( Buffer1)\r\n");
p1=&Buffer1[0];
for (i=0;i<54;i++)
{
sprintf(CRam1,"i=%5d -> 0x%02X\r\n",i,*(p1+i));
Print(CRam1);
}
CRLF1();
Code : Tout sélectionner
Entete BMP de 54 bytes
Contenu Entete( Buffer1)
i= 0 -> 0x42
i= 1 -> 0x4D
i= 2 -> 0x46
i= 3 -> 0xA0
i= 4 -> 0x00
i= 5 -> 0x00
i= 6 -> 0x00
i= 7 -> 0x00
i= 8 -> 0x00
i= 9 -> 0x00
i= 10 -> 0x46
i= 11 -> 0x00
i= 12 -> 0x00
i= 13 -> 0x00
i= 14 -> 0x38
i= 15 -> 0x00
i= 16 -> 0x00
i= 17 -> 0x00
i= 18 -> 0x80
i= 19 -> 0x00
i= 20 -> 0x00
i= 21 -> 0x00
i= 22 -> 0x60
i= 23 -> 0xFF
i= 24 -> 0xFF
i= 25 -> 0xFF
i= 26 -> 0x01
i= 27 -> 0x00
i= 28 -> 0x10
i= 29 -> 0x00
i= 30 -> 0x03
i= 31 -> 0x00
i= 32 -> 0x00
i= 33 -> 0x00
i= 34 -> 0x00
i= 35 -> 0xA0
i= 36 -> 0x00
i= 37 -> 0x00
i= 38 -> 0x20
i= 39 -> 0x1C
i= 40 -> 0x00
i= 41 -> 0x00
i= 42 -> 0x20
i= 43 -> 0x1C
i= 44 -> 0x00
i= 45 -> 0x00
i= 46 -> 0x00
i= 47 -> 0x00
i= 48 -> 0x00
i= 49 -> 0x00
i= 50 -> 0x00
i= 51 -> 0x00
i= 52 -> 0x00
i= 53 -> 0x00
0> 0> 0x42 1> 0x4D 2> 0x46 3> 0xA0 4> 0x00 5> 0x00 6> 0x00 7> 0x00
1> 8> 0x00 9> 0x00 10> 0x46 11> 0x00 12> 0x00 13> 0x00 14> 0x38 15> 0x00
2> 16> 0x00 17> 0x00 18> 0x80 19> 0x00 20> 0x00 21> 0x00 22> 0x60 23> 0xFF
3> 24> 0xFF 25> 0xFF 26> 0x01 27> 0x00 28> 0x10 29> 0x00 30> 0x03 31> 0x00
4> 32> 0x00 33> 0x00 34> 0x00 35> 0xA0 36> 0x00 37> 0x00 38> 0x20 39> 0x1C
5> 40> 0x00 41> 0x00 42> 0x20 43> 0x1C 44> 0x00 45> 0x00 46> 0x00 47> 0x00
6> 48> 0x00 49> 0x00 51> 0x00 54> 0x00
j'ai bien 54 valeurs 0 à 53 , mais toujours manquantes dans la mise en forme

quand on a le nez dans le guidon, on perd de vue l'essentiel
les gars..