首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Simblee/Rfduino Gzll通信失败

Simblee/Rfduino Gzll通信失败
EN

Stack Overflow用户
提问于 2016-06-10 03:13:53
回答 1查看 327关注 0票数 0

我尝试使用Gazelle协议将数据从设备发送到主机,然而,当在MATLAB上读取时变信号时,数组中的值不断变化。

以下是Simblee/Rfduino主机代码:

代码语言:javascript
复制
#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');
} 

和设备代码:

包括

代码语言:javascript
复制
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);   
}

谁能提供一些帮助,以确定问题可能出在哪里?谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-06-25 12:45:02

  1. Matlab在串行通信方面不是很可靠。实际上,我在使用串行设备时遇到了类似的问题,输入值的顺序可能会打乱。您是否在发出何时开始和停止打印的信号?你的matlab代码是什么样子的?
  2. 我会在主机和设备上设置一个环形缓冲区来处理asycn时间问题。
  3. 你会在当前的方法中遇到计时问题。你想用哪种频率?analogRead超级慢,而且连续两倍似乎会让事情变得更慢。你能试着设置一个ADC interrupt?
  4. Where是你的定时器代码吗?
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37734393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档