Arduino & IoT Academy · 课时

缓冲与批量上传

离线存储,并在 WiFi 恢复后同步

第 3 / 4 课13 个步骤

缓冲与批量上传 是 CoddyKit 上的免费 Arduino & IoT Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Arduino & IoT Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Arduino & IoT Academy 课程共包含 4 节课。

WiFi 并非始终可用

真实设备会失去连接:路由器重启、信号中断、云服务短暂故障。优秀的记录器即使网络消失也能继续工作。📶

不要丢失数据

如果只实时发送读数,一旦网络中断,样本就会永久丢失。解决办法是先离线存储,待网络恢复后再上传。

什么是缓冲区

缓冲区是暂时存放待发送数据的区域。您的读数会安全地排队等待,直到可以上传。

在哪里进行缓冲

对于少量数值,可以使用 RAM 中的数组。对于必须在重启后保留的大量数据,应改为缓冲到SD 卡文件或闪存中。

什么是批量发送

批量发送是指在一个请求中发送多个读数,而不是一次发送一个。减少连接次数可以节省电量,也能更好地配合云服务。

先保存再发送的循环

模式很简单:始终先将读数保存到缓冲区,只有在 WiFi已连接时才尝试上传。

save(reading);
if (WiFi.status() == WL_CONNECTED) upload();

检查连接

每次上传前都要确认设备处于联网状态。跳过这项检查,代码可能会在网络中断期间挂起或抛出错误。

if (WiFi.status() != WL_CONNECTED) return;

发送整个批次

联网后,将排队的读数打包,通常组成一个 JSON 数组,然后通过单个批量请求一起 POST。

POST /readings  [ {...}, {...}, {...} ]

仅在成功后清除

只有服务器确认收到数据后,才能删除缓冲数据。如果上传失败,请保留数据并在下次重试。

留意内存

不断增长的缓冲区可能会耗尽 RAM。限制缓冲区大小,或将数据写入存储空间,确保长时间断网不会让设备崩溃。

失败后逐渐延长等待时间

如果上传持续失败,就延长每次尝试之间的等待时间。这种退避策略可以节省电池电量,也能避免不断向处于故障状态的服务器发送请求。🔋

快速检查

什么时候应该从离线缓冲区中删除读数?

回顾

始终先保存,联网后批量上传,并且只在确认成功后清除缓冲区。现在,您的记录器可以应对任何网络中断。✅

免费开始

用 AI 导师学习 C++ — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「缓冲与批量上传」课时是免费的吗?

是的 — 「缓冲与批量上传」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Arduino & IoT Academy 课程的其余内容,请升级到 CoddyKit PRO。 Arduino & IoT Academy 课程共包含 4 节课。

「缓冲与批量上传」这节课中我会学到什么?

离线存储,并在 WiFi 恢复后同步 你通过在浏览器中直接运行的动手代码来练习 Arduino & IoT Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Arduino & IoT Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Arduino & IoT Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「缓冲与批量上传」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Arduino & IoT Academy 课中编写并运行代码吗?

能。每节 Arduino & IoT Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 NTP/RTC 获取实时时间
  2. 将 CSV 写入 SD 卡
  3. 缓冲与批量上传
  4. 可视化记录的数据
← 返回 Arduino & IoT Academy