串口接收的数据存入数组,然后把数组截取有效部分,存入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);
}

FATFS在SD卡里,写入多行数据出的问题的更多相关文章

  1. 用FATFS在SD卡里写一串数字

    用FATFS写SD卡,如写入数组 s[] ={1,2,3,4,5,6} 想要在txt中显示“123456” 就要把 s[0]=1+'0'    或 s[0]=1+48   或 s[0]=1+0x30  ...

  2. asserts文件存到外部SD卡里

    package com.example.wang.testapp3; import android.content.res.AssetManager; import android.graphics. ...

  3. [FatFs 学习] SD卡总结-SPI模式

    SD卡为移动设备提供了安全的,大容量存储解决方法.它本身可以通过两种总线模式和MCU进行数据传输,一种是称为SD BUS的4位串行数据模式,另一种就是大家熟知的4线SPI Bus模式.一些廉价,低端的 ...

  4. android 往sd卡中写入文件

    在调用前需要判断是否有写入权限 Environment类提供了比较丰富的方法 static File getDataDirectory() 获得android data的目录. static File ...

  5. 安卓 往SD卡里写文件不能及时更新的问题

    我们做Android开发时奖保存图片到SD卡,但是Gallery中不能及时显示 下面我找到了问题所在然后解决了这个问题. 当保存图片后打开gallery时,有的会自动给你刷新,有的不行,这样就导致图片 ...

  6. Android(java)学习笔记182:保存数据到SD卡 (附加:保存数据到内存)

    1. 如果我们要想读写数据到SD卡中,首先必须知道SD的路径: File file = new File(Environment.getExternalStorageDirectory()," ...

  7. Android(java)学习笔记125:保存数据到SD卡 (附加:保存数据到内存)

    1. 如果我们要想读写数据到SD卡中,首先必须知道SD的路径: File file = new File(Environment.getExternalStorageDirectory()," ...

  8. sql里将重复行数据合并为一行,数据用逗号分隔

    一.定义表变量 DECLARE @T1 table ( UserID int , UserName ), CityName ) ); ,'a','上海') ,'b','北京') ,'c','上海') ...

  9. [SQL]把同一字段里的多行数据用一行显示

    declare @t table(id int,num int) insert @t , union all , union all , --select * from @t ----查询 decla ...

随机推荐

  1. Advanced-REST-client-http接口测试工具

    前言 作为一名在IT金字塔底层的苦逼码农也会接触http接口,各位开发大佬肯定也会有需要写或者测试http接口的时候.大多数接口测试工具都需要本地安装客户端,我这里分享一个谷歌浏览器的测试接口插件非常 ...

  2. php 根据html table生成excel文件

    <?php /* *处理Excel导出 *@param $datas array 设置表格数据 *@param $titlename string 设置head *@param $title s ...

  3. 阅读笔记—MVC

    MVC设计模式 Model 1 体系结构 在Model 1 体系结构中,每一个请求的目标都是JSP页面.JSP页面负责完成请求所需要的而所有任务,其中包括验证客户.使用JavaBeans访问数据库及管 ...

  4. 洛谷 P2392 kkksc03考前临时抱佛脚

    P2392 kkksc03考前临时抱佛脚 题目背景 kkksc03的大学生活非常的颓废,平时根本不学习.但是,临近期末考试,他必须要开始抱佛脚,以求不挂科. 题目描述 这次期末考试,kkksc03需要 ...

  5. android 自己定义状态栏和导航栏分析与实现

    效果 android 4.4之后,系统是支持自己定义状态栏和导航栏的.举个最典型的样例就是bilibiliclient了(iOS版本号和android版本号能用两套全然不一样符合各自系统的设计ui,良 ...

  6. popover弹出框

    <style> #view{width: 300px;height: 200px;border: 1px solid red;} </style> 以上是为了viewport更 ...

  7. 字符设备驱动-------Linux异常处理体系结构

    裸机中断流程 外部触发 CPU 发生中断, 强制的跳到异常向量处 跳转到具体函数 保存被中断处的现场(各种寄存器的值) 执行中断处理函数,处理具体任务 恢复被中断的现场 Linux处理异常流程 异常发 ...

  8. SpringCloud核心教程 | 第二篇: 使用Intellij中的maven来快速构建Spring Cloud工程

    spring cloud简介 spring cloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.微代理.事件总线.全局锁.决策竞选.分布式会话等等.它运行环 ...

  9. diff命令具体解释

    diff命令參数: diff - 找出两个文件的不同点 总览 diff [选项] 源文件 目标文件 以下是 GNU所接受的 diff 的全部选项的概要. 大多数的选项有两个同样的名字,一个是单个的跟在 ...

  10. layout-maxWidth属性用法

    对于maxWidth属性,相信大家都不陌生.不过,今天我遇到了一个问题,就是当我希望一个relayout的宽度有个最大值的时候,用maxWidth却没办法实现.这里总结下maxWidth 的用法 1. ...