hi
Dependencies: SDFileSystem mbed
Fork of SDFileSystem_HelloWorld by
main.cpp@3:5e6d3d2b2557, 2017-12-25 (annotated)
- Committer:
- Ishwar_Anjana
- Date:
- Mon Dec 25 17:45:48 2017 +0000
- Revision:
- 3:5e6d3d2b2557
- Parent:
- 2:e0071aaa133c
hi
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mbed_official | 0:bdbd3d6fc5d5 | 1 | #include "mbed.h" |
mbed_official | 0:bdbd3d6fc5d5 | 2 | #include "SDFileSystem.h" |
Ishwar_Anjana | 2:e0071aaa133c | 3 | #include <string> |
Ishwar_Anjana | 2:e0071aaa133c | 4 | #include <vector>\ |
Ishwar_Anjana | 2:e0071aaa133c | 5 | #include <stdio.h> |
Ishwar_Anjana | 2:e0071aaa133c | 6 | #include <iostream> |
mbed_official | 0:bdbd3d6fc5d5 | 7 | |
Ishwar_Anjana | 2:e0071aaa133c | 8 | |
Ishwar_Anjana | 2:e0071aaa133c | 9 | SDFileSystem sd(D11, D12, D13, D10, "sd"); // the pinout on the mbed Cool Components workshop board |
Ishwar_Anjana | 2:e0071aaa133c | 10 | |
Ishwar_Anjana | 2:e0071aaa133c | 11 | //.....assumes SDFileSystem is setup in earlier code for device "/sd" |
Ishwar_Anjana | 2:e0071aaa133c | 12 | |
Ishwar_Anjana | 2:e0071aaa133c | 13 | vector<string> filenames; //filenames are stored in a vector string |
Ishwar_Anjana | 2:e0071aaa133c | 14 | vector<string> filedata; //file data is stored in a vector string |
Ishwar_Anjana | 2:e0071aaa133c | 15 | /////////////////////////////////////////////////////////////////////////////// |
Ishwar_Anjana | 2:e0071aaa133c | 16 | using namespace std; |
Ishwar_Anjana | 2:e0071aaa133c | 17 | typedef unsigned char BYTE; |
Ishwar_Anjana | 2:e0071aaa133c | 18 | |
Ishwar_Anjana | 2:e0071aaa133c | 19 | long getFileSize(FILE *file) |
Ishwar_Anjana | 2:e0071aaa133c | 20 | { |
Ishwar_Anjana | 2:e0071aaa133c | 21 | long lCurPos,lEndPos; |
Ishwar_Anjana | 2:e0071aaa133c | 22 | lCurPos = ftell(file); |
Ishwar_Anjana | 2:e0071aaa133c | 23 | fseek(file,lCurPos, 0); |
Ishwar_Anjana | 2:e0071aaa133c | 24 | return lEndPos; |
Ishwar_Anjana | 2:e0071aaa133c | 25 | } |
Ishwar_Anjana | 2:e0071aaa133c | 26 | ////////////////////////////////////////////////////////////////////////////// |
Ishwar_Anjana | 2:e0071aaa133c | 27 | |
Ishwar_Anjana | 2:e0071aaa133c | 28 | |
mbed_official | 0:bdbd3d6fc5d5 | 29 | |
Ishwar_Anjana | 2:e0071aaa133c | 30 | void read_file_names(char *dir) |
Ishwar_Anjana | 2:e0071aaa133c | 31 | { |
Ishwar_Anjana | 2:e0071aaa133c | 32 | DIR *dp; |
Ishwar_Anjana | 2:e0071aaa133c | 33 | struct dirent *dirp; |
Ishwar_Anjana | 2:e0071aaa133c | 34 | dp = opendir(dir); |
Ishwar_Anjana | 2:e0071aaa133c | 35 | //read all directory and file names in current directory into filename vector |
Ishwar_Anjana | 2:e0071aaa133c | 36 | while((dirp = readdir(dp)) != NULL) { |
Ishwar_Anjana | 2:e0071aaa133c | 37 | filenames.push_back(string(dirp->d_name)); |
Ishwar_Anjana | 2:e0071aaa133c | 38 | } |
Ishwar_Anjana | 2:e0071aaa133c | 39 | closedir(dp); |
Ishwar_Anjana | 2:e0071aaa133c | 40 | } |
Ishwar_Anjana | 2:e0071aaa133c | 41 | void read_file_data (char *dir) |
Ishwar_Anjana | 2:e0071aaa133c | 42 | { |
Ishwar_Anjana | 2:e0071aaa133c | 43 | DIR *dp; |
Ishwar_Anjana | 2:e0071aaa133c | 44 | struct dirent *dirp; |
Ishwar_Anjana | 2:e0071aaa133c | 45 | dp = opendir(dir); |
Ishwar_Anjana | 2:e0071aaa133c | 46 | //read all directory and file names in current directory into filename vector |
Ishwar_Anjana | 2:e0071aaa133c | 47 | while((dirp = readdir(dp)) != NULL) { |
Ishwar_Anjana | 2:e0071aaa133c | 48 | filenames.push_back(string(dirp->d_name)); |
Ishwar_Anjana | 2:e0071aaa133c | 49 | } |
Ishwar_Anjana | 2:e0071aaa133c | 50 | closedir(dp); |
Ishwar_Anjana | 2:e0071aaa133c | 51 | } |
mbed_official | 0:bdbd3d6fc5d5 | 52 | int main() { |
mbed_official | 0:bdbd3d6fc5d5 | 53 | printf("Hello World!\n"); |
mbed_official | 0:bdbd3d6fc5d5 | 54 | |
Ishwar_Anjana | 2:e0071aaa133c | 55 | |
mbed_official | 0:bdbd3d6fc5d5 | 56 | |
Ishwar_Anjana | 2:e0071aaa133c | 57 | FILE *fp = fopen("/sd/mydir/sdtest.txt", "w"); |
mbed_official | 0:bdbd3d6fc5d5 | 58 | if(fp == NULL) { |
mbed_official | 0:bdbd3d6fc5d5 | 59 | error("Could not open file for write\n"); |
mbed_official | 0:bdbd3d6fc5d5 | 60 | } |
mbed_official | 0:bdbd3d6fc5d5 | 61 | fprintf(fp, "Hello fun SD Card World!"); |
Ishwar_Anjana | 2:e0071aaa133c | 62 | |
mbed_official | 0:bdbd3d6fc5d5 | 63 | fclose(fp); |
mbed_official | 0:bdbd3d6fc5d5 | 64 | |
mbed_official | 0:bdbd3d6fc5d5 | 65 | printf("Goodbye World!\n"); |
Ishwar_Anjana | 2:e0071aaa133c | 66 | |
Ishwar_Anjana | 2:e0071aaa133c | 67 | printf("Reading files!\n"); |
Ishwar_Anjana | 2:e0071aaa133c | 68 | |
Ishwar_Anjana | 2:e0071aaa133c | 69 | read_file_names("/sd"); |
Ishwar_Anjana | 2:e0071aaa133c | 70 | //read_file_data("/sd/sky.raw"); |
Ishwar_Anjana | 2:e0071aaa133c | 71 | |
Ishwar_Anjana | 2:e0071aaa133c | 72 | // print filename strings from vector using an iterator |
Ishwar_Anjana | 2:e0071aaa133c | 73 | for(vector<string>::iterator it=filenames.begin(); it < filenames.end(); it++) |
Ishwar_Anjana | 2:e0071aaa133c | 74 | { |
Ishwar_Anjana | 2:e0071aaa133c | 75 | printf("%s\n\r",(*it).c_str()); |
Ishwar_Anjana | 2:e0071aaa133c | 76 | } |
Ishwar_Anjana | 2:e0071aaa133c | 77 | ////////////////////////////////////////////////////////////////////////////// |
Ishwar_Anjana | 2:e0071aaa133c | 78 | const char *filePath = "/sd/sky.raw"; |
Ishwar_Anjana | 2:e0071aaa133c | 79 | BYTE *fileBuf; |
Ishwar_Anjana | 2:e0071aaa133c | 80 | FILE *file = NULL; |
Ishwar_Anjana | 2:e0071aaa133c | 81 | |
Ishwar_Anjana | 2:e0071aaa133c | 82 | if ((file = fopen(filePath, "rb"))== NULL) |
Ishwar_Anjana | 2:e0071aaa133c | 83 | { |
Ishwar_Anjana | 2:e0071aaa133c | 84 | //cout << "Could not open the file" << end1 ; |
Ishwar_Anjana | 2:e0071aaa133c | 85 | printf("Could not open the file"); |
Ishwar_Anjana | 2:e0071aaa133c | 86 | |
Ishwar_Anjana | 2:e0071aaa133c | 87 | } |
Ishwar_Anjana | 2:e0071aaa133c | 88 | else |
Ishwar_Anjana | 2:e0071aaa133c | 89 | { |
Ishwar_Anjana | 2:e0071aaa133c | 90 | |
Ishwar_Anjana | 2:e0071aaa133c | 91 | // cout << "opening file successfull" << end1 ; |
Ishwar_Anjana | 2:e0071aaa133c | 92 | printf("opening file successfull"); |
Ishwar_Anjana | 2:e0071aaa133c | 93 | } |
Ishwar_Anjana | 2:e0071aaa133c | 94 | |
Ishwar_Anjana | 2:e0071aaa133c | 95 | long fileSize = getFileSize(file); |
Ishwar_Anjana | 2:e0071aaa133c | 96 | |
Ishwar_Anjana | 2:e0071aaa133c | 97 | fileBuf = new BYTE[fileSize]; |
Ishwar_Anjana | 2:e0071aaa133c | 98 | |
Ishwar_Anjana | 2:e0071aaa133c | 99 | fread(fileBuf, fileSize, 1, file); |
Ishwar_Anjana | 2:e0071aaa133c | 100 | |
Ishwar_Anjana | 2:e0071aaa133c | 101 | for(int i=0; i<100; i++) |
Ishwar_Anjana | 2:e0071aaa133c | 102 | { |
Ishwar_Anjana | 2:e0071aaa133c | 103 | printf("%X", fileBuf[i]); |
Ishwar_Anjana | 2:e0071aaa133c | 104 | } |
Ishwar_Anjana | 2:e0071aaa133c | 105 | |
Ishwar_Anjana | 2:e0071aaa133c | 106 | cin.get(); |
Ishwar_Anjana | 2:e0071aaa133c | 107 | delete[]fileBuf; |
Ishwar_Anjana | 2:e0071aaa133c | 108 | fclose(file); |
Ishwar_Anjana | 2:e0071aaa133c | 109 | ///////////////////////////////////////////////////////////////////////////////// |
Ishwar_Anjana | 2:e0071aaa133c | 110 | |
Ishwar_Anjana | 2:e0071aaa133c | 111 | |
Ishwar_Anjana | 2:e0071aaa133c | 112 | |
Ishwar_Anjana | 2:e0071aaa133c | 113 | ///////////////////////////////////////////////////////////////////////////////// |
Ishwar_Anjana | 2:e0071aaa133c | 114 | |
Ishwar_Anjana | 2:e0071aaa133c | 115 | |
Ishwar_Anjana | 2:e0071aaa133c | 116 | |
Ishwar_Anjana | 2:e0071aaa133c | 117 | fp = fopen("/sd/mydir/sdtest.txt", "r+"); |
Ishwar_Anjana | 2:e0071aaa133c | 118 | if(fp == NULL){ |
Ishwar_Anjana | 2:e0071aaa133c | 119 | printf("error in opening file"); |
Ishwar_Anjana | 2:e0071aaa133c | 120 | } |
Ishwar_Anjana | 2:e0071aaa133c | 121 | |
Ishwar_Anjana | 2:e0071aaa133c | 122 | // fread(fp, buff, 10, readBuff); |
Ishwar_Anjana | 2:e0071aaa133c | 123 | char line[100]; /* Line buffer */ |
Ishwar_Anjana | 2:e0071aaa133c | 124 | // FRESULT fr; /* FatFs return code */ |
Ishwar_Anjana | 2:e0071aaa133c | 125 | /* Read all lines and display it */ |
Ishwar_Anjana | 2:e0071aaa133c | 126 | while (fgets(line, sizeof line, fp)) { |
Ishwar_Anjana | 2:e0071aaa133c | 127 | printf(line); |
Ishwar_Anjana | 2:e0071aaa133c | 128 | } |
Ishwar_Anjana | 2:e0071aaa133c | 129 | |
Ishwar_Anjana | 2:e0071aaa133c | 130 | fscanf(fp, line, sizeof line); |
Ishwar_Anjana | 2:e0071aaa133c | 131 | |
Ishwar_Anjana | 2:e0071aaa133c | 132 | printf("Reading line %s", line); |
Ishwar_Anjana | 2:e0071aaa133c | 133 | } |
Ishwar_Anjana | 2:e0071aaa133c | 134 | |
Ishwar_Anjana | 2:e0071aaa133c | 135 | |
Ishwar_Anjana | 2:e0071aaa133c | 136 | |
Ishwar_Anjana | 2:e0071aaa133c | 137 | |
Ishwar_Anjana | 2:e0071aaa133c | 138 | |
Ishwar_Anjana | 2:e0071aaa133c | 139 |