对于我正在开发的应用程序,我们正在使用Genuino 101。
因为BLEUnsignedLongCharacteristic太小,所以我决定选择BLECharacteristic。

但是,当我将其更改时,草图不会运行

#ifdef _BLE_
BLECharacteristic data("9ff91ff6-e874-4ff6-8cff-83daaf9d7fc1", BLERead |BLEWrite, RD_BUF_LEN);
#else
BLEUnsignedLongCharacteristic data("9ff91ff6-e874-4ff6-8cff-83daaf9d7fc1", BLERead | BLEWrite);
#endif // _BLE_


我尝试彼此相邻运行,并且在将数据定义为unsignedLongCharacteristic时,草图会运行。

ifdef _BLE_
    unsigned char rdBuf[RD_BUF_LEN] = { 0 };
    i2cRead(device.value(), memory.value(), sizeof(rdBuf), rdBuf);
    data.setValue(rdBuf, RD_BUF_LEN);
#else
    unsigned char rdBuf[4] = { 0 };
    i2cRead(device.value(), memory.value(), sizeof(rdBuf), rdBuf);
    unsigned long output = ((rdBuf[0] << 24) + (rdBuf[1] << 16) + (rdBuf[2] << 8) + (rdBuf[3]));
    data.setValue(output);
#endif // _BLE_


同样,当我未定义BLE时,草图运行良好,并且使用了Unsigned long。

有人有主意吗?

最佳答案

原来,我为Data分配了0x00,比我显示的内容低了几行。
现在,当您将其定义为long时就可以了,但是当微控制器期望一个数组并找到一个值时,它就会崩溃

关于c++ - 定义BLE特性后Genuino 101无法运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44132739/

10-11 16:37