Révision 868
Ajouté par gasacco il y a environ 4 ans
branch/sacco/sp4c12/SP4c1/SP4c1/uart0.c | ||
---|---|---|
}
|
||
}
|
||
|
||
|
||
|
||
int hex2int( char*c)
|
||
{
|
||
int i =0;
|
||
int dec =0;
|
||
for( i; i<=1;i++)
|
||
{
|
||
if(c[i] >=65 && c[i]<=70)
|
||
{
|
||
c[i] = c[i]-55;
|
||
}
|
||
else
|
||
{
|
||
c[i] = c[i]-48;
|
||
}
|
||
}
|
||
dec = c[0]*16+c[1];
|
||
return dec;
|
||
}
|
||
|
||
short recTrame (char *Buffer)
|
||
|
||
int trame_ok;
|
||
|
||
int recTrame (char *Buffer)
|
||
{
|
||
int i=0;
|
||
char CS =0;
|
||
char CS =0x00;
|
||
int CS_dec;
|
||
char CS_reel[2];
|
||
int CS_reel_dec;
|
||
|
||
char a;
|
||
char CS_reel[1];
|
||
|
||
while (uart0_rx() !='$');
|
||
|
||
while (a = uart0_rx() != '*')
|
||
a = uart0_rx();
|
||
while (a != '*')
|
||
{
|
||
|
||
Buffer[i] = a;
|
||
CS = Buffer[i] + CS;
|
||
i++;
|
||
CS = Buffer[i]^CS;
|
||
i++;
|
||
a = uart0_rx();
|
||
}
|
||
|
||
CS_reel[0] = uart0_rx();
|
||
CS_reel[1] = uart0_rx();
|
||
|
||
CS_reel_dec = hex2int(CS_reel);
|
||
CS_dec = (int) CS;
|
||
|
||
CS_reel[0] = uart0_rx();
|
||
CS_reel[1] = uart0_rx();
|
||
if (CS_reel[0] + CS_reel[1] == CS)
|
||
if (CS_dec ==CS_reel_dec)
|
||
{
|
||
uart0_tx('Y');
|
||
trame_ok =1;
|
||
}
|
||
else
|
||
{
|
||
trame_ok =0;
|
||
}
|
||
|
||
return i;
|
||
}
|
||
... | ... | |
|
||
while (1)
|
||
{
|
||
nb1 = (char) (recTrame(trame))/10;
|
||
nb1 = (char) (recTrame(trame))/10;
|
||
nb2 = (char) (recTrame(trame))%10;
|
||
|
||
uart0_tx(nb1+48);
|
||
uart0_tx(nb2+48);
|
||
if (trame_ok)
|
||
{
|
||
uart0_tx(nb1+48);
|
||
uart0_tx(nb2+48);
|
||
}
|
||
|
||
}
|
||
}
|
Formats disponibles : Unified diff
Fonction Rectrame avec checksum sans interruption