Arduino 不写入文件
Arduino not writing to file
我希望 arduino 在 ajax 调用时写入文件。 ajax 有效,但它不会写入文件。 ajax 处理程序中的所有其他代码都会执行。
void handle_ajax(){
int startUrlIndex= HTTP_req.indexOf("button");
int endUrlIndex = HTTP_req.indexOf(" HTTP");
String url = HTTP_req.substring(startUrlIndex, endUrlIndex);
int startButtonIndex = url.indexOf("device-") + 7;// 7 is length of device-, I really just want the number.
int endButtonIndex = url.indexOf("&");
String button = url.substring(startButtonIndex, endButtonIndex);
int startStateIndex = url.indexOf("state=") + 6; // 6 is length of state=, I really just want the number.
String state = url.substring(startStateIndex);
int device = button.toInt();
int newState = state.toInt();
dim_light(device, newState * 12);
write_config("", "text");
}
bool write_config(String line, String text){
configFile = SD.open("config.ini", FILE_WRITE);
if(configFile){
configFile.write("Dipshit");
}
configFile.close();
Serial.println("Works.");
return true;
}
我没有发现所提供的代码有任何问题。
先检查基础知识:
- SD 卡是标准 SD 卡或 SDHC 卡。
- SD 卡格式化为 FAT16 或 FAT32 文件系统。
SD.begin()
命令中的 CS 引脚使用了正确的引脚。这取决于所使用的硬件。 http://www.arduino.cc/en/Reference/SDCardNotes
- SPI 接线正确(大多数 Arduino 板上的引脚 11、12 和 13)。
- 硬件 SS 引脚设置为输出(即使它不用作 CS 引脚)。
我从过去的经验中知道,这些小 Arduino 在读取和写入 SD 卡时可以很快 运行 从 SRAM 中取出。 读写示例程序单独使用UNOs SRAM的大约50%!!
要测试这是否是您的问题,运行 SD 卡 read/write 示例程序(在 SD.begin()
命令中使用正确的 CS 引脚)。如果这有效,那么问题很可能是您的 运行 超出了 SRAM。尝试使用 Arduino MEGA 2560,它具有 4 倍的 SRAM。
编辑:最新的Arduino IDE (v1.6.8) 实际上计算了全局变量使用了多少SRAM。它不考虑局部变量。
发现问题:内存
arduino在打开SD卡时内存不足导致失败。
如果其他人遇到同样的问题,您需要 300 或更多字节的 ram。通过串行打印检查这个 FreeRam()
我希望 arduino 在 ajax 调用时写入文件。 ajax 有效,但它不会写入文件。 ajax 处理程序中的所有其他代码都会执行。
void handle_ajax(){
int startUrlIndex= HTTP_req.indexOf("button");
int endUrlIndex = HTTP_req.indexOf(" HTTP");
String url = HTTP_req.substring(startUrlIndex, endUrlIndex);
int startButtonIndex = url.indexOf("device-") + 7;// 7 is length of device-, I really just want the number.
int endButtonIndex = url.indexOf("&");
String button = url.substring(startButtonIndex, endButtonIndex);
int startStateIndex = url.indexOf("state=") + 6; // 6 is length of state=, I really just want the number.
String state = url.substring(startStateIndex);
int device = button.toInt();
int newState = state.toInt();
dim_light(device, newState * 12);
write_config("", "text");
}
bool write_config(String line, String text){
configFile = SD.open("config.ini", FILE_WRITE);
if(configFile){
configFile.write("Dipshit");
}
configFile.close();
Serial.println("Works.");
return true;
}
我没有发现所提供的代码有任何问题。
先检查基础知识:
- SD 卡是标准 SD 卡或 SDHC 卡。
- SD 卡格式化为 FAT16 或 FAT32 文件系统。
SD.begin()
命令中的 CS 引脚使用了正确的引脚。这取决于所使用的硬件。 http://www.arduino.cc/en/Reference/SDCardNotes- SPI 接线正确(大多数 Arduino 板上的引脚 11、12 和 13)。
- 硬件 SS 引脚设置为输出(即使它不用作 CS 引脚)。
我从过去的经验中知道,这些小 Arduino 在读取和写入 SD 卡时可以很快 运行 从 SRAM 中取出。 读写示例程序单独使用UNOs SRAM的大约50%!!
要测试这是否是您的问题,运行 SD 卡 read/write 示例程序(在 SD.begin()
命令中使用正确的 CS 引脚)。如果这有效,那么问题很可能是您的 运行 超出了 SRAM。尝试使用 Arduino MEGA 2560,它具有 4 倍的 SRAM。
编辑:最新的Arduino IDE (v1.6.8) 实际上计算了全局变量使用了多少SRAM。它不考虑局部变量。
发现问题:内存
arduino在打开SD卡时内存不足导致失败。
如果其他人遇到同样的问题,您需要 300 或更多字节的 ram。通过串行打印检查这个 FreeRam()