FATFS在SD卡里,寫入多行數據出的問題


串口接收的數據存入數組,然后把數組截取有效部分,存入SD卡里的一行沒有問題

但是從SD卡讀出這一行之后,重新寫入SD卡就有了問題,經過調試發現,錯誤在於  \n

一直是這一串數據,為什么會出錯呢???

 

從數組中截取的部分命名為新數組  s[]

從SD卡中讀取的部分為                  S[]

s[]  和 S[] 內容是一樣的,但是 S[] 中多了一個 \n

就是因為這個導致數據出錯。錯誤現象::

 有很多次寫SD卡的時候插回電腦會提示有錯誤,,,經過查看SD卡里會多出一些莫名奇妙的,看不見的字符

 

 

 

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

用一個指針p 指向數組S[]   然后就可以把數組里的英文變成字符串,然后用下面的函數進行寫入

下面的函數是寫入多行數據

//=================================================================================================
//函數名稱: write_txt  寫sd卡,用於從串口接收的:語言,機器碼,能量組,寫進txt中
//輸入參數:         //1;傳進來的參數是從串口過來的ASCII格式,但是中間用數組保存,之后用char*指針指向數組
//輸出參數:         //  不知道寫入sd卡的f_write()函數會把ASCII轉換成什么格式
//函數功能: 寫sd卡
//日    期: 2017-11-13
//作    者: GXTon
//=================================================================================================                                                    
void write_txt(char *name,char *number,char *zu,char *v)
{
    u8 n0,n1,n2,n3,n4,n5,n6,N;
    u8 res;  
    FIL *write;                                                             
    write=(FIL*)mymalloc(SRAMIN,sizeof(FIL));
    res=f_open(write,"0:/01.txt",FA_CREATE_ALWAYS|FA_WRITE);   //f_open函數每次打開都回到第一個字節處.
                                                                                                          //需要添加報錯的 FA_OPEN_ALWAYS(有就打開)
    
    res=f_lseek(write,write->fsize);                                                      //將指針指向文件末
    res=res;
    n0=f_write(write,name , strlen((const char*)name), &bw);              //  寫在txt文件的第一行
    
  n1=f_write(write, "\r\n", sizeof("\r\n")-1, &bw);                                   //換行回車    只要我們每次寫的時候有換行回車就行.
  n2=f_write(write,number , strlen((const char*)number), &bw);          //寫入     
  n3=f_write(write, "\r\n", sizeof("\r\n")-1, &bw);                                   //回車換行
  n4=f_write(write,zu , strlen((const char*)zu), &bw);                           //寫入
    
    n5=f_write(write, "\r\n", sizeof("\r\n")-1, &bw);                                //回車換行
  n6=f_write(write,v , strlen((const char*)v), &bw);                              //寫入能量組號

    N=n0*n1*n2*n3*n4*n5*n6;
  if(N<1){}                                                                                           //先判斷寫是否成功??????
//        {
//                printf("\r\n f_puts() fail..\r\n");
//        }else{
//                printf("\r\n f_puts() success..\r\n");
//        }        
                
    f_close(write);
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM