极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10088|回复: 1

如何设置时间间隔,把GPS数据记录到SD卡上?THX~

[复制链接]
发表于 2012-12-28 00:33:52 | 显示全部楼层 |阅读模式
现在在做一个实验,需要记录GPS数据和其他一些传感器的数据,现阶段只进行到GPS数据记录就被卡住了~

  1. #include <SD.h>
  2. const int chipSelect = 10;
  3. void setup()
  4. {
  5.   Serial.begin(9600);
  6.   
  7.   pinMode(10, OUTPUT);
  8.   if (!SD.begin(chipSelect)) {
  9.    
  10.     return;
  11.   }

  12. }

  13. void loop()
  14. {
  15.   char index = 0;
  16.   char temp = 0;
  17.   String dataString = "";
  18. File dataFile = SD.open("datalog.txt", FILE_WRITE);
  19. if(dataFile)
  20. {
  21.    while(Serial.available())
  22.    {
  23.      temp = Serial.read();
  24.      dataString += String(temp);
  25.      index++;
  26.      if(index>200)
  27.        break;
  28.    }
  29.    dataFile.print(dataString);
  30.    dataFile.close();
  31. }
  32. }
复制代码


利用上面的sketch,能够把GPS的数据记录下来,结果如下:
[pre lang="GPS" line="1"]$PSRFTXT,Version: GSD4e_4.0.4-P1_RPATCH.06-GS003*60
$PSRFTXT,VAS: Disabled*4A
$PSRFTXT,TOW:  0*25
$PSRFTXT,WK:   1596*6E
$PSRFTXT,POS:  6378137.0 0.0 0.0*34
$PSRFTXT,CLK:  96248*2C
$PSRFTXT,CHNL: 12,*73
$PSRFTXT,Baud rate: 9600,*66
$GPGGA,235946.013,,,,,0,00,,,M,0.0,M,,0000,*5B
$GPGLL,,,,,235946.013,V,N,*77
$GPGSA,A,1,,,,,,,,,,,,,,,,*1E
$GPGSV,3,1,12,01,00,000,,02,00,000,,03,00,000,,04,00,000,,*7C
$GPGSV,3,2,12,05,00,000,,06,00,000,,07,00,000,,08,00,000,,*77
$GPGSV,3,3,12,09,00,000,,10,00,000,,11,00,000,,12,00,000,,*71
$GPRMC,235946.013,V,,,,,,,070810,,,N,*4E
$GPVTG,,T,,M,,N,,K,N,*2C

……………………………………[/code]

但如果按上面提供的sketch进行数据记录将产生非常庞大的数据量(24小时不到已经几十万行数据了),能告诉怎么设置时间间隔采样么?

我尝试过用delay(60000),但比较可惜是,虽然也能记录,但却不能把同一时间点的所有GPS数据记录下来,非常多的数据都丢失了~

有什么可以选择的方法么?

有朋友建议说用millis()进行时间间隔的判别,可是说实在,小弟真的不明白具体怎么个操作法{:soso_e118:}

小的编程程度大概是基本能读懂一些不太复杂的程序,可以把几个相似的程序做比较然后进行修改、模仿,仅此而已{:soso_e113:}

希望能得到大家的指点,也谢谢大家的赐教~{:soso_e183:}
回复

使用道具 举报

发表于 2012-12-28 19:46:01 | 显示全部楼层
原因就在于,你程序还在延时时,可能串口早就接收到数据了,所以延时结束时,你可能只能接收到部分数据了,
millis()在这里的用法,你可以参考例子里的BlinkWithoutDelay
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-5-6 14:03 , Processed in 0.041521 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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