binaryCommunication.h 1.66 KB
Newer Older
Poseidon's avatar
Poseidon committed
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
#ifndef BINARYCOMMUNICATION
#define BINARYCOMMUNICATION

#if (ARDUINO >= 100)
 #include "Arduino.h"
#else
 #include "WProgram.h"
#endif

/*
    Cria uma comunicação Serial enviando bytes 'crus' para obter melhor
        desempenho. 
    Logo é necessário que onde os dados são recebidos que sejam decodificados,
        já que não estão com caracteres ASCII

    Protocolo para utilização:

        É enviado um byte inicial, indicando quantos bytes vão ser enviados.
        Esse byte é um unsigned int_8b logo é possível endereçar somente 255 bytes.

        X.A.B.C.D
         |-------| : Lenght = X
    
    Melhor forma de usar é criar uma estrutura de dados
    Ex.:
    struct data{
        int x1;
        int x2;
        ...
        char str[10];
        ..
        float xn;
    };  
    
    // Criando objeto para comunicação
    comm = BinCommunication((void*)&data, sizeof(data));
    // Nesse momento você alterar a sua estrutura e cada vez que usar o metodo
    // send() será enviado todos os dados para o computador
    comm.send();
*/
class BinCommunication{
    private:
        /* Tamanho em bytes da banda de dados*/
        int dataLen;
        /* Ponteiro do array de dados*/
        char *dataPtr;

    public:
        /* Inicializando as variáveis necessárias*/
        BinCommunication(void *dataPtr, int dataLen);
        /* Incializando comunicação Serial do Arduino*/
        void begin(long int baudRate);
        /* Envia os dados que estão no array de dados*/
        bool send();
        /* */
        int getDataLen();
        void setDataLen(int dataLen);
        int getDataPointer();
        void setDataPointer(void *dataPtr);
}

#endif