Program for leaving logs of running IM920.
Dependencies: IM920 SDFileSystem mbed
main.cpp
- Committer:
- aaaaaYukiaaaaa
- Date:
- 2017-05-30
- Revision:
- 0:89c1b4e9bfec
File content as of revision 0:89c1b4e9bfec:
/*** 受信したデータをSDに保存して確認するプログラム */
#include "mbed.h"
#include "IM920.h"
#include "SDFileSystem.h"
// Pin used by SD card
SDFileSystem sd(p5, p6, p7, p8, "sd");
// Pin used by IM920 & UART
Serial pc(USBTX, USBRX);
IM920 im920(p28, p27, p29, p30);
//Digital I/O Pin
DigitalOut myled1(LED1);
DigitalOut myled2(LED2);
AnalogIn inpt(p20);
//Prottype define
void SD(int num, double btry);
void callback(void);
//Define maclo
char BUF[65];
int main() {
float btry_lg = 0;
int nmbr_lg = 0;
FILE *fp_csv = fopen("/sd/mydir/sdtest.csv", "w");
if(fp_csv == NULL) {
error("Could not open file for write\n");
}
fprintf(fp_csv, "baterry,number\n");
fclose(fp_csv);
// FILE *fp_txt = fopen("/sd/mydir/sdtest.txt", "a");
// if(fp_txt == NULL) {
// error("Could not open file for write\n");
// }
// fclose(fp_txt);
while(1){
// test the voltage on the initialized analog pin
// and if greater than 0.3 * VCC set the digital pin
// to a logic 1 otherwise a logic 0
btry_lg = inpt.read()*3.3;
//if(ain > 0.3f) {
//} else {
//}
// print the percentage and 16 bit normalized values
//printf("percentage: %3.3f%%\n", ain.read()*100.0f);
//printf("normalized: 0x%04X \n", ain.read_u16());
//wait(0.2f);
nmbr_lg++;
SD(nmbr_lg, btry_lg);
//wait(0.1);
}
}
void SD(int num, double btry){
myled1 = 1;
//printf("Hello World!\n");
mkdir("/sd/mydir", 0777);
FILE *fp_csv = fopen("/sd/mydir/sdtest.csv", "a");
if(fp_csv == NULL) {
error("Could not open file for write\n");
}
fprintf(fp_csv, "%d,%f\n",num, btry);
fclose(fp_csv);
/*** txtファイルバージョン ***/
// FILE *fp_txt = fopen("/sd/mydir/sdtest.txt", "a");
// if(fp_txt == NULL) {
// error("Could not open file for write\n");
// }
// fprintf(fp_txt, "Hello fun SD Card World!\n");
// fprintf(fp_txt, "Hello fun SD Card World!\n");
// fprintf(fp_txt, "%f,%f\n", btry, (float)num);
//
// fclose(fp_txt);
printf("Goodbye World!\n");
myled1 = 0;
}
void callback(void){
int i;
char buf[65];
i = im920.recv(buf, 64);
buf[i] = 0;
printf("recv: '%s' (%d)\r\n", buf, i);
}
void IM920_read(void){
int i = 0;
//pc.baud(115200);
pc.band(19200);
pc.printf("*** IM920\r\n");
im920.init();
im920.attach(callback);
myled2 = 1;
im920.poll();
if (pc.readable()) {
char c = pc.getc();
if (c == '\r') {
BUF[i] = 0;
printf("send: %s\r\n", BUF);
im920.send(BUF, i);
}
else{
for (i = 0; i < 64; i++) {
BUF[i] = c;
}
}
}