main.c
1 KB
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
/*
* Arduino program example
*/
////
// Include files
////
#include <stdio.h>
#include <stdbool.h>
#include "arduino.h"
#define MAX_SERIAL 1024
////
// Global variables
// my variables
int i;
long now;
bool decod;
unsigned char decoded_packet[MAX_SERIAL];
int j;
int nb_0C;
//
////
////
// Handler functions
///
void setup(void){
i = 0;
j = 0;
decod = false;
nb_0C = 0;
}
void loop(void){
if(millis() > now+300){
led((i-1 + LEDS_NB) % LEDS_NB, 0);
led(i % LEDS_NB, 1);
i = (i+1) % LEDS_NB;
}
}
void serialInHandler(unsigned char byte){
if(byte == '\xdb') {
decod = true;
}
else if(byte == '\x0c') nb_0C += 1;
else if(decod){
if(byte == '\xdc')
decoded_packet[j] = '\xc0';
else if(byte== '\xdd')
decoded_packet[j] = '\xdb';
j += 1;
decod = false;
}else{
decoded_packet[j] = byte;
j += 1;
}
if(nb_0C == 2){
printf("le packet décodé est de taille %d:\n", j);
nb_0C = 0;
}
/*for(int i = 0; i < j; i++)
printf("%02x ", decoded_packet[i]);
printf("\n");*/
}