just file
Dependencies: SDFileSystem mbed
Fork of wmx_laser by
main.cpp@10:40d607be2e87, 2018-09-21 (annotated)
- Committer:
- Dennis_Yu
- Date:
- Fri Sep 21 06:57:24 2018 +0000
- Revision:
- 10:40d607be2e87
- Parent:
- 8:edb685e9d93e
???????sd????????; ??????????????
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Dennis_Yu | 10:40d607be2e87 | 1 | #include <string> |
Dennis_Yu | 10:40d607be2e87 | 2 | #include <vector> |
zhangyx | 0:1170747a672f | 3 | #include "mbed.h" |
zhangyx | 4:ae6f380a5b41 | 4 | #include "SDFileSystem.h" |
zhangyx | 0:1170747a672f | 5 | |
Dennis_Yu | 10:40d607be2e87 | 6 | //using namespace std; |
zhangyx | 4:ae6f380a5b41 | 7 | |
Dennis_Yu | 10:40d607be2e87 | 8 | Serial ser2usb(PA_9, PA_10, 115200); |
Dennis_Yu | 8:edb685e9d93e | 9 | |
zhangyx | 4:ae6f380a5b41 | 10 | // mosi, miso, sclk, cs, name |
zhangyx | 4:ae6f380a5b41 | 11 | SDFileSystem sd(PB_15, PB_14, PB_13, PB_12, "sd"); |
zhangyx | 4:ae6f380a5b41 | 12 | |
Dennis_Yu | 10:40d607be2e87 | 13 | char mydir[1024]; |
zhangyx | 4:ae6f380a5b41 | 14 | |
Dennis_Yu | 10:40d607be2e87 | 15 | vector<string> filenames; //filenames are stored in a vector string |
Dennis_Yu | 10:40d607be2e87 | 16 | |
Dennis_Yu | 10:40d607be2e87 | 17 | void read_file_names(char *dir) |
Dennis_Yu | 10:40d607be2e87 | 18 | //这个函数后期可以重载成带一个输入vector<string>引用对象的方法 |
Dennis_Yu | 10:40d607be2e87 | 19 | //这样这个vector可以不用声明成全局变量 |
Dennis_Yu | 10:40d607be2e87 | 20 | //already reload |
zhangyx | 4:ae6f380a5b41 | 21 | { |
Dennis_Yu | 10:40d607be2e87 | 22 | DIR *dp;//一个文件地址对象指针 |
Dennis_Yu | 10:40d607be2e87 | 23 | struct dirent *dirp; |
Dennis_Yu | 10:40d607be2e87 | 24 | //下面是dirent的定义 |
Dennis_Yu | 10:40d607be2e87 | 25 | //struct dirent |
Dennis_Yu | 10:40d607be2e87 | 26 | //{ |
Dennis_Yu | 10:40d607be2e87 | 27 | // long d_ino; |
Dennis_Yu | 10:40d607be2e87 | 28 | // off_t d_off; |
Dennis_Yu | 10:40d607be2e87 | 29 | // unsigned short d_reclen; |
Dennis_Yu | 10:40d607be2e87 | 30 | // char d_name [NAME_MAX+1]; |
Dennis_Yu | 10:40d607be2e87 | 31 | //} |
Dennis_Yu | 10:40d607be2e87 | 32 | |
Dennis_Yu | 10:40d607be2e87 | 33 | /**************************************************************** |
Dennis_Yu | 10:40d607be2e87 | 34 | 这里的dirent.h是linux下的常用头文件 |
Dennis_Yu | 10:40d607be2e87 | 35 | 使用方法参看 |
Dennis_Yu | 10:40d607be2e87 | 36 | https://blog.csdn.net/dream_allday/article/details/75243818 |
Dennis_Yu | 10:40d607be2e87 | 37 | *****************************************************************/ |
Dennis_Yu | 10:40d607be2e87 | 38 | |
Dennis_Yu | 10:40d607be2e87 | 39 | dp = opendir(dir); |
Dennis_Yu | 10:40d607be2e87 | 40 | //read all directory and file names in current directory into filename vector |
Dennis_Yu | 10:40d607be2e87 | 41 | while((dirp = readdir(dp)) != NULL) |
Dennis_Yu | 8:edb685e9d93e | 42 | { |
Dennis_Yu | 10:40d607be2e87 | 43 | filenames.push_back(string(dirp->d_name)); |
Dennis_Yu | 10:40d607be2e87 | 44 | //push_back是vector对象中的一个方法 |
Dennis_Yu | 10:40d607be2e87 | 45 | //用于将元素添加到vector对象末尾 |
Dennis_Yu | 10:40d607be2e87 | 46 | //这里是将一个dirent类型的结构体对象中的d_name(文件名)添加到filenames的末尾 |
zhangyx | 4:ae6f380a5b41 | 47 | } |
Dennis_Yu | 10:40d607be2e87 | 48 | closedir(dp); |
zhangyx | 4:ae6f380a5b41 | 49 | } |
zhangyx | 4:ae6f380a5b41 | 50 | |
Dennis_Yu | 10:40d607be2e87 | 51 | void read_file_names(char *dir, vector<string> & buff_str) |
zhangyx | 4:ae6f380a5b41 | 52 | { |
Dennis_Yu | 10:40d607be2e87 | 53 | DIR *dp; |
Dennis_Yu | 10:40d607be2e87 | 54 | struct dirent *dirp; |
Dennis_Yu | 10:40d607be2e87 | 55 | dp = opendir(dir); |
Dennis_Yu | 10:40d607be2e87 | 56 | //read all directory and file names in current directory into filename vector |
Dennis_Yu | 10:40d607be2e87 | 57 | while((dirp = readdir(dp)) != NULL) { |
Dennis_Yu | 10:40d607be2e87 | 58 | buff_str.push_back(string(dirp->d_name)); |
Dennis_Yu | 10:40d607be2e87 | 59 | } |
Dennis_Yu | 10:40d607be2e87 | 60 | closedir(dp); |
Dennis_Yu | 10:40d607be2e87 | 61 | } |
Dennis_Yu | 10:40d607be2e87 | 62 | |
Dennis_Yu | 10:40d607be2e87 | 63 | |
Dennis_Yu | 10:40d607be2e87 | 64 | void testFun1() |
Dennis_Yu | 10:40d607be2e87 | 65 | { |
Dennis_Yu | 10:40d607be2e87 | 66 | ser2usb.printf("hello world\r\n"); |
Dennis_Yu | 10:40d607be2e87 | 67 | mkdir("/sd/mydir", 0777); |
Dennis_Yu | 8:edb685e9d93e | 68 | while(1) |
Dennis_Yu | 8:edb685e9d93e | 69 | { |
Dennis_Yu | 10:40d607be2e87 | 70 | ser2usb.printf("type in directory:\r\n"); |
Dennis_Yu | 10:40d607be2e87 | 71 | ser2usb.scanf("%s", mydir); |
Dennis_Yu | 10:40d607be2e87 | 72 | ser2usb.printf("Opening %s\n", mydir); |
Dennis_Yu | 10:40d607be2e87 | 73 | FILE * fp = fopen(mydir, "w"); |
Dennis_Yu | 10:40d607be2e87 | 74 | if (fp == NULL) |
Dennis_Yu | 10:40d607be2e87 | 75 | { |
Dennis_Yu | 10:40d607be2e87 | 76 | ser2usb.printf("Could not open file for write\r\n"); |
Dennis_Yu | 10:40d607be2e87 | 77 | } |
Dennis_Yu | 8:edb685e9d93e | 78 | else |
Dennis_Yu | 8:edb685e9d93e | 79 | { |
Dennis_Yu | 10:40d607be2e87 | 80 | ser2usb.printf("Open successfully\r\n"); |
Dennis_Yu | 10:40d607be2e87 | 81 | fprintf(fp, "hello SD\r\n"); |
Dennis_Yu | 10:40d607be2e87 | 82 | ser2usb.printf("Done, Closing\r\n"); |
Dennis_Yu | 10:40d607be2e87 | 83 | fclose(fp); |
Dennis_Yu | 10:40d607be2e87 | 84 | |
Dennis_Yu | 10:40d607be2e87 | 85 | //ser2usb.printf("goodbye\r\n"); |
Dennis_Yu | 10:40d607be2e87 | 86 | //return 0; |
zhangyx | 4:ae6f380a5b41 | 87 | } |
zhangyx | 4:ae6f380a5b41 | 88 | } |
Dennis_Yu | 10:40d607be2e87 | 89 | } |
zhangyx | 2:a50b794b8ede | 90 | |
Dennis_Yu | 8:edb685e9d93e | 91 | int main () |
zhangyx | 4:ae6f380a5b41 | 92 | { |
Dennis_Yu | 10:40d607be2e87 | 93 | //read_file_names("/sd"); |
Dennis_Yu | 10:40d607be2e87 | 94 | read_file_names("/sd", filenames); |
Dennis_Yu | 10:40d607be2e87 | 95 | // print filename strings from vector using an iterator |
Dennis_Yu | 10:40d607be2e87 | 96 | for(vector<string>::iterator it=filenames.begin(); it < filenames.end(); it++) |
Dennis_Yu | 10:40d607be2e87 | 97 | /****************************** |
Dennis_Yu | 10:40d607be2e87 | 98 | 这里iterator是vector类中的迭代器对象 |
Dennis_Yu | 10:40d607be2e87 | 99 | 循环里从vector的第一个元素地址开始 |
Dennis_Yu | 10:40d607be2e87 | 100 | 迭代到最后一个 |
Dennis_Yu | 10:40d607be2e87 | 101 | 迭代器的其他用法参看 |
Dennis_Yu | 10:40d607be2e87 | 102 | https://blog.csdn.net/yyangzhenjie/article/details/74518905 |
Dennis_Yu | 10:40d607be2e87 | 103 | ******************************/ |
Dennis_Yu | 10:40d607be2e87 | 104 | { |
Dennis_Yu | 10:40d607be2e87 | 105 | ser2usb.printf("%s\n\r",(*it).c_str()); |
Dennis_Yu | 10:40d607be2e87 | 106 | /*************************** |
Dennis_Yu | 10:40d607be2e87 | 107 | c_str是string对象的一个方法 |
Dennis_Yu | 10:40d607be2e87 | 108 | 返回一个与string对象内容相同的字符指针 |
Dennis_Yu | 10:40d607be2e87 | 109 | 设计之初是为了和c语言兼容, 因为C语言没有字符串对象 |
Dennis_Yu | 10:40d607be2e87 | 110 | 详细内容参看 |
Dennis_Yu | 10:40d607be2e87 | 111 | https://zhidao.baidu.com/question/104592558.html |
Dennis_Yu | 10:40d607be2e87 | 112 | ****************************/ |
Dennis_Yu | 10:40d607be2e87 | 113 | } |
Dennis_Yu | 10:40d607be2e87 | 114 | |
zhangyx | 0:1170747a672f | 115 | } |