极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 12767|回复: 3

将DS1302时间写入SD卡可以,串口设置时间会出问题

[复制链接]
发表于 2016-12-9 14:14:00 | 显示全部楼层 |阅读模式
今天参考如下帖子完成了DS1302测试,没有问题
http://www.geek-workshop.com/thread-205-1-1.html

但是我再接上SD卡,想把时间同时保存在SD卡中,通过串口设置时间后,输出如下,感觉像是把设置的时间如2016,12,09,09,36,40,5,每个字符换行输出了,程序参考链接,加上了SD卡写入程序



,初始化部分同链接程序,程序如下
  1. void loop()
  2. {
  3.   if (Serial.available() > 0) {
  4.     comdata += char(Serial.read());
  5.      delay(2);
  6.      mark = 1;
  7.      }
  8.     /* 以逗号分隔分解comdata的字符串,分解结果变成转换成数字到numdata[]数组 */
  9.     if(mark == 1)
  10.     {
  11.         Serial.print("You inputed : ");
  12.         Serial.println(comdata);
  13.         
  14.         delay(200);
  15.         
  16.         for(int i = 0; i < comdata.length() ; i++)
  17.         {
  18.             if(comdata[i] == ',' || comdata[i] == 0x10 || comdata[i] == 0x13)
  19.             {
  20.                 j++;
  21.             }
  22.             else
  23.             {
  24.                 numdata[j] = numdata[j] * 10 + (comdata[i] - '0');
  25.             }
  26.         }
  27.         /* 将转换好的numdata凑成时间格式,写入DS1302 */
  28.         Time t(numdata[0], numdata[1], numdata[2], numdata[3], numdata[4], numdata[5], numdata[6]);
  29.         rtc.time(t);
  30.         mark = 0;j=0;
  31.         /* 清空 comdata 变量,以便等待下一次输入 */
  32.         comdata = String("");
  33.         /* 清空 numdata */
  34.         for(int i = 0; i < 7 ; i++) numdata[i]=0;
  35.     }
  36.    
  37.    myFile = SD.open("DS1302.txt", FILE_WRITE);
  38.    if (myFile)

  39.      {
  40.    myFile.println(buf);
  41.    myFile.close();
  42.    }
  43.    
  44.     print_time();
  45.    delay(1000);
  46.   }
复制代码




估计这里有问题
myFile.println(buf);
还请帮忙看一下,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2016-12-12 23:21:11 | 显示全部楼层
考虑一下写sd和serial需要时间
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-13 19:49:42 | 显示全部楼层
maxims 发表于 2016-12-12 23:21
考虑一下写sd和serial需要时间

换成这样也不行
  1. myFile = SD.open("DS1302.txt", FILE_WRITE);
  2.    if (myFile)

  3.      {
  4. print_time();
  5.    delay(1000);
  6.    myFile.println(buf);
  7.    myFile.close();

  8.    }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 17:03 , Processed in 0.043968 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表