#include <SoftwareSerial.h>
SoftwareSerial SoftSerial(2, 3);
unsigned char buffer[64];                   // définit buffer : un tableau de 64 valeurs
int compte=0;                                // compteur pour parcourir le buffer
void setup()
{
    SoftSerial.begin(9600);                 // Initialisation de la liaison
    Serial.begin(9600);                     // série à 9600 bauds
}

void loop()
{
    if (SoftSerial.available())                  // Si des données arrivent
    {
        while(SoftSerial.available())            // lit les données et les mets dans le buffer
        {
            buffer[compte++]=SoftSerial.read();  // écrit la donnée dans le buffer
            if(compte == 64)break;
        }
        Serial.write(buffer,compte);             // envoie le buffer sur le port série
        nettoieBuffer();                         // appelle la fonction nettoieBuffer
        compte = 0;                              // remet le compteur de boucle à 0
    }
    if (Serial.available())                 // si des données arrivent d'un PC
    SoftSerial.write(Serial.read());        // envoie les données sur SoftSerial shield
}


void nettoieBuffer()               // fonction pour vider le buffer
{
    for (int i=0; i<compte;i++)
    {
        buffer[i]=NULL;               // vide le buffer n°i
    }
}
