Weather casting with Machine Learning (SVM and SRNN).
Dependencies: EthernetInterface GraphicHandler NTPClient SRNN SVM SensorModule mbed-rtos mbed
main_util.cpp@2:20ecfe6edd71, 2015-02-18 (annotated)
- Committer:
- yukari_hinata
- Date:
- Wed Feb 18 15:02:16 2015 +0000
- Revision:
- 2:20ecfe6edd71
- Child:
- 3:5add3759e08a
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
yukari_hinata | 2:20ecfe6edd71 | 1 | #include "main_util.hpp" |
yukari_hinata | 2:20ecfe6edd71 | 2 | |
yukari_hinata | 2:20ecfe6edd71 | 3 | void check_file_open(FILE* file_p, const char* file_name) |
yukari_hinata | 2:20ecfe6edd71 | 4 | { |
yukari_hinata | 2:20ecfe6edd71 | 5 | if ( file_p == NULL ) { |
yukari_hinata | 2:20ecfe6edd71 | 6 | fprintf( stderr, "Error : file %s open faild. \r\n", file_name ); |
yukari_hinata | 2:20ecfe6edd71 | 7 | exit(1); |
yukari_hinata | 2:20ecfe6edd71 | 8 | } |
yukari_hinata | 2:20ecfe6edd71 | 9 | } |
yukari_hinata | 2:20ecfe6edd71 | 10 | |
yukari_hinata | 2:20ecfe6edd71 | 11 | // データ系列ファイルの行数をLEN_DATA_SEQUENCEまで切り詰める |
yukari_hinata | 2:20ecfe6edd71 | 12 | void truncate_data_file(void) |
yukari_hinata | 2:20ecfe6edd71 | 13 | { |
yukari_hinata | 2:20ecfe6edd71 | 14 | FILE* dat_file_fp; |
yukari_hinata | 2:20ecfe6edd71 | 15 | const char tmp_file_name[] = "/local/TMP_DAT.CSV"; |
yukari_hinata | 2:20ecfe6edd71 | 16 | int line; |
yukari_hinata | 2:20ecfe6edd71 | 17 | char trunc_buf_str[BUF_SIZE]; |
yukari_hinata | 2:20ecfe6edd71 | 18 | // 最初に現在の行数を数える |
yukari_hinata | 2:20ecfe6edd71 | 19 | dat_file_fp = fopen( SEQUENCE_DATA_NAME, "r"); |
yukari_hinata | 2:20ecfe6edd71 | 20 | check_file_open( dat_file_fp, SEQUENCE_DATA_NAME); |
yukari_hinata | 2:20ecfe6edd71 | 21 | line = 0; |
yukari_hinata | 2:20ecfe6edd71 | 22 | while(fgets(trunc_buf_str, BUF_SIZE, dat_file_fp) != NULL) { |
yukari_hinata | 2:20ecfe6edd71 | 23 | line++; |
yukari_hinata | 2:20ecfe6edd71 | 24 | // printf("line %d : %s\r\n", line, trunc_buf_str); |
yukari_hinata | 2:20ecfe6edd71 | 25 | } |
yukari_hinata | 2:20ecfe6edd71 | 26 | // printf("current num of line : %d \r\n", line); |
yukari_hinata | 2:20ecfe6edd71 | 27 | fclose( dat_file_fp ); |
yukari_hinata | 2:20ecfe6edd71 | 28 | |
yukari_hinata | 2:20ecfe6edd71 | 29 | // 切り詰め開始 |
yukari_hinata | 2:20ecfe6edd71 | 30 | if ( line > LEN_DATA_SEQUENCE ) { |
yukari_hinata | 2:20ecfe6edd71 | 31 | FILE* tmp_fp; |
yukari_hinata | 2:20ecfe6edd71 | 32 | int diff_line = line - LEN_DATA_SEQUENCE; |
yukari_hinata | 2:20ecfe6edd71 | 33 | dat_file_fp = fopen(SEQUENCE_DATA_NAME, "r"); |
yukari_hinata | 2:20ecfe6edd71 | 34 | check_file_open( dat_file_fp, SEQUENCE_DATA_NAME ); |
yukari_hinata | 2:20ecfe6edd71 | 35 | line = 0; |
yukari_hinata | 2:20ecfe6edd71 | 36 | while(fgets(trunc_buf_str, BUF_SIZE, dat_file_fp) != NULL) { |
yukari_hinata | 2:20ecfe6edd71 | 37 | line++; |
yukari_hinata | 2:20ecfe6edd71 | 38 | if (line == diff_line) break; |
yukari_hinata | 2:20ecfe6edd71 | 39 | } |
yukari_hinata | 2:20ecfe6edd71 | 40 | // diff_line以降をテンポラリにコピー |
yukari_hinata | 2:20ecfe6edd71 | 41 | tmp_fp = fopen( tmp_file_name, "w"); |
yukari_hinata | 2:20ecfe6edd71 | 42 | check_file_open( tmp_fp, tmp_file_name ); |
yukari_hinata | 2:20ecfe6edd71 | 43 | fflush( tmp_fp ); |
yukari_hinata | 2:20ecfe6edd71 | 44 | fflush( dat_file_fp ); |
yukari_hinata | 2:20ecfe6edd71 | 45 | while( fgets( trunc_buf_str, BUF_SIZE, dat_file_fp) != NULL) { |
yukari_hinata | 2:20ecfe6edd71 | 46 | fputs( trunc_buf_str, tmp_fp); |
yukari_hinata | 2:20ecfe6edd71 | 47 | } |
yukari_hinata | 2:20ecfe6edd71 | 48 | //fclose( tmp_fp ); |
yukari_hinata | 2:20ecfe6edd71 | 49 | //fclose( dat_file_fp ); |
yukari_hinata | 2:20ecfe6edd71 | 50 | |
yukari_hinata | 2:20ecfe6edd71 | 51 | // 更新 |
yukari_hinata | 2:20ecfe6edd71 | 52 | tmp_fp = freopen( tmp_file_name, "r", tmp_fp); |
yukari_hinata | 2:20ecfe6edd71 | 53 | check_file_open( tmp_fp, tmp_file_name ); |
yukari_hinata | 2:20ecfe6edd71 | 54 | dat_file_fp = freopen(SEQUENCE_DATA_NAME, "w", dat_file_fp); |
yukari_hinata | 2:20ecfe6edd71 | 55 | check_file_open( dat_file_fp, SEQUENCE_DATA_NAME ); |
yukari_hinata | 2:20ecfe6edd71 | 56 | // 一時ファイルからコピー |
yukari_hinata | 2:20ecfe6edd71 | 57 | fflush( tmp_fp ); |
yukari_hinata | 2:20ecfe6edd71 | 58 | fflush( dat_file_fp ); |
yukari_hinata | 2:20ecfe6edd71 | 59 | while( fgets( trunc_buf_str, BUF_SIZE, tmp_fp) != NULL) { |
yukari_hinata | 2:20ecfe6edd71 | 60 | fputs( trunc_buf_str, dat_file_fp); |
yukari_hinata | 2:20ecfe6edd71 | 61 | } |
yukari_hinata | 2:20ecfe6edd71 | 62 | |
yukari_hinata | 2:20ecfe6edd71 | 63 | fclose( dat_file_fp ); |
yukari_hinata | 2:20ecfe6edd71 | 64 | fclose( tmp_fp ); |
yukari_hinata | 2:20ecfe6edd71 | 65 | |
yukari_hinata | 2:20ecfe6edd71 | 66 | // テンポラリの削除 |
yukari_hinata | 2:20ecfe6edd71 | 67 | remove( tmp_file_name ); |
yukari_hinata | 2:20ecfe6edd71 | 68 | } |
yukari_hinata | 2:20ecfe6edd71 | 69 | } |