查看: 2229|回复: 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 | 显示全部楼层
[mw_shl_code=c,true]//引用两个库文件
#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 + "  时出错");
  }
}[/mw_shl_code]
  • 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 | 显示全部楼层
    这个玩意好像有点麻烦,技术太菜,只能等高人写个帖子了
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    ps2遥控小车——uno实现
    ps2遥控小车——uno实现
    前几天在阁楼发现了好久以前3d打印,激光切割的底盘,于是决定做这个东西 正好手上又
    【Arduino】168种传感器模块系列实验(90)--- ULN2003步进电机
    【Arduino】168种传感器模
    37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是
    arduino实现一个按键检测库
    arduino实现一个按键检测
    参照OneButton库, 我实现了一个自己的按键检测库, 实现了按键的按下,抬起,长按,双击功
    arduino封装了一个无线串口模块LC12S的操作库
    arduino封装了一个无线串
    前一段时间接触到一个比较好用的2.4G无线串口通信模块LC12S, 在淘宝上仅四五块钱,收
    《失败的arduino探索经历》
    《失败的arduino探索经历
    先前的想法很简单:用指南针模块GY271,主芯片HMC5883L做一个指南针,采用指南针的读
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表