Program for leaving logs of running IM920.
Dependencies: IM920 SDFileSystem mbed
main.cpp@0:89c1b4e9bfec, 2017-05-30 (annotated)
- 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?
User | Revision | Line number | New 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 | } |