00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <iostream>
00029 #include <time.h>
00030 #include "monitor.h"
00031 #include "meldungen.h"
00032 #include "unit.h"
00033 #include "xsmdebug.h"
00034
00035 Monitor::Monitor(gchar *name){
00036 dt=10.0;
00037
00038 if(name)
00039 logname = g_strdup(name);
00040 else{
00041 char buf[64];
00042 time_t t;
00043 time(&t);
00044 strcpy(buf, ctime(&t));
00045 buf[7]=0; buf[24]=0;
00046 logname = g_strdup_printf("Ev_%3s%4s.log", &buf[4], &buf[20]);
00047 XSM_DEBUG (DBG_L2, "LogName:>" << logname << "<" );
00048 }
00049
00050 for(int i=0; i < MAXMONITORFIELDS; ++i)
00051 Fields[i] = NULL;
00052
00053 LogEvent("Monitor", "startup");
00054 }
00055
00056 Monitor::~Monitor(){
00057 if(logname)
00058 g_free(logname);
00059 for(gchar **field = Fields; *field; ++field)
00060 g_free(*field);
00061 }
00062
00063 void Monitor::SetLogName(char *name){
00064 if(logname)
00065 g_free(logname);
00066 logname = g_strdup(name);
00067 }
00068
00069 gint Monitor::Load(gchar *fname){
00070 std::ifstream f;
00071 return 0;
00072 }
00073
00074 gint Monitor::Save(gchar *fname){
00075 std::ofstream f;
00076 time_t t;
00077 time(&t);
00078
00079 f.open(fname, std::ios::out | std::ios::trunc);
00080 if(!f.good()){
00081 return 1;
00082 }
00083 f << "# Monitor Data\n" << "# Date: " << ctime(&t) << "#" << fname << "\n";
00084
00085
00086 f << "\n";
00087
00088 f.close();
00089 return 0;
00090 }
00091
00092 void Monitor::Messung(float val, gchar *txt){
00093
00094
00095
00096
00097
00098
00099
00100
00101
00102
00103
00104
00105
00106
00107
00108
00109
00110
00111
00112
00113 }
00114
00115 void Monitor::LogEvent(gchar *Action, gchar *Entry){
00116 PutEvent(Action, Entry);
00117 }
00118
00119 void Monitor::PutEvent(gchar *Action, gchar *Entry){
00120
00121 for(gchar **field = Fields; *field; ++field){
00122 g_free(*field);
00123 *field=NULL;
00124 }
00125 time_t t;
00126 time(&t);
00127 Fields[0] = g_strdup(ctime(&t)); Fields[0][24]=' ';
00128 Fields[1] = g_strdup_printf("%10s : ",Action);
00129 Fields[2] = g_strdup_printf("%30s : ",Entry);
00130 Fields[3] = g_strdup_printf("%10.6f ",0.0);
00131 Fields[4] = g_strdup_printf("%10.6f ",0.0);
00132 Fields[5] = g_strdup_printf("%10.6f ",0.0);
00133 Fields[6] = NULL;
00134
00135 AppLine();
00136 }
00137
00138 gint Monitor::AppLine(){
00139
00140 if(logname){
00141 std::ofstream f;
00142 f.open(logname, std::ios::out | std::ios::app);
00143 if(!f.good()){
00144 std::cerr << ERR_SORRY << "\n" << ERR_FILEWRITE << ": " << logname << std::endl;
00145 return 1;
00146 }
00147
00148 for(gchar **field = Fields; *field; ++field)
00149 f << *field;
00150 f << "\n";
00151 f.close();
00152 }
00153 return 0;
00154 }
00155
00156