【发布时间】:2020-10-14 18:13:27
【问题描述】:
const char* val1 = advertisedDevice.getAddress().toString().c_str();
Serial.printf("Advertised Device: %s \n", val1);
此代码用于检索 BLE 设备的 MAC 地址。
串口监视器上val1的输出为:
广告设备:45:89:a2:d8:74:65
但是当我尝试单独输出val1 时,系统崩溃了。代码如下所示。这是为什么呢?
Serial.printf("Val is : %s", val1[0]);
我应该期待串行监视器打印出来
数值为:4
我也在尝试存储val1是一个字符串数组,所以例如
伪代码
String arr[50];
loop{
const char* val1 = advertisedDevice.getAddress().toString().c_str();
Serial.printf("Advertised Device: %s \n", val1);
arr[i] = val1[0]+val1[1]+val1[2]+....+val1[18]
i++;
}
我想将它存储在一个数组中,因为然后我将它上传到数据库。如果它的形式是 val1[0],val1[1]... 等等,我不能这样做。将所有数据存储在单个数组位置会更容易,即
arr[1] = "45:47:89:fd:12",
arr[2] = "47:AC:1b:24:58" and so on.
是这样吗?
【问题讨论】:
-
最后一行将它们加在一起有什么意义?为什么你觉得你需要五十个 String 对象呢?
-
@Delta_G 我想将它存储在一个数组中,因为然后我将它上传到数据库。如果它的形式是 val1[0],val1[1]... 等等,我不能这样做。将所有数据存储在单个数组位置会更容易,即 arr[1] = "45:47:89:fd:12", arr[2] = "47:AC:1b:24:58" 等等在。我还想存储 50 个 MAC 地址