查看: 1091|回复: 5

[其他] ARDUINO SD 卡

[复制链接]

该用户从未签到

发表于 2018-11-22 13:02 | 显示全部楼层 |阅读模式
本帖最后由 ws9528 于 2018-11-22 13:58 编辑

现在按示例 已经可以读写文件内容   可以新建删除文件
但是根据:file:///D:/arduino/arduino-1.8.7/reference/www.arduino.cc/en/Reference/SD.html
看了办天也不明白怎么改写文件内容    而不是追加。

我就想怎么改写TXT文件内容。  比如我在文件里面想记录变量如果停电下次可以继续读出此变量 根本不需要追加内容


目前想到的解决办法是
删除文件
创建文件
写入数据
读出数据



但这个方法可能不是最佳方案,因为由于停电原因可能导致文件中没有变量的值  下次开机读出会导致程序出错

该用户从未签到

 楼主| 发表于 2018-11-22 14:00 | 显示全部楼层

kittenblock中小学创客名师推荐的图形化编程软件

//引用两个库文件
#include <SPI.h>
#include <SD.h>

//** MOSI - pin 11
//** MISO - pin 12
//** CLK  - pin 13
//** CS   - pin  4

const int chipSelect = 4;

File myFile;

void setup() {
  Serial.begin(9600);

  Serial.print("正在准备SD卡中...");
  if (!SD.begin(chipSelect)) {
    Serial.println("SD卡故障或不存在");
    while (1);
  }
  Serial.println("    就绪");

}

void loop() {

  String WenJianMing = "abc.ZYX";            //文件名
  String BianLiangZhi = "变量值";            //变量值

  ChuCunBianLiang(WenJianMing, BianLiangZhi);//储存变量(文件名, 变量值)
  delay(1000);

  Serial.println("***********************************");

}





boolean ChuCunBianLiang(String WenJianMing, String BianLiangZhi) {//  储存变量(文件名, 变量值)
  if (SD.exists(WenJianMing)) {               //如果文件存在
    SD.remove(WenJianMing);                   //删除文件
    Serial.println("文件 " + WenJianMing + " 已经存在,删除完成。");
    XieRuWenJian(WenJianMing, BianLiangZhi);   //创建文件并打开写入变量值后关闭
  } else {                                    //如果文件不存在
    XieRuWenJian(WenJianMing, BianLiangZhi);   //直接 创建文件并打开写入变量值后关闭
  }
}

boolean XieRuWenJian(String WenJianMing, String BianLiangZhi) { //写入文件(文件名,变量值)   创建并打开写入变量值后关闭
  File dataFile = SD.open(WenJianMing, FILE_WRITE);//创建并打开文件
  Serial.println("创建并打开文件 " + WenJianMing + "  已完成");
  if (dataFile) { // 如果文件可用,则向其写入:
    dataFile.println(BianLiangZhi);
    Serial.println("向文件 " + WenJianMing + " 中写入变量 " + BianLiangZhi + "  已完成");
    dataFile.close();
    Serial.println("文件 " + WenJianMing + "  已关闭");
    return (true);
  }
  else {
    return (false);
    Serial.println("打开文件 " + WenJianMing + "  时出错");
  }
}
  • TA的每日心情
    奋斗
    2018-12-6 11:03
  • 签到天数: 29 天

    [LV.4]偶尔看看III

    发表于 2018-11-23 08:29 | 显示全部楼层
    只是记录变量的话,不如写入内部EEPROM。

    该用户从未签到

     楼主| 发表于 2018-11-23 13:45 | 显示全部楼层
    lxw1997 发表于 2018-11-23 08:29
    只是记录变量的话,不如写入内部EEPROM。

    不太了解,把这种变量存进去具体怎么写,听说只能存255以下的数字。
  • TA的每日心情
    奋斗
    2018-12-6 11:03
  • 签到天数: 29 天

    [LV.4]偶尔看看III

    发表于 2018-11-23 15:43 | 显示全部楼层
    ws9528 发表于 2018-11-23 13:45
    不太了解,把这种变量存进去具体怎么写,听说只能存255以下的数字。

    Arduino UNO是8位单片机,存储单元一个字节也是8位,但并不是说不能用来存其它的类型的变量。具体怎么操作,建议专题研读一下EEPROM的资料。

    该用户从未签到

     楼主| 发表于 2018-11-23 20:24 | 显示全部楼层
    这个玩意好像有点麻烦,技术太菜,只能等高人写个帖子了
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    哪位老哥有个U8g2lib.h这个库可以发一下吗
    哪位老哥有个U8g2lib.h这
    光线跟踪钛合金猫眼
    光线跟踪钛合金猫眼
    +视频 https://www.bilibili.com/video/av67732712/ +原理 ---光线跟踪 建立极
    "高精度"米家电子温湿度计Pro拆解
    "高精度"米家电子温湿度计
    为了了解哪种温湿度传感器更好,我搞了一个米家电子温湿度计Pro(阿蒙同志赠送) 价格
    Blinker 模拟传感器+数字传感器例程(DHT11 温湿度+气体传感)
    Blinker 模拟传感器+数字
    才接触1星期,发现Blinker自带了很多例程,已经成功试验了DHT的例程序,并完善了体
    关于ADXL335加速度计相关问题
    关于ADXL335加速度计相关
    首先用测试程序,通过监视器看到获取到的模拟量 后面,把模拟量经过ADC以及公式换算
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表