我一直在ESP8266的基础上制作一个简单的服务器。不知何故,我收到此错误消息:
Compilation error: array must be initialized with a brace-enclosed initializer
.
这是代码:
server.on("/data", HTTP_GET, [](AsyncWebServerRequest* request){
int signals[] = {0, 0, 0, 0, 0, 1};
int collected_data[amount_of_cells] = updateShiftRegister(signals, sizeof(signals) / sizeof(signals[0]));
String jsonResponse = "{\"value1\":\"" + collected_data[0] + "\"},"; // \ looks like: {"pot_value": "<collected_data>"}
jsonResponse += "{\"value2\":\"" + collected_data[1] + "\"},";
sonResponse += "{\"value3\":\"" + collected_data[2] + "\"},";
jsonResponse += "{\"value4\":\"" + collected_data[3] + "\"},";
request->send(200, "application/json", jsonResponse);
});
以及对应的功能:
int updateShiftRegister(int* signals, int length) {
// Shift out each bit of the signals list
int dataarea[amount_of_cells];
int Vin;
byte k = 0;
for (int i = length - 1; i >= 0; i--) {
digitalWrite(latchPin, LOW);
digitalWrite(clockPin, LOW);
digitalWrite(dataPin, signals[i] ? HIGH : LOW);
digitalWrite(clockPin, HIGH);
digitalWrite(latchPin, HIGH);
if (i< length-1 && i>0){
Vin = readpot();
Serial.println(Vin);
dataarea[k]=Vin;
k++;
}
}
return dataarea;
}
我想我可以检查这次失败的原因。但我只是不明白为什么会发生。
所以,问题出在代码本身。如果你试图一步步覆盖局部区域,最好不要让一个巨大的物体漂浮在空中。显然,你不能像我尝试的那样覆盖它。 解决问题的方法很简单:使用
global variables
!然后稍后在代码中调用一些 void
函数来覆盖全局区域。就是这么简单。可悲的是。