Arduino Web 客户端随机冻结
arduino web client random freeze
我已经为arduino实现了一个Web客户端,将数据从我的传感器发送到数据库,抛出GET Http请求。循环在调试 4 上随机冻结
这是代码的一部分,这里是完整的草图链接。
有什么建议吗?
sprintf(pageAdd,"/write3.php?value0=%d&value1=%d&value2=%f&value3=%lu&value4=%f&value5=%f&value6=%f&value7=%f&value8=%f", value0, dht_humidity, temperature, pressure, altitude, gust, dir, rain, knots);
if(!getPage(server,serverPort,pageAdd)) Serial.print(F("Fail "));
else Serial.print(F("Pass "));
byte getPage(IPAddress ipBuf,int thisPort, char *page)
{
int inChar;
char outBuf[128];
Serial.print(F("connecting..."));
if(client.connect(ipBuf,thisPort))
{
Serial.println(F("connected"));
sprintf(outBuf,"GET %s HTTP/1.1",page);
Serial.println(F("DEBUG 1"));
client.println(outBuf);
Serial.println(F("DEBUG 2"));
sprintf(outBuf,"Host: %s",serverName);
Serial.println(F("DEBUG 3"));
client.println(outBuf);
Serial.println(F("DEBUG 4"));
client.println(F("Connection: closern"));
}
else
{
Serial.println(F("failed"));
return 0;
}
sprintf 很危险。 它会让你快速破解,但如果黑客改变,你可能会遇到难以调试的麻烦。相反,如果您写入本地缓冲区,请使用snprintf(buffer,sizeof(buffer),..... 截断输出比损坏内存更好。
这可能是你的问题:因为pageAdd不是一个非常大的缓冲区。
sprintf(pageAdd,"/write3.php?value0=%d&value1=%d&value2=%f&value3=%lu&value4=%f&value5=%f&value6=%f&value7=%f&value8=%f", value0, dht_humidity, 温度, 压力, 高度, 阵风, 目录, 雨, 结);
相关文章:
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 为什么 Serial.println(<char[]>);返回随机字符?
- 字符串-C++后显示的随机字符
- 循环中的随机函数
- 在c++构造函数中使用随机字符串生成器
- 使用std::mt19937从字符串中返回一个随机单词
- 为什么std::condition_variable notify_all的工作速度比notify_one快(对于随机请
- 如何在C++中高效地构造随机骰子
- 在类中使用随机生成器时出现性能问题
- 在将数字随机生成为数组期间从内存输出随机数的数组
- WIN32:C++,为什么在WM_CLOSE上调用Messagebox函数程序正在冻结
- 将字符随机转换为大写的函数
- 为什么 vector 的随机访问迭代器给出与指针不同的内存地址?
- 如何生成一个随机的 n 位数,其中 n 是任意的
- 将随机生成的数字添加到数组 + 对这些数组求平均值
- Win32 发送输入鼠标移动滞后并冻结
- 如何使用要传递给 mt19937 的可选随机种子参数设计函数
- 在C++中随机生成 20 个非重复数字
- Arduino Web 客户端随机冻结
- C++程序无缘无故地随机冻结