读写sd卡代码分析(vivado sdk c++)

void ReadFloatsFromSDFile(float *weightsFromFile, const std::string file_name)
{
    FIL fil;        /* File object */
    FATFS fatfs;
    FILINFO file_info;
    char *SD_File;
    FRESULT Res;
    UINT NumBytesRead;

    Res = f_mount(&fatfs, "0:/", 0);
    if (Res != FR_OK) printf( "Could not mount SD card.");

    //printf("SD Card Mounted successfully\n");
    SD_File = (char *)file_name.c_str();

    Res = f_open(&fil, SD_File, FA_READ | FA_OPEN_EXISTING);
    if (Res) throw Res;
    //printf("FILE Opened successfully\n");

    Res = f_lseek(&fil, 0);
    if (Res) throw "Failed to seek opened file.";

    Res = f_stat(SD_File, &file_info);
    //DWORD fil_size = file_info.fsize+1;

    //printf("Size: %u\n",file_info.fsize);
    Res = f_stat(SD_File, &file_info);
    //DWORD fil_size = file_info.fsize+1;
    for(int i = 0; i < 51902; i++) {

        float number;
        Res = f_read(&fil, &number, sizeof(number), &NumBytesRead);
        if (Res) throw "Failed to read file.";
        //if(i==49154)printf("the first weight value is %.2f\n", number);
        weightsFromFile[i] = number;
        //weightsFromFile[i+1] = number[2];

    }
  1. const: const 类型的对象在程序执行期间不能被修改改变。
  2. 这个函数需要weightsFromFile和存在sd卡中的file_name。
  3. 命名空间

    这里std::string file_name前面的std是为了指明命名空间,因为很多函数可能在很多的库中出现,指明了之后就不会引起混乱。

    简单的说,命名空间是为了防止冲突而建立的。比如你在命名空间a声明一个方法c,在命名空间b也声明一个方法c,那么在使用的时候就可以通过a::c和b::c来分别调用两个方法。

    使用命名空间的语句是:using namespace [命名空间的名称]

    一旦使用了这个语句,你就可以直接写该命名空间的方法名,比如:

    using namespace std; // 使用std命名空间

    cout << "xxx" << endl; // 你还是可以写成std::cout << "xxx" << std::endl;的

    延伸几点:

  • 这里还有一点,使用标准函数库
  • endl为换行符,‘‘std::cout<<"love you"<<endl;``

    "endl"与"\n"的区别是"endl"还调用输出流的flush函数,刷新缓冲区,让数据直接写在文件或者屏幕上。

  1. std:string

    之所以抛弃char*的字符串而选用C++标准程序库中的string类,是因为他和前者比较起来,不必担心内存是否足够、字符串长度等等,而且作为一个类出现,他集成的操作函数足以完成我们大多数情况下(甚至是100%)的需要。我们可以用 = 进行赋值操作,== 进行比较,+ 做串联(是不是很简单?)。我们尽可以把它看成是C++的基本数据类型。

    详情:http://blog.csdn.net/debugconsole/article/details/8677313

main.cc

float *weightsFromFile = (float *) malloc(numOfParameters*sizeof(float));
int *test_labels = (int *) malloc(10000 * sizeof(int));
std::vector<std::vector<float> > test_images;
int correctPrediction;
  1. malloc

    float *weightsFromFile = (float *) malloc(numOfParameters*sizeof(float));

    此句为分配numOfParameters个float型变量。

    函数原型是void *malloc(unsigned int num_bytes);

    但是void型不能赋值给float/int,因此要用(float *)强制转换。

    sizeof(float)为float型变量的字节。

  2. std::vector<std::vector<float> > test_images;

原文地址:https://www.cnblogs.com/litingyu/p/8311681.html

时间: 2024-11-07 21:22:28

读写sd卡代码分析(vivado sdk c++)的相关文章

Android——数据存储(四种方式之二)读写SD卡

Android--数据存储(四种方式) 1.SharedPrefereces 只能保存一些简单的数轻量级.XML  存储文件名, 数据保存在data/data/basepackage/shared_prefs/myopt.xml中    实例-收藏-记住密码自动登录 //一种轻量级的数据存储方式//通过KEY 存入数据--putxxxx(key,value) 取出数据--getxxxx(key  default) 2.读写SD卡  SD的根目录  适用于数据流读写 实现步骤:加入读写SD卡权限

Android读写SD卡

SD卡的读写是我们在开发Android 应用程序过程中最常见的操作.下面介绍SD卡的读写操作方式: 1. 获取SD卡的根目录 String sdCardRoot = Environment.getExternalStorageDirectory().getAbsolutePath(); // 何问起 hovertree.com 2. 在SD卡上创建文件夹目录 /** * 在SD卡上创建目录 */ public File createDirOnSDCard(String dir) { File d

安卓系统无法读写SD卡(2015-04-02更新)

安卓4.4及以后的系统对二级外部存储设备做了读写权限限制,导致应用程序可能不能读写外置SD卡,以下方法可以解除限制. 1.Root系统. 2.安装RE管理器. 3.用RE管理器修改“/system/etc/permissions”目录下的"platform.xml"文件,找到以下标签,添加红色字体部分. <permission name="android.permission.WRITE_EXTERNAL_STORAGE" >          <

Android——数据存储(四种方式之二)读写SD卡——练习

1保存到SDK  --字符串方式 <span style="font-size:18px;"><strong>package com.example.jreduch08.SDK; import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.os.Environment; import android.

android读写SD卡封装的类

参考了网上的一些资源代码,FileUtils.java: package com.example.filereadwrite; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOut

在安卓4.2.2的系统上,具有系统权限的应用不能读写SD卡

解决方法有两种: 1.通过修改android系统的源码,开放SD卡的读写权限,详细的修改方法和说明,可以参考网上资料http://www.ifeegoo.com/android-debug-static-storage-paths-are-not-available-from-aid-system-error-analysis-and-solution.html 2.在应用中把android:sharedUserId="android.uid.system"改为android:shar

【Espruino】NO.11 轻松读写SD卡

http://bbs.hsw.cn/5337730/spacelist-profile.html http://bbs.hsw.cn/5337824/spacelist-profile.html http://bbs.hsw.cn/5337749/spacelist-profile.html http://bbs.hsw.cn/5337853/spacelist-profile.html http://bbs.hsw.cn/5337768/spacelist-profile.html http:

SD卡读写之FileNotFoundException: /storage/emulated/0object.txt: open failed: ENOENT (No such file or dir

读写sd卡中的文件按照如下步骤:1调用Environment的getExternalStorageState()方法判断手机上是否插入了sd卡,并且应用程序具有读写SD卡的能力 //如果手机已经插入了SD卡,且具有读写sd卡的能力,下面的语句将会返回true Environment.getExternalStorageState().equals(Envronment.MEDIA_MOUNTED) 2)调用environment的getExternalStorageDIrectory()方法获取

基础学习总结(三)--文本数据读写文件、SD卡

简单的文本数据写入文件不需要权限,读写SD卡在4.0版本前需要写权限.在4.0后需要读写权限 布局: 1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android