2016-06-09 1 views
0

Je tente d'envoyer des données d'un périphérique à l'autre en utilisant le protocole Gazelle, cependant, en lisant un signal variant dans le temps sur MATLAB, les valeurs changent continuellement les éléments du tableau.La communication Simblee/Rfduino Gzll échoue

Voici le code hôte Simblee/Rfduino:

#include <SimbleeGZLL.h> 
device_t role = HOST; 
char array[5]; 
void setup() { 
    Serial.begin(9600); 
    SimbleeGZLL.begin(role); 
    timer_one(1); // 1 ms timer 
} 

void loop() { 
    Serial.flush(); 
    printf(EMG); 
} 


void SimbleeGZLL_onReceive(device_t device, int rssi, char *data, int len) 
{ 
    if (len > 0) { 
    digitalWrite(2,HIGH); 
    array[0] = data[0]; 
    array[1] = data[1]; 
    array[2] = data[2]; 
    array[3] = data[3]; 
    array[4] = '\0'; 
    } else SimbleeGZLL.sendToDevice(device, 'A'); 
} 

Et le code de l'appareil:

comprennent

device_t role = DEVICE1; 

volatile int state; 
char array[4]; 

void setup() { 
    SimbleeGZLL.begin(role); 
    Serial.begin(9600); 
    timer_one(1); 
} 

void loop() { 

     array[0] = analogRead(2); 
     array[1] = analogRead(3); 
     array[2] = analogRead(4); 
     array[3] = analogRead(5); 
     SimbleeGZLL.sendToHost(EMG,4); 
} 

Quelqu'un pourrait-il s'il vous plaît fournir une aide pour identifier où la question peut se situer ? Merci!

Répondre

0
  1. Matlab n'est pas très fiable avec la communication série. J'ai effectivement eu un problème similaire avec un périphérique série où les valeurs d'entrée seraient hors service. Signalez-vous quand commencer et arrêter l'impression? À quoi ressemble votre code matlab?

  2. Je voudrais mettre en place un anneau tampon sur l'hôte et le périphérique pour faire face aux problèmes de temps d'asycn.

  3. Vous allez rencontrer des problèmes de synchronisation avec la méthode actuelle. Quel genre de fréquence allez-vous? L'analogRead est super lent, et le double multiple d'affilée semble rendre les choses encore plus lentes. Pourriez-vous essayer de configurer une interruption ADC?

  4. Où est votre code temporisateur?