【发布时间】:2016-08-16 14:32:02
【问题描述】:
我尝试从连接到我的 Arduino Blend Micro (http://redbearlab.com/blendmicro/) 的温度传感器中读取数据,并通过蓝牙信标将此值发送到 Android 智能手机。当两个任务在单独的草图中时,它们都能够成功运行。但是当我将它们放在一个草图中(也将库放在一起)时,出现了几个错误。给定的错误告诉我,我的库中有多个定义。
libraries\BLEPeripheral\utility\aci_queue.cpp.o:在函数中 `aci_queue_init(aci_queue_t*)':
C:\Users\XXX\Documents\Arduino\libraries\BLEPeripheral\utility/aci_queue.cpp:33: `aci_queue_init(aci_queue_t*)'的多重定义
库\BLE_SDK_for_Arduino\aci_queue.cpp.o:C:\Users\XXX\Documents\Arduino\libraries\BLE_SDK_for_Arduino\src/aci_queue.cpp:31: 首先在这里定义
libraries\BLEPeripheral\utility\aci_queue.cpp.o:在函数中 `aci_queue_init(aci_queue_t*)':
C:\Users\XXX\Documents\Arduino\libraries\BLEPeripheral\utility/aci_queue.cpp:33: `aci_queue_dequeue(aci_queue_t*, hal_aci_data_t*)'
库\BLE_SDK_for_Arduino\aci_queue.cpp.o:aci_queue.cpp:(.text._Z17aci_queue_dequeueP11aci_queue_tP14hal_aci_data_t+0x0): 首先在这里定义
问题似乎出在库 BLEPeripheral 和 BLE_SDK_for_Arduino 之间。但是互联网上的研究告诉我,它们应该是兼容的。
这是我的代码:
//"RBL_nRF8001.h/spi.h/boards.h" is needed in every new project enter code here
#include <boards.h>
#include <string.h>
#include <Adafruit_BME280.h>
#include <RBL_nRF8001.h>
#include <RBL_services.h>
#include <SPI.h>
#include <EddystoneBeacon.h>
Adafruit_BME280 bme;
#define EDDYSTONE_BEACON_REQ 6
#define EDDYSTONE_BEACON_RDY 7
#define EDDYSTONE_BEACON_RST 4
EddystoneBeacon eddystoneBeacon = EddystoneBeacon(EDDYSTONE_BEACON_REQ, EDDYSTONE_BEACON_RDY, EDDYSTONE_BEACON_RST);
void setup() {
Serial.begin(9600);
delay(500);
bme.begin();
eddystoneBeacon.setLocalName("RoomSupervisor");
}
void loop() {
Serial.write("Start");
while(1){
Serial.write("Try to send... ");
eddystoneBeacon.begin(-18, "WHAT THE HELL DOESN'T WORK!?");
eddystoneBeacon.loop();
Serial.write(" succesful! \n");
delay(3000);
}
}
我真的需要这两个库来使用蓝牙和我的传感器。但是,当有多个定义时,我该怎么做呢?我已经尝试删除一个库的部分内容以消除错误,但后来我的草图不再正常工作。
【问题讨论】:
标签: c++ arduino bluetooth-lowenergy