Bonjour

J'utilise le compilateur C Microchip C18 pour PIC et je cherche stocker une chaine ascii appelée 'hour_event' dans une eeprom avec la fonction suivante :

Visiblement la fonction XEEWrite attend un unsigned char, cependant je 'hour event' est déclaré avec char, que dois je faire pour transformer

char hour_event[3]; en unsigned char ?

Actuellement le compilateur m'indique un Warning : suspicious pointer conversion ...

Est ce qu'un unsigned char c'est BYTE ?

Je vous remercie de votre aide,

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
/******************************************************************************
 * Function:        XEE_RESULT XEEWrite(unsigned char val)
 * PreCondition:    XEEInit() && XEEBeginWrite() are already called.
 * Input:           val - Byte to be written
 * Output:          XEE_SUCCESS
 * Side Effects:    None
 * Overview:        Adds a byte to the current page to be writen when
 *                  XEEEndWrite() is called.
 * Note:            Page boundary cannot be exceeded or the byte
 *                  to be written will be looped back to the
 *                  beginning of the page.
 ******************************************************************************/
XEE_RESULT XE0Write(unsigned char val, unsigned char EEpromNumber)
{
    *EEPROMBufferPtr++ = val;
 
    if( EEPROMBufferPtr == EEPROMBuffer + EEPROM_BUFFER_SIZE )
    {
        DoWrite(EEpromNumber);
    }
 
    return XEE_SUCCESS;
}
Mon code est le suivant :

Déclaration en tête de programme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
char hour_event[3];
char eeprom_hour[3] = {'-'};
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
    XE2BeginWrite(EEPROM_CONTROL, 0x000000);
    XE2Write(hour_event);
    XE2EndWrite();
 
	// Lit l'EEPROM n°2 à l'adresse location 0x000000 et copies le contenu dans un buffer appelé "eeprom_hour"
	XE2ReadArray(0, 0x000000, eeprom_hour, 0x02);
	eeprom_hour[3] = 0;		// Ajoute un "0" en fin de chaine pour pouvoir utiliser la fonction httpgetvar