完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我使用 Arduino IDE 1.8.10 和 esp8266 核心 2.7.1
ESP-12(用于测试的 Wemos-D1)和 SD 卡模块 我不是 arduino 编程专家。 目前我的 scetcch 可以: 在网页上列出 SD 卡中的文件并显示文件名和文件大小。在职的。 下载选定的文件。在职的。 删除选定的文件。在职的。 我的目标: 通过 http 将文件从原始文件上传到带有时间戳的 SD 卡。 一个简单的上传正在工作。但是时间戳每次都是 1.1.2020 01:00 目前我使用 SD.h 库。 现在我知道 sd.h 不能设置时间戳。 目前我尝试使用 SdFs.h 库。这个库可以设置时间戳。 但是,如果我将 #include 添加到 DiretoryFunctions 这样的示例中,则会出现编译器错误: if (!file.open("File2.txt", O_CREAT | O_WRITE)) { exit status 1 'class fs::文件'没有名为'open'的成员 我该如何解决这个问题? 我在 SdFs 之前尝试过 SdFat,但它也不适用于包含的 ESP8266WiFi.h。 有什么建议可以实现我的目标吗? |
|
相关推荐
1个回答
|
|
为了同时使用 SdFs.h 和 ESP8266WiFi.h,您需要进行以下步骤:
1. 首先,确保您已经安装了 SdFs 库和 ESP8266WiFi 库。如果没有,请打开 Arduino IDE,单击“工具”菜单,然后单击“库管理器”。在库管理器中搜索和安装这两个库。 2. 然后,在您的 Arduino 代码中,将以下两行代码添加到顶部: #include #include 请注意,这里使用的是 SdFs.h,而不是 SD.h,因为您想要设置时间戳,而 SD.h 不允许设置时间戳。 3. 接下来,您需要使用适当的引脚连接 SD 卡模块并初始化 SdFs。这样,在您的 Arduino 代码中,将以下代码添加到 setup() 函数中: #define SD_CS 4 // 使用 GPIO4 引脚作为片选引脚。 SdFs SD; // 创建 SdFs 对象。 void setup() { // 初始化串口和 SD 卡。 Serial.begin(9600); while (!Serial) {} if (!SD.begin(SD_CS, SPI_HALF_SPEED)) { Serial.println("初始化失败!"); return; } } 请注意,在此代码中,使用 GPIO4 引脚作为 SD 卡模块的片选引脚。您可以更改此引脚,以适合您的连接。 4. 最后,您需要在您的代码中编写新的函数来上传文件并设置时间戳。这是一个示例代码: void uploadFile(const char* filename) { // 打开要上传的文件。 File file = SD.open(filename, FILE_READ); if (!file) { Serial.println("文件无法打开!"); return; } // 创建 HTTP 请求。 String url = "/upload.php?filename=" + String(filename); HTTPClient http; http.begin(url); // 将文件上传到服务器。 http.addHeader("Content-Type", "application/octet-stream"); http.addHeader("Content-Disposition", "attachment; filename="" + String(filename) + """); http.addHeader("Content-Length", String(file.size())); http.setTimeout(60000); int code = http.sendRequest("POST", file); file.close(); // 设置文件时间戳。 File file2 = SD.open(filename, FILE_WRITE); if (file2) { file2.timestamp(T_WRITE, now()); // 使用当前时间戳。 file2.close(); } // 打印结果。 Serial.print("上传文件 "); Serial.print(filename); Serial.print(",状态码为 "); Serial.println(code); } 请注意,此上传函数使用 HTTPClient 库来创建 HTTP 请求,并将文件作为 POST 请求的正文上传。然后,将使用当前时间戳来设置文件的时间戳。 这应该能帮助您同时使用 SdFs.h 和 ESP8266WiFi.h。如果您遇到问题,请随时提出问题。 |
|
|
|
只有小组成员才能发言,加入小组>>
545浏览 6评论
457浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
438浏览 5评论
441浏览 4评论
411浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 12:50 , Processed in 0.892770 second(s), Total 78, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号