Salut à tous!
J'ai un soucis avec cette fonction: en executant les commandes "W" "R" ou "T" il se trouve que mon tampon UartRxPBuffer contient toujours des données ce que je voudrais eviter mais je sais pas trop comment l'aborder l implementation qui puisse me permettre de controller le contenu de ce buffer lorsque je fais un "W" ou un "R" ou "T".
De preference j'aimerais avoir un truc comme ceci UartRxBuffer[0]=='W'
....
UartRxBuffer[0]=='R'
....
UartRxBuffer[0]=='T'


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
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100

char	xdata	UartRxBuffer[512];
char	UartRxPtr;

char UART1_Parse(void)  {

   char SFRPAGE_SAVE = SFRPAGE;     // Save Current SFR page
   char c = 0;

   SFRPAGE = UART1_PAGE;
// Je precise c'est ici que je devrais initialiser autrement mon pointeur
// UartRxPtr afin que lorsque j'invoque la commande W ou R mon buffer    //puisse  être vide
   if(RI1){
		UartRxBuffer[UartRxPtr++] = c = SBUF1;
		if(UartRxPtr >= sizeof(UartRxBuffer)) UartRxPtr = sizeof(UartRxBuffer)-1;
		RI1 = 0;
   }

   SFRPAGE = SFRPAGE_SAVE;

   return (c);
}




int		GetHex(void)
{
	int	value = 0;
	char	c;
	
	do{
		c = UartRxBuffer[UartRxPtr++];
		if(c>='0'	&& c<='9') value *= 16, value += c - '0';
		if(c>='A' && c<='F')  value *= 16, value += c - 'A' + 10;
		
	} while(c >= '0');

	return value;

}


void	SkipRaw(void)
{
	while(UartRxBuffer[UartRxPtr] <= '0' && UartRxPtr<sizeof(UartRxBuffer)) UartRxPtr++;
}


extern	MACADDRESS xdata DESTMAC;


void	CommandParse(void)
{
	unsigned int		Addr;
	unsigned int		Value;
	char				c;

	c = UART1_Parse();
	if(c) putchar(c);
	if(c!=0x0d) return;


	UartRxPtr = 0;

	switch(UartRxBuffer[0]){
	
		case	'W':	UartRxPtr++;
						SkipRaw();
						Addr = GetHex();
						SkipRaw();
						Value = GetHex();
						MAC_Write(Addr, Value);
						printf("\nOK\n");
						break;
	

		case	'R':	UartRxPtr++;
						SkipRaw();
						Addr = GetHex();
						Value = MAC_Read(Addr);
						printf("\n%04x = %04x\n", Addr, Value);
						break;


		case	'T':	UartRxPtr++;
						SkipRaw();
						CP220x_Send(&DESTMAC, UartRxBuffer, sizeof(UartRxBuffer) - UartRxPtr, IP_PACKET);
						printf("\nOK\n");
						break;


		default		:	printf("\nERROR\n");
						break;
	
	}

	UartRxPtr = 0;
}
Dans la fonction CommandParse comment implementer les commandes differement en faisant un truc de la sorte:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
while (len buffer !=0)
       if UartRxBuffer[0] =='R'
       elseif  UartRxBuffer[0] =='W'   
       elseif UartRxBuffer[0] =='T'
Merci pour vos eclaircissements