test
Dependencies: SDFileSystem TextLCD mbed
Fork of A_BJ_FRDMK64_SDCard_LCD by
main.cpp@0:5a5a9b0a96db, 2018-01-11 (annotated)
- Committer:
- bjadhav76
- Date:
- Thu Jan 11 07:12:32 2018 +0000
- Revision:
- 0:5a5a9b0a96db
test
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bjadhav76 | 0:5a5a9b0a96db | 1 | #include "mbed.h" |
bjadhav76 | 0:5a5a9b0a96db | 2 | #include "SDFileSystem.h" |
bjadhav76 | 0:5a5a9b0a96db | 3 | #include "TextLCD.h" |
bjadhav76 | 0:5a5a9b0a96db | 4 | |
bjadhav76 | 0:5a5a9b0a96db | 5 | SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS |
bjadhav76 | 0:5a5a9b0a96db | 6 | Serial pc(PTC17,PTC16); |
bjadhav76 | 0:5a5a9b0a96db | 7 | FILE *fp; |
bjadhav76 | 0:5a5a9b0a96db | 8 | |
bjadhav76 | 0:5a5a9b0a96db | 9 | //New Declarations |
bjadhav76 | 0:5a5a9b0a96db | 10 | DigitalOut myled(LED1); |
bjadhav76 | 0:5a5a9b0a96db | 11 | InterruptIn sw2(SW2); |
bjadhav76 | 0:5a5a9b0a96db | 12 | |
bjadhav76 | 0:5a5a9b0a96db | 13 | typedef struct temp{ |
bjadhav76 | 0:5a5a9b0a96db | 14 | unsigned int DateTime; |
bjadhav76 | 0:5a5a9b0a96db | 15 | float temp1; |
bjadhav76 | 0:5a5a9b0a96db | 16 | float temp2; |
bjadhav76 | 0:5a5a9b0a96db | 17 | float temp3; |
bjadhav76 | 0:5a5a9b0a96db | 18 | float temp4; |
bjadhav76 | 0:5a5a9b0a96db | 19 | char In0; |
bjadhav76 | 0:5a5a9b0a96db | 20 | char In1; |
bjadhav76 | 0:5a5a9b0a96db | 21 | char In2; |
bjadhav76 | 0:5a5a9b0a96db | 22 | char In3; |
bjadhav76 | 0:5a5a9b0a96db | 23 | char Out0; |
bjadhav76 | 0:5a5a9b0a96db | 24 | char Out1; |
bjadhav76 | 0:5a5a9b0a96db | 25 | char Out2; |
bjadhav76 | 0:5a5a9b0a96db | 26 | char Out3; |
bjadhav76 | 0:5a5a9b0a96db | 27 | }TEMP_T; |
bjadhav76 | 0:5a5a9b0a96db | 28 | #define TARGET_K64F 1 |
bjadhav76 | 0:5a5a9b0a96db | 29 | |
bjadhav76 | 0:5a5a9b0a96db | 30 | #ifdef TARGET_K64F |
bjadhav76 | 0:5a5a9b0a96db | 31 | TextLCD lcd(PTC12, PTC4, PTB23, PTA2, PTC2, PTC3); |
bjadhav76 | 0:5a5a9b0a96db | 32 | //TextLCD lcd( PTB9, PTA1, PTB23, PTA2, PTC2, PTC3); // LCD Shield for Arduino (DFR00009) |
bjadhav76 | 0:5a5a9b0a96db | 33 | AnalogIn button(PTB2); // board button |
bjadhav76 | 0:5a5a9b0a96db | 34 | //PwmOut backlight(PTD0); |
bjadhav76 | 0:5a5a9b0a96db | 35 | DigitalOut backlight(PTD0); |
bjadhav76 | 0:5a5a9b0a96db | 36 | #endif |
bjadhav76 | 0:5a5a9b0a96db | 37 | |
bjadhav76 | 0:5a5a9b0a96db | 38 | void sw2_release(void) |
bjadhav76 | 0:5a5a9b0a96db | 39 | { |
bjadhav76 | 0:5a5a9b0a96db | 40 | myled = !myled; |
bjadhav76 | 0:5a5a9b0a96db | 41 | lcd.cls(); |
bjadhav76 | 0:5a5a9b0a96db | 42 | lcd.printf("button SW2 released."); |
bjadhav76 | 0:5a5a9b0a96db | 43 | } |
bjadhav76 | 0:5a5a9b0a96db | 44 | |
bjadhav76 | 0:5a5a9b0a96db | 45 | |
bjadhav76 | 0:5a5a9b0a96db | 46 | int file_copy(const char *src, const char *dst) |
bjadhav76 | 0:5a5a9b0a96db | 47 | { |
bjadhav76 | 0:5a5a9b0a96db | 48 | int retval = 0; |
bjadhav76 | 0:5a5a9b0a96db | 49 | int ch; |
bjadhav76 | 0:5a5a9b0a96db | 50 | int count = 0; |
bjadhav76 | 0:5a5a9b0a96db | 51 | |
bjadhav76 | 0:5a5a9b0a96db | 52 | |
bjadhav76 | 0:5a5a9b0a96db | 53 | FILE *fpsrc = fopen(src, "r"); // src file |
bjadhav76 | 0:5a5a9b0a96db | 54 | FILE *fpdst = fopen(dst, "w"); // dest file |
bjadhav76 | 0:5a5a9b0a96db | 55 | |
bjadhav76 | 0:5a5a9b0a96db | 56 | while (1) { // Copy src to dest |
bjadhav76 | 0:5a5a9b0a96db | 57 | ch = fgetc(fpsrc); // until src EOF read. |
bjadhav76 | 0:5a5a9b0a96db | 58 | if (ch == EOF) break; |
bjadhav76 | 0:5a5a9b0a96db | 59 | fputc(ch, fpdst); |
bjadhav76 | 0:5a5a9b0a96db | 60 | } |
bjadhav76 | 0:5a5a9b0a96db | 61 | fclose(fpsrc); |
bjadhav76 | 0:5a5a9b0a96db | 62 | fclose(fpdst); |
bjadhav76 | 0:5a5a9b0a96db | 63 | |
bjadhav76 | 0:5a5a9b0a96db | 64 | fpdst = fopen(dst, "r"); // Reopen dest to insure |
bjadhav76 | 0:5a5a9b0a96db | 65 | if (fpdst == NULL) { // that it was created. |
bjadhav76 | 0:5a5a9b0a96db | 66 | retval = -1; // Return error. |
bjadhav76 | 0:5a5a9b0a96db | 67 | } else { |
bjadhav76 | 0:5a5a9b0a96db | 68 | fclose(fpdst); |
bjadhav76 | 0:5a5a9b0a96db | 69 | retval = 0; // Return success. |
bjadhav76 | 0:5a5a9b0a96db | 70 | } |
bjadhav76 | 0:5a5a9b0a96db | 71 | return retval; |
bjadhav76 | 0:5a5a9b0a96db | 72 | } |
bjadhav76 | 0:5a5a9b0a96db | 73 | |
bjadhav76 | 0:5a5a9b0a96db | 74 | uint32_t do_list(const char *fsrc) |
bjadhav76 | 0:5a5a9b0a96db | 75 | { |
bjadhav76 | 0:5a5a9b0a96db | 76 | DIR *d = opendir(fsrc); |
bjadhav76 | 0:5a5a9b0a96db | 77 | struct dirent *p; |
bjadhav76 | 0:5a5a9b0a96db | 78 | uint32_t counter = 0; |
bjadhav76 | 0:5a5a9b0a96db | 79 | |
bjadhav76 | 0:5a5a9b0a96db | 80 | while ((p = readdir(d)) != NULL) { |
bjadhav76 | 0:5a5a9b0a96db | 81 | counter++; |
bjadhav76 | 0:5a5a9b0a96db | 82 | lcd.cls(); |
bjadhav76 | 0:5a5a9b0a96db | 83 | lcd.printf("%s\r\n", p->d_name); |
bjadhav76 | 0:5a5a9b0a96db | 84 | wait(2); |
bjadhav76 | 0:5a5a9b0a96db | 85 | } |
bjadhav76 | 0:5a5a9b0a96db | 86 | closedir(d); |
bjadhav76 | 0:5a5a9b0a96db | 87 | return counter; |
bjadhav76 | 0:5a5a9b0a96db | 88 | } |
bjadhav76 | 0:5a5a9b0a96db | 89 | |
bjadhav76 | 0:5a5a9b0a96db | 90 | // bool is_folder(const char *fdir) |
bjadhav76 | 0:5a5a9b0a96db | 91 | // { |
bjadhav76 | 0:5a5a9b0a96db | 92 | // DIR *dir = opendir(fdir); |
bjadhav76 | 0:5a5a9b0a96db | 93 | // if (dir) { |
bjadhav76 | 0:5a5a9b0a96db | 94 | // closedir(dir); |
bjadhav76 | 0:5a5a9b0a96db | 95 | // } |
bjadhav76 | 0:5a5a9b0a96db | 96 | // return (dir != NULL); |
bjadhav76 | 0:5a5a9b0a96db | 97 | |
bjadhav76 | 0:5a5a9b0a96db | 98 | // } |
bjadhav76 | 0:5a5a9b0a96db | 99 | |
bjadhav76 | 0:5a5a9b0a96db | 100 | // bool is_file(const char *ffile) |
bjadhav76 | 0:5a5a9b0a96db | 101 | // { |
bjadhav76 | 0:5a5a9b0a96db | 102 | // FILE *fp = fopen(ffile, "r"); |
bjadhav76 | 0:5a5a9b0a96db | 103 | // if (fp) { |
bjadhav76 | 0:5a5a9b0a96db | 104 | // fclose(fp); |
bjadhav76 | 0:5a5a9b0a96db | 105 | // } |
bjadhav76 | 0:5a5a9b0a96db | 106 | // return (fp != NULL); |
bjadhav76 | 0:5a5a9b0a96db | 107 | // } |
bjadhav76 | 0:5a5a9b0a96db | 108 | |
bjadhav76 | 0:5a5a9b0a96db | 109 | void do_remove(const char *fsrc) |
bjadhav76 | 0:5a5a9b0a96db | 110 | { |
bjadhav76 | 0:5a5a9b0a96db | 111 | DIR *d = opendir(fsrc); |
bjadhav76 | 0:5a5a9b0a96db | 112 | // uint32_t ctr = 0; |
bjadhav76 | 0:5a5a9b0a96db | 113 | struct dirent *p = NULL; |
bjadhav76 | 0:5a5a9b0a96db | 114 | char path[30] = {0}; |
bjadhav76 | 0:5a5a9b0a96db | 115 | |
bjadhav76 | 0:5a5a9b0a96db | 116 | |
bjadhav76 | 0:5a5a9b0a96db | 117 | if( d == NULL){ |
bjadhav76 | 0:5a5a9b0a96db | 118 | return; |
bjadhav76 | 0:5a5a9b0a96db | 119 | } |
bjadhav76 | 0:5a5a9b0a96db | 120 | while((p = readdir(d)) != NULL) { |
bjadhav76 | 0:5a5a9b0a96db | 121 | strcpy(path, fsrc); |
bjadhav76 | 0:5a5a9b0a96db | 122 | strcat(path, "/"); |
bjadhav76 | 0:5a5a9b0a96db | 123 | strcat(path, p->d_name); |
bjadhav76 | 0:5a5a9b0a96db | 124 | remove(path); |
bjadhav76 | 0:5a5a9b0a96db | 125 | } |
bjadhav76 | 0:5a5a9b0a96db | 126 | closedir(d); |
bjadhav76 | 0:5a5a9b0a96db | 127 | remove(fsrc); |
bjadhav76 | 0:5a5a9b0a96db | 128 | } |
bjadhav76 | 0:5a5a9b0a96db | 129 | |
bjadhav76 | 0:5a5a9b0a96db | 130 | #define MAX_LOG_LINES 1000 |
bjadhav76 | 0:5a5a9b0a96db | 131 | TEMP_T tmp_m; |
bjadhav76 | 0:5a5a9b0a96db | 132 | int curr_log_lines = 0; |
bjadhav76 | 0:5a5a9b0a96db | 133 | |
bjadhav76 | 0:5a5a9b0a96db | 134 | |
bjadhav76 | 0:5a5a9b0a96db | 135 | int Add_Log_to_file(TEMP_T *tmp) |
bjadhav76 | 0:5a5a9b0a96db | 136 | { |
bjadhav76 | 0:5a5a9b0a96db | 137 | |
bjadhav76 | 0:5a5a9b0a96db | 138 | fprintf(fp," %10u,%4.1f,%4.1f,%4.1f,%4.1f, %c, %c, %c, %c, %c, %c, %c, %c, \r\n",tmp->DateTime, \ |
bjadhav76 | 0:5a5a9b0a96db | 139 | tmp->temp1, \ |
bjadhav76 | 0:5a5a9b0a96db | 140 | tmp->temp2, \ |
bjadhav76 | 0:5a5a9b0a96db | 141 | tmp->temp3, \ |
bjadhav76 | 0:5a5a9b0a96db | 142 | tmp->temp4, \ |
bjadhav76 | 0:5a5a9b0a96db | 143 | tmp->In0,\ |
bjadhav76 | 0:5a5a9b0a96db | 144 | tmp->In1,\ |
bjadhav76 | 0:5a5a9b0a96db | 145 | tmp->In2,\ |
bjadhav76 | 0:5a5a9b0a96db | 146 | tmp->In3,\ |
bjadhav76 | 0:5a5a9b0a96db | 147 | tmp->Out0,\ |
bjadhav76 | 0:5a5a9b0a96db | 148 | tmp->Out1,\ |
bjadhav76 | 0:5a5a9b0a96db | 149 | tmp->Out2,\ |
bjadhav76 | 0:5a5a9b0a96db | 150 | tmp->Out3); |
bjadhav76 | 0:5a5a9b0a96db | 151 | if (curr_log_lines > MAX_LOG_LINES ){ |
bjadhav76 | 0:5a5a9b0a96db | 152 | fclose(fp); |
bjadhav76 | 0:5a5a9b0a96db | 153 | wait(0.1); |
bjadhav76 | 0:5a5a9b0a96db | 154 | fp = fopen("/sd/bmek/log.txt", "w"); |
bjadhav76 | 0:5a5a9b0a96db | 155 | if (fp == NULL) { |
bjadhav76 | 0:5a5a9b0a96db | 156 | pc.printf("\r\nUnable to write the file \r\n"); |
bjadhav76 | 0:5a5a9b0a96db | 157 | return -1; |
bjadhav76 | 0:5a5a9b0a96db | 158 | } else { |
bjadhav76 | 0:5a5a9b0a96db | 159 | fprintf(fp, "DateTime,Temp1,Temp2,Temp3,Temp4,In0,In1,In2,Out1,Out2,Out3,Out4,,\r\n"); |
bjadhav76 | 0:5a5a9b0a96db | 160 | } |
bjadhav76 | 0:5a5a9b0a96db | 161 | } |
bjadhav76 | 0:5a5a9b0a96db | 162 | |
bjadhav76 | 0:5a5a9b0a96db | 163 | return 0; |
bjadhav76 | 0:5a5a9b0a96db | 164 | } |
bjadhav76 | 0:5a5a9b0a96db | 165 | int main() |
bjadhav76 | 0:5a5a9b0a96db | 166 | { |
bjadhav76 | 0:5a5a9b0a96db | 167 | backlight = 1; // ON: 1, OFF: 0 |
bjadhav76 | 0:5a5a9b0a96db | 168 | sw2.rise(&sw2_release); |
bjadhav76 | 0:5a5a9b0a96db | 169 | lcd.cls(); |
bjadhav76 | 0:5a5a9b0a96db | 170 | lcd.printf("HEllo B-MeK"); |
bjadhav76 | 0:5a5a9b0a96db | 171 | wait(3.5); |
bjadhav76 | 0:5a5a9b0a96db | 172 | pc.printf("\r\nInitializing \r\n"); |
bjadhav76 | 0:5a5a9b0a96db | 173 | wait(2); |
bjadhav76 | 0:5a5a9b0a96db | 174 | |
bjadhav76 | 0:5a5a9b0a96db | 175 | |
bjadhav76 | 0:5a5a9b0a96db | 176 | if (do_list("/sd") == 0) { |
bjadhav76 | 0:5a5a9b0a96db | 177 | pc.printf("\r\nNo files/directories on the sd card.\r\n"); |
bjadhav76 | 0:5a5a9b0a96db | 178 | } |
bjadhav76 | 0:5a5a9b0a96db | 179 | |
bjadhav76 | 0:5a5a9b0a96db | 180 | pc.printf("\r\nCreating test folder. \r\n"); |
bjadhav76 | 0:5a5a9b0a96db | 181 | mkdir("/sd/bmek", 0777); |
bjadhav76 | 0:5a5a9b0a96db | 182 | |
bjadhav76 | 0:5a5a9b0a96db | 183 | |
bjadhav76 | 0:5a5a9b0a96db | 184 | fp = fopen("/sd/bmek/log.txt", "w"); |
bjadhav76 | 0:5a5a9b0a96db | 185 | if (fp == NULL) { |
bjadhav76 | 0:5a5a9b0a96db | 186 | pc.printf("\r\nUnable to write the file \r\n"); |
bjadhav76 | 0:5a5a9b0a96db | 187 | } else { |
bjadhav76 | 0:5a5a9b0a96db | 188 | fprintf(fp, "DateTime,Temp1,Temp2,Temp3,Temp4,In0,In1,In2,Out1,Out2,Out3,Out4,,\r\n"); |
bjadhav76 | 0:5a5a9b0a96db | 189 | Add_Log_to_file(&tmp_m); |
bjadhav76 | 0:5a5a9b0a96db | 190 | Add_Log_to_file(&tmp_m); |
bjadhav76 | 0:5a5a9b0a96db | 191 | wait(5); |
bjadhav76 | 0:5a5a9b0a96db | 192 | fclose(fp); |
bjadhav76 | 0:5a5a9b0a96db | 193 | return 1; |
bjadhav76 | 0:5a5a9b0a96db | 194 | } |
bjadhav76 | 0:5a5a9b0a96db | 195 | |
bjadhav76 | 0:5a5a9b0a96db | 196 | //Display analogue and digital values on LCD |
bjadhav76 | 0:5a5a9b0a96db | 197 | |
bjadhav76 | 0:5a5a9b0a96db | 198 | } |