• FATFS在SD卡里,写入多行数据出的问题


    串口接收的数据存入数组,然后把数组截取有效部分,存入SD卡里的一行没有问题

    但是从SD卡读出这一行之后,重新写入SD卡就有了问题,经过调试发现,错误在于 

    一直是这一串数据,为什么会出错呢???

    从数组中截取的部分命名为新数组  s[]

    从SD卡中读取的部分为                  S[]

    s[]  和 S[] 内容是一样的,但是 S[] 中多了一个

    就是因为这个导致数据出错。错误现象::

     有很多次写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, " ", sizeof(" ")-1, &bw);                                   //换行回车    只要我们每次写的时候有换行回车就行.
      n2=f_write(write,number , strlen((const char*)number), &bw);          //写入     
      n3=f_write(write, " ", sizeof(" ")-1, &bw);                                   //回车换行
      n4=f_write(write,zu , strlen((const char*)zu), &bw);                           //写入
        
        n5=f_write(write, " ", sizeof(" ")-1, &bw);                                //回车换行
      n6=f_write(write,v , strlen((const char*)v), &bw);                              //写入能量组号

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

  • 相关阅读:
    用Java来获取访问者真实的IP地址
    springMVC 配置多个视图解析器
    java 内部类(inner class)详解
    安装mysql步骤
    Jquery 获取父页面下指定iframe里的指定元素
    Oracle 中文排序
    Oracle update时做表关联
    Jquery IE8兼容性
    JQuery 动态创建表单,并自动提交
    JQuery 使用.show()和.hide()做的可爱动画
  • 原文地址:https://www.cnblogs.com/chulin/p/9002521.html
Copyright © 2020-2023  润新知