对于我正在开发的应用程序,我们正在使用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/