2

我正在使用 RedBear BLE Shield将数据连续流式传输到 iOS。

我正在使用SDK中提供的聊天 iOS 应用程序来调试以下 arduino 代码:

#include <Arduino.h>
#include <SPI.h>
#include "ble.h"

unsigned int reading = 0;

void setup()
{
  SPI.setDataMode(SPI_MODE0);
  SPI.setBitOrder(LSBFIRST);
  SPI.setClockDivider(SPI_CLOCK_DIV16);
  SPI.begin();

  ble_begin();

  Serial.begin(57600);
}

unsigned char buf[16] = {0};
unsigned char len = 0;

void loop()
{

  ble_do_events();

  if(ble_connected()){

      reading = 10; //this is fake data for testing purposes.
      buf[0] = reading;
      reading = reading << 8;
      reading |= 11; //again same fake data
      buf[1] = reading & 0xFF;
      len = 2;
      Serial.print(reading); Serial.print(" -> LSB:"); Serial.print(buf[1], HEX); Serial.print(" MSB:"); Serial.println(buf[0], HEX);

    len = 2;
    for (int i = 0; i < len; i++)
      ble_write(buf[i]);
    ble_write(0x0D);
    len = 0;

    ble_do_events();

    delay(20);
  }
}

我遇到了以下问题:我第一次尝试连接到 BLE Shield 时,它只执行一次循环并且卡住了。然后,如果我断开连接并重新连接,数据就会开始按我的意愿传输。

有人试过这个吗?

4

1 回答 1

0

我使用 BLE Simple 来测试你的程序。你的确实卡住了。但是,如果您将最后一个 ble_do_events() 注释掉,一切都很好。

似乎应用程序会在一段时间后自动连接和断开与 BLE shield 的连接。我是 ble 新手,不太了解这个...是不是因为调用 ble_write 时,ble 会广播应用程序通知这里是一条短信。然后应用程序将连接BLE并获取短信?

于 2013-11-02T20:27:19.423 回答