Program for leaving logs of running IM920.

Dependencies:   IM920 SDFileSystem mbed

Committer:
aaaaaYukiaaaaa
Date:
Tue May 30 05:05:46 2017 +0000
Revision:
0:89c1b4e9bfec
Program for leaving logs about running IM920.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aaaaaYukiaaaaa 0:89c1b4e9bfec 1 /*** 受信したデータをSDに保存して確認するプログラム */
aaaaaYukiaaaaa 0:89c1b4e9bfec 2
aaaaaYukiaaaaa 0:89c1b4e9bfec 3 #include "mbed.h"
aaaaaYukiaaaaa 0:89c1b4e9bfec 4 #include "IM920.h"
aaaaaYukiaaaaa 0:89c1b4e9bfec 5 #include "SDFileSystem.h"
aaaaaYukiaaaaa 0:89c1b4e9bfec 6
aaaaaYukiaaaaa 0:89c1b4e9bfec 7 // Pin used by SD card
aaaaaYukiaaaaa 0:89c1b4e9bfec 8 SDFileSystem sd(p5, p6, p7, p8, "sd");
aaaaaYukiaaaaa 0:89c1b4e9bfec 9
aaaaaYukiaaaaa 0:89c1b4e9bfec 10 // Pin used by IM920 & UART
aaaaaYukiaaaaa 0:89c1b4e9bfec 11 Serial pc(USBTX, USBRX);
aaaaaYukiaaaaa 0:89c1b4e9bfec 12 IM920 im920(p28, p27, p29, p30);
aaaaaYukiaaaaa 0:89c1b4e9bfec 13
aaaaaYukiaaaaa 0:89c1b4e9bfec 14 //Digital I/O Pin
aaaaaYukiaaaaa 0:89c1b4e9bfec 15 DigitalOut myled1(LED1);
aaaaaYukiaaaaa 0:89c1b4e9bfec 16 DigitalOut myled2(LED2);
aaaaaYukiaaaaa 0:89c1b4e9bfec 17 AnalogIn inpt(p20);
aaaaaYukiaaaaa 0:89c1b4e9bfec 18
aaaaaYukiaaaaa 0:89c1b4e9bfec 19 //Prottype define
aaaaaYukiaaaaa 0:89c1b4e9bfec 20 void SD(int num, double btry);
aaaaaYukiaaaaa 0:89c1b4e9bfec 21 void callback(void);
aaaaaYukiaaaaa 0:89c1b4e9bfec 22
aaaaaYukiaaaaa 0:89c1b4e9bfec 23 //Define maclo
aaaaaYukiaaaaa 0:89c1b4e9bfec 24 char BUF[65];
aaaaaYukiaaaaa 0:89c1b4e9bfec 25
aaaaaYukiaaaaa 0:89c1b4e9bfec 26 int main() {
aaaaaYukiaaaaa 0:89c1b4e9bfec 27 float btry_lg = 0;
aaaaaYukiaaaaa 0:89c1b4e9bfec 28 int nmbr_lg = 0;
aaaaaYukiaaaaa 0:89c1b4e9bfec 29
aaaaaYukiaaaaa 0:89c1b4e9bfec 30 FILE *fp_csv = fopen("/sd/mydir/sdtest.csv", "w");
aaaaaYukiaaaaa 0:89c1b4e9bfec 31 if(fp_csv == NULL) {
aaaaaYukiaaaaa 0:89c1b4e9bfec 32 error("Could not open file for write\n");
aaaaaYukiaaaaa 0:89c1b4e9bfec 33 }
aaaaaYukiaaaaa 0:89c1b4e9bfec 34 fprintf(fp_csv, "baterry,number\n");
aaaaaYukiaaaaa 0:89c1b4e9bfec 35 fclose(fp_csv);
aaaaaYukiaaaaa 0:89c1b4e9bfec 36
aaaaaYukiaaaaa 0:89c1b4e9bfec 37
aaaaaYukiaaaaa 0:89c1b4e9bfec 38 // FILE *fp_txt = fopen("/sd/mydir/sdtest.txt", "a");
aaaaaYukiaaaaa 0:89c1b4e9bfec 39 // if(fp_txt == NULL) {
aaaaaYukiaaaaa 0:89c1b4e9bfec 40 // error("Could not open file for write\n");
aaaaaYukiaaaaa 0:89c1b4e9bfec 41 // }
aaaaaYukiaaaaa 0:89c1b4e9bfec 42 // fclose(fp_txt);
aaaaaYukiaaaaa 0:89c1b4e9bfec 43
aaaaaYukiaaaaa 0:89c1b4e9bfec 44 while(1){
aaaaaYukiaaaaa 0:89c1b4e9bfec 45 // test the voltage on the initialized analog pin
aaaaaYukiaaaaa 0:89c1b4e9bfec 46 // and if greater than 0.3 * VCC set the digital pin
aaaaaYukiaaaaa 0:89c1b4e9bfec 47 // to a logic 1 otherwise a logic 0
aaaaaYukiaaaaa 0:89c1b4e9bfec 48 btry_lg = inpt.read()*3.3;
aaaaaYukiaaaaa 0:89c1b4e9bfec 49
aaaaaYukiaaaaa 0:89c1b4e9bfec 50 //if(ain > 0.3f) {
aaaaaYukiaaaaa 0:89c1b4e9bfec 51
aaaaaYukiaaaaa 0:89c1b4e9bfec 52 //} else {
aaaaaYukiaaaaa 0:89c1b4e9bfec 53
aaaaaYukiaaaaa 0:89c1b4e9bfec 54 //}
aaaaaYukiaaaaa 0:89c1b4e9bfec 55
aaaaaYukiaaaaa 0:89c1b4e9bfec 56 // print the percentage and 16 bit normalized values
aaaaaYukiaaaaa 0:89c1b4e9bfec 57 //printf("percentage: %3.3f%%\n", ain.read()*100.0f);
aaaaaYukiaaaaa 0:89c1b4e9bfec 58 //printf("normalized: 0x%04X \n", ain.read_u16());
aaaaaYukiaaaaa 0:89c1b4e9bfec 59 //wait(0.2f);
aaaaaYukiaaaaa 0:89c1b4e9bfec 60
aaaaaYukiaaaaa 0:89c1b4e9bfec 61
aaaaaYukiaaaaa 0:89c1b4e9bfec 62
aaaaaYukiaaaaa 0:89c1b4e9bfec 63 nmbr_lg++;
aaaaaYukiaaaaa 0:89c1b4e9bfec 64 SD(nmbr_lg, btry_lg);
aaaaaYukiaaaaa 0:89c1b4e9bfec 65
aaaaaYukiaaaaa 0:89c1b4e9bfec 66 //wait(0.1);
aaaaaYukiaaaaa 0:89c1b4e9bfec 67 }
aaaaaYukiaaaaa 0:89c1b4e9bfec 68 }
aaaaaYukiaaaaa 0:89c1b4e9bfec 69
aaaaaYukiaaaaa 0:89c1b4e9bfec 70 void SD(int num, double btry){
aaaaaYukiaaaaa 0:89c1b4e9bfec 71 myled1 = 1;
aaaaaYukiaaaaa 0:89c1b4e9bfec 72
aaaaaYukiaaaaa 0:89c1b4e9bfec 73 //printf("Hello World!\n");
aaaaaYukiaaaaa 0:89c1b4e9bfec 74
aaaaaYukiaaaaa 0:89c1b4e9bfec 75 mkdir("/sd/mydir", 0777);
aaaaaYukiaaaaa 0:89c1b4e9bfec 76
aaaaaYukiaaaaa 0:89c1b4e9bfec 77 FILE *fp_csv = fopen("/sd/mydir/sdtest.csv", "a");
aaaaaYukiaaaaa 0:89c1b4e9bfec 78 if(fp_csv == NULL) {
aaaaaYukiaaaaa 0:89c1b4e9bfec 79 error("Could not open file for write\n");
aaaaaYukiaaaaa 0:89c1b4e9bfec 80 }
aaaaaYukiaaaaa 0:89c1b4e9bfec 81
aaaaaYukiaaaaa 0:89c1b4e9bfec 82 fprintf(fp_csv, "%d,%f\n",num, btry);
aaaaaYukiaaaaa 0:89c1b4e9bfec 83
aaaaaYukiaaaaa 0:89c1b4e9bfec 84 fclose(fp_csv);
aaaaaYukiaaaaa 0:89c1b4e9bfec 85
aaaaaYukiaaaaa 0:89c1b4e9bfec 86 /*** txtファイルバージョン ***/
aaaaaYukiaaaaa 0:89c1b4e9bfec 87
aaaaaYukiaaaaa 0:89c1b4e9bfec 88 // FILE *fp_txt = fopen("/sd/mydir/sdtest.txt", "a");
aaaaaYukiaaaaa 0:89c1b4e9bfec 89 // if(fp_txt == NULL) {
aaaaaYukiaaaaa 0:89c1b4e9bfec 90 // error("Could not open file for write\n");
aaaaaYukiaaaaa 0:89c1b4e9bfec 91 // }
aaaaaYukiaaaaa 0:89c1b4e9bfec 92 // fprintf(fp_txt, "Hello fun SD Card World!\n");
aaaaaYukiaaaaa 0:89c1b4e9bfec 93 // fprintf(fp_txt, "Hello fun SD Card World!\n");
aaaaaYukiaaaaa 0:89c1b4e9bfec 94 // fprintf(fp_txt, "%f,%f\n", btry, (float)num);
aaaaaYukiaaaaa 0:89c1b4e9bfec 95 //
aaaaaYukiaaaaa 0:89c1b4e9bfec 96 // fclose(fp_txt);
aaaaaYukiaaaaa 0:89c1b4e9bfec 97
aaaaaYukiaaaaa 0:89c1b4e9bfec 98
aaaaaYukiaaaaa 0:89c1b4e9bfec 99 printf("Goodbye World!\n");
aaaaaYukiaaaaa 0:89c1b4e9bfec 100 myled1 = 0;
aaaaaYukiaaaaa 0:89c1b4e9bfec 101 }
aaaaaYukiaaaaa 0:89c1b4e9bfec 102
aaaaaYukiaaaaa 0:89c1b4e9bfec 103 void callback(void){
aaaaaYukiaaaaa 0:89c1b4e9bfec 104 int i;
aaaaaYukiaaaaa 0:89c1b4e9bfec 105 char buf[65];
aaaaaYukiaaaaa 0:89c1b4e9bfec 106
aaaaaYukiaaaaa 0:89c1b4e9bfec 107 i = im920.recv(buf, 64);
aaaaaYukiaaaaa 0:89c1b4e9bfec 108 buf[i] = 0;
aaaaaYukiaaaaa 0:89c1b4e9bfec 109 printf("recv: '%s' (%d)\r\n", buf, i);
aaaaaYukiaaaaa 0:89c1b4e9bfec 110 }
aaaaaYukiaaaaa 0:89c1b4e9bfec 111
aaaaaYukiaaaaa 0:89c1b4e9bfec 112 void IM920_read(void){
aaaaaYukiaaaaa 0:89c1b4e9bfec 113 int i = 0;
aaaaaYukiaaaaa 0:89c1b4e9bfec 114
aaaaaYukiaaaaa 0:89c1b4e9bfec 115 //pc.baud(115200);
aaaaaYukiaaaaa 0:89c1b4e9bfec 116 pc.band(19200);
aaaaaYukiaaaaa 0:89c1b4e9bfec 117 pc.printf("*** IM920\r\n");
aaaaaYukiaaaaa 0:89c1b4e9bfec 118 im920.init();
aaaaaYukiaaaaa 0:89c1b4e9bfec 119 im920.attach(callback);
aaaaaYukiaaaaa 0:89c1b4e9bfec 120 myled2 = 1;
aaaaaYukiaaaaa 0:89c1b4e9bfec 121
aaaaaYukiaaaaa 0:89c1b4e9bfec 122 im920.poll();
aaaaaYukiaaaaa 0:89c1b4e9bfec 123 if (pc.readable()) {
aaaaaYukiaaaaa 0:89c1b4e9bfec 124 char c = pc.getc();
aaaaaYukiaaaaa 0:89c1b4e9bfec 125
aaaaaYukiaaaaa 0:89c1b4e9bfec 126 if (c == '\r') {
aaaaaYukiaaaaa 0:89c1b4e9bfec 127 BUF[i] = 0;
aaaaaYukiaaaaa 0:89c1b4e9bfec 128 printf("send: %s\r\n", BUF);
aaaaaYukiaaaaa 0:89c1b4e9bfec 129 im920.send(BUF, i);
aaaaaYukiaaaaa 0:89c1b4e9bfec 130 }
aaaaaYukiaaaaa 0:89c1b4e9bfec 131 else{
aaaaaYukiaaaaa 0:89c1b4e9bfec 132 for (i = 0; i < 64; i++) {
aaaaaYukiaaaaa 0:89c1b4e9bfec 133 BUF[i] = c;
aaaaaYukiaaaaa 0:89c1b4e9bfec 134 }
aaaaaYukiaaaaa 0:89c1b4e9bfec 135 }
aaaaaYukiaaaaa 0:89c1b4e9bfec 136 }