17
17
/* Includes --------------------------------------------------------------------------------*/
18
18
#include <stdlib.h>
19
19
#include <conio.h>
20
+ #include <time.h>
20
21
21
22
#include "serial.h"
22
23
26
27
#include "ksfeeder.h"
27
28
28
29
/* Define ----------------------------------------------------------------------------------*/
30
+
31
+ #ifndef ONLINE_LOGOUT_RELATE_PATH
32
+ #define ONLINE_LOGOUT_RELATE_PATH "log/"
33
+ #endif
34
+
29
35
/* Macro -----------------------------------------------------------------------------------*/
30
36
/* Typedef ---------------------------------------------------------------------------------*/
31
37
/* Variables -------------------------------------------------------------------------------*/
38
+
39
+ static char * LOG [] = {"sn" ,"dt" ,"gx" ,"gy" ,"gz" ,"ax" ,"ay" ,"az" ,"mx" ,"my" ,"mz" };
40
+
32
41
/* Prototypes ------------------------------------------------------------------------------*/
33
42
43
+ static int datetimestring (char * datestring );
34
44
static void ksraw_update (ksraw_t * praw , kserial_packet_t * pk , int dt );
35
- static int ksfeed_serial (ksraw_t * raw , kscsv_t * csv , int updaterate );
45
+ static int ksfeed_serial (ksraw_t * raw , kscsv_t * csv , int updaterate , int save );
36
46
37
47
/* Functions -------------------------------------------------------------------------------*/
38
48
@@ -73,8 +83,22 @@ int run_online(char *comport, int updaterate, int save)
73
83
}
74
84
klogd (", id=0x%04X\n" , id );
75
85
86
+ if (save == KS_TRUE )
87
+ {
88
+ // create csv
89
+ char filename [256 ] = {0 };
90
+ char datestring [256 ] = {0 };
91
+ datetimestring (datestring );
92
+ sprintf (filename , "%sLOG_SERIAL_%s.csv" , ONLINE_LOGOUT_RELATE_PATH , datestring );
93
+ if (kscsv_create (& csv , filename , NULL , LOG , sizeof (LOG ) >> 2 ) != KS_OK )
94
+ {
95
+ klogd ("create csv failed !!!\n" );
96
+ return -1 ;
97
+ }
98
+ }
99
+
76
100
// run
77
- ksfeed_serial (& raw , & csv , updaterate );
101
+ ksfeed_serial (& raw , & csv , updaterate , save );
78
102
79
103
// close serial port and free portlist
80
104
serial_close (& s );
@@ -83,7 +107,24 @@ int run_online(char *comport, int updaterate, int save)
83
107
return 0 ;
84
108
}
85
109
86
- static char getKey (void )
110
+ static int datetimestring (char * datestring )
111
+ {
112
+ time_t t = time (NULL );
113
+ struct tm ts = * localtime (& t );
114
+ int lens ;
115
+ int datetime [6 ] = {0 };
116
+ datetime [0 ] = ts .tm_year + 1900 ;
117
+ datetime [1 ] = ts .tm_mon + 1 ;
118
+ datetime [2 ] = ts .tm_mday ;
119
+ datetime [3 ] = ts .tm_hour ;
120
+ datetime [4 ] = ts .tm_min ;
121
+ datetime [5 ] = ts .tm_sec ;
122
+ lens = sprintf (datestring , "%04d%02d%02d_%02d%02d%02d" ,
123
+ datetime [0 ], datetime [1 ], datetime [2 ], datetime [3 ], datetime [4 ], datetime [5 ]);
124
+ return lens ;
125
+ }
126
+
127
+ static char getkey (void )
87
128
{
88
129
char ch = 0 ;
89
130
if (_kbhit ())
@@ -116,7 +157,7 @@ static void ksraw_update(ksraw_t *praw, kserial_packet_t *pk, int dt)
116
157
}
117
158
}
118
159
119
- static int ksfeed_serial (ksraw_t * raw , kscsv_t * csv , int updaterate )
160
+ static int ksfeed_serial (ksraw_t * raw , kscsv_t * csv , int updaterate , int save )
120
161
{
121
162
int loop = KS_TRUE ;
122
163
@@ -149,6 +190,17 @@ static int ksfeed_serial(ksraw_t *raw, kscsv_t *csv, int updaterate)
149
190
ksraw_update (raw , & pk , dt );
150
191
ksfeeder (raw -> raw .index , & raw -> raw );
151
192
#endif
193
+ #if 1
194
+ if ((raw -> raw .index > 0 ) && (save == KS_TRUE ))
195
+ {
196
+ // tag: sn,dt,gx,gy,gz,ax,ay,az,mx,my,mz
197
+ kscsv_write (csv , "%d,%.10f,%.10f,%.10f,%.10f,%.10f,%.10f,%.10f,%.10f,%.10f,%.10f" ,
198
+ raw -> raw .index , raw -> raw .dt ,
199
+ raw -> raw .g [0 ], raw -> raw .g [1 ], raw -> raw .g [2 ],
200
+ raw -> raw .a [0 ], raw -> raw .a [1 ], raw -> raw .a [2 ],
201
+ raw -> raw .m [0 ], raw -> raw .m [1 ], raw -> raw .m [2 ]);
202
+ }
203
+ #endif
152
204
#if 0
153
205
klogc ("[%6d][%3d][%s][%02X:%02X][%4dHz] " , total , count , KS_TYPE_STRING [pk .type ], pk .param [0 ], pk .param [1 ], (int32_t )packetFreq );
154
206
for (int i = 0 ; i < pk .lens ; i ++ )
@@ -174,9 +226,8 @@ static int ksfeed_serial(ksraw_t *raw, kscsv_t *csv, int updaterate)
174
226
klogc ("\n" );
175
227
klogc (NULL );
176
228
#endif
177
-
178
229
}
179
- switch (getKey ())
230
+ switch (getkey ())
180
231
{
181
232
case 17 : // ctrl + q
182
233
{
0 commit comments