Robofun 機器人論壇

 找回密碼
 申請會員
搜索
熱搜: 活動 交友 discuz
查看: 6988|回復: 19
打印 上一主題 下一主題

如何用SD卡建立多個檔名有規律的.TXT檔案

[複製鏈接]
跳轉到指定樓層
1#
發表於 2016-7-13 13:01:27 | 顯示全部樓層 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
目前想要做多個排序名稱來命名.TXT(例如1.TXT 2.TXT 3.TXT....等)
但是用myFile = SD.open("1.txt", FILE_WRITE); 這指令
要怎麼改成可以自己新增2.TXT 3.TXT...等檔案?
2#
 樓主| 發表於 2016-7-20 10:17:05 | 顯示全部樓層
本帖最後由 thuthu94 於 2016-7-20 10:52 編輯

回復 2# 超新手

目前又卡關了
改了資料後變成可以創新檔案但是無法寫入資料
附上檔案
void loop()
{
  char FileName[8] = "0.txt";
  for(FileName[0] = '0' ;FileName[0] < '5' ; FileName[0]++) {
    if (SD.open(FileName, FILE_WRITE)) {
      Serial.print("Writing to ");
      Serial.println(FileName);
      for (int i=0; i <= 10; i++){
        sensorValue = analogRead(analogInPin);
        myFile.println(sensorValue);   
        Serial.println(sensorValue);
        delay(300);
      }  
      myFile.close();
      Serial.println("done.");
    }
    else {
      Serial.print("error opening ");
      Serial.println(FileName);
    }
  }


}
3#
 樓主| 發表於 2016-7-20 10:53:59 | 顯示全部樓層
回復 4# 超新手


   這跟   if (SD.open(FileName, FILE_WRITE)) {

的功能不一樣嗎??
4#
 樓主| 發表於 2016-7-22 13:24:38 | 顯示全部樓層
回復 6# 超新手

感謝教導
另外詢問一下檔案格式問題
是只能用.TXT檔案嗎?因為想要做曲線圖表
想用Excel存取檔案
但是好像無法直接存取....
還是說有其他的檔案格式可以用?
5#
 樓主| 發表於 2016-8-1 09:09:50 | 顯示全部樓層
回復 8# 超新手


   試過用以上的方法了
是可以用了但是好像無法直接用ARDUINO去直接創個
.xls對吧?
執行後會顯示錯誤
6#
 樓主| 發表於 2016-8-1 09:46:24 | 顯示全部樓層
回復 10# 超新手


   有了 抱歉!!
發現是自己搞烏龍
7#
 樓主| 發表於 2016-8-2 10:56:09 | 顯示全部樓層
另外一直用不出來在EXCEL上把資料分成兩隔(左右兩邊)
目前程式
        Serial.print("value,");
        myFile.print("value,");
        Serial.println(sensorValue);
        myFile.println(sensorValue);

一個是固定要顯示的 一個是感測器測量到的值
想要分別歸類在左右兩格
但目前不管怎樣用就是會再同一格顯示value,XXX
8#
 樓主| 發表於 2016-8-3 09:47:19 | 顯示全部樓層
本帖最後由 thuthu94 於 2016-8-3 09:49 編輯

問個指令問題  char FileName[8] = "1.TXT";
  for(FileName[0] = '1' ;FileName[0] < '8' ; FileName[0]++) {


請問一下紅色的那個8是什麼意思
另外綠色的部分後面最多可以寫<多少?
昨天試了好幾次 感覺不能寫太多 不然檔案會砍不掉(要從新格式化才能)
9#
 樓主| 發表於 2016-8-3 10:11:05 | 顯示全部樓層
for(FileName[0] = '1' ;FileName[0] < '8' ; FileName[0]++) {
那如果一上面這個指令來看
檔名達到8.TXT時
我想要砍1.TXT的檔案(好為下一次紀錄檔案 就是覆蓋過去的意思)
達到1.TXT時想砍2.TXT  為3.TXT砍4.TXT......以此類推
我該怎麼搭配這指令用SD.remove("?.txt");
10#
 樓主| 發表於 2016-8-3 10:21:29 | 顯示全部樓層
回復 16# thuthu94


   我想到可以用 switch…case來寫
但是前面判斷是寫
case '?.TXT' 來當判斷式嗎?:
11#
 樓主| 發表於 2016-8-3 14:58:31 | 顯示全部樓層
回復 19# 超新手


   感謝!!這樣就可以做些大筆的簡單數據紀錄

另外case目前解決的方法是用
在void setup()內先設定X=1
在void loop()內的書寫資料底下加入
     switch(x)           //把舊資料刪除      {
      case 1:
        Serial.println("Removing 4.TXT....");
        SD.remove("4.TXT");
        break;
      case 2:
        Serial.println("Removing 5.TXT...");
        SD.remove("5.TXT");
        break;
      case 3:
        Serial.println("Removing 6.TXT...");
        SD.remove("6.TXT");
        break;
     ......................
     ......................
      default:
        ;  
      }


      x ++;  


      if (x > 7)        \\迴圈
        {
          x = 1;
        }
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

小黑屋|手機版|Archiver|機器人論壇 from 2005.07

GMT+8, 2024-5-16 15:07 , Processed in 0.092903 second(s), 8 queries , Apc On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表