test

Dependencies:   SDFileSystem TextLCD mbed

Fork of A_BJ_FRDMK64_SDCard_LCD by Bhalchandra Jadhav

Committer:
bjadhav76
Date:
Thu Jan 11 07:12:32 2018 +0000
Revision:
0:5a5a9b0a96db
test

Who changed what in which revision?

UserRevisionLine numberNew 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 }