00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef _MAX_H_
00023 #define _MAX_H_
00024
00025 #include <vector.h>
00026
00027 #include <stdio.h>
00028 #include <stdlib.h>
00029 #include <errno.h>
00030 #include <stdio.h>
00031 #include <string.h>
00032 #include <sys/types.h>
00033 #include <sys/socket.h>
00034
00035 #include "definitions.h"
00036 #include "network.h"
00037 #include "packet.h"
00038 #include "qtincludes.h"
00039 #include "list_client.h"
00040 #include "plot.h"
00041 #include "priority.h"
00042 #include "utils.h"
00043 #include "database.h"
00044 #include "error.hh"
00045
00046
00047
00048 class PlotBuffer {
00049 public :
00050 PlotBuffer(int value=0, int channel=0, int index=0, int priority=0);
00051 PlotBuffer(double value=0, int channel=0, int index=0, int priority=0);
00052 PlotBuffer(int *a=0,int len=0, int channel=0, int index=0, int priority=0);
00053 PlotBuffer(double *a=0, int len=0, int channel=0, int index=0, int priority=0);
00054
00055 PlotBuffer(vector<int> *vptr=NULL, int len=0, int channel=0, int index = 0, int priority = 0);
00056
00057 PlotBuffer(vector<double> *vptr=NULL,int len=0,int channel=0,int index = 0, int priority = 0);
00058 ~PlotBuffer() {
00059 if (i_array) delete i_array;
00060 if (d_array) delete d_array;
00061 }
00062 int ival() const { return i_val; }
00063 double dval() const { return d_val; }
00064 int * iarr() const { return i_array;}
00065 double*darr() const { return d_array;}
00066 vector<int> *ivec() const { return iVecPtr; }
00067 vector<double> *dvec() const { return dVecPtr; }
00068 int ind() const { return indx; }
00069 int prior() const { return prio; }
00070 int chann() const { return chan; }
00071 int len() const { return length; }
00072 void setindex(int x) { indx = x;}
00073 int var_type() const { return type; }
00074 private :
00075 int i_val;
00076 double d_val;
00077 int *i_array;
00078 double *d_array;
00079 int length;
00080 int type;
00081 int chan;
00082 int prio;
00083 int indx;
00084 int x;
00085 vector<int> *iVecPtr;
00086 vector<double> *dVecPtr;
00087 };
00088
00089 class MainGUI : public QMainWindow {
00090 Q_OBJECT;
00091 public:
00092 MainGUI(char *hostname,char *filename);
00093 ~MainGUI();
00094 int readMainInitfile(char *);
00095 protected:
00096 void signalhandler( int );
00097 int devDataConnect ( char *, int );
00098 int cmdSocketConnect( char *, int );
00099 int datSocketConnect( char *, int );
00100 int connectSockets(char *);
00101 void sendDeviceData(unsigned char *,unsigned char *,
00102 unsigned char *,unsigned char ,unsigned char);
00103 int sendDeviceData(devDataPacket *);
00104 void sendAllDeviceData(void );
00105 void sendAllPriorities(void);
00106
00107 int sendCommand (char ,char *,int);
00108 signals:
00109 void stop (int );
00110 void timeout( );
00111 void timeout2( );
00112 void timeout3();
00113 protected slots :
00114
00115
00116 void commandReceived();
00117 void dataReceived();
00118 void parameterReceived();
00119 public slots :
00120 void open ();
00121 void save ();
00122 void do_save(const char *,const char *,
00123 const char *,int ,char * ,
00124 const char *,const char *);
00125 void about();
00126 void print();
00127 void help ();
00128 void bye ();
00129 void browsePrio();
00130 void browseDev();
00131 void browseMain();
00132 void reinit();
00133 int reinitAll();
00134 void reinit_priority();
00135 void reinit_devices();
00136 void startclicked();
00137 void stopclicked();
00138 void contclicked();
00139 void resetclicked();
00140 void pauseclicked();
00141 void toggle_trigger_mode();
00142 void toggle_monitor_mode();
00143 void listbox_update();
00144 void priority_update();
00145 void set_plotwindow_update_intervall();
00146 void set_trigger_internal();
00147 void set_trigger_external();
00148 void set_trigger_delay();
00149 void toggle_save_widget_enable();
00150 void toggle_save_widget_disable();
00151 void apply_trigger_delay(uint );
00152 void apply_update_intervall(uint, uint );
00153 void apply_options(int,int);
00154 void select_plotvars();
00155 void set_maxnum();
00156 void set_integrations();
00157 void set_new_parameter();
00158 void edit_parameter(int );
00159 void edit_priority(QListViewItem *);
00160 void prio_lv_PopUp( QListViewItem *,const QPoint &, int);
00161 void set_priority();
00162 void Prio_Enabled();
00163 void Prio_Disabled();
00164 void edit_pfile();
00165 void edit_dfile();
00166 void edit_ifile();
00167
00168
00169 void ButtonTimerEvent();
00170 void RefreshNumber();
00171 void UpdatePlotWindows();
00172 void SetWindowParameters(Plot *,PlotProps *);
00173 void appendData(dataPacket);
00174 private:
00175
00176 void SortPlotProperties();
00177
00178 Database *Schedule;
00179 SaveWidget *SaveW;
00180 UpdateWidget *W;
00181 DelayWidget *DelayW;
00182 Cl_List *Devices;
00183 Pr_list Priority;
00184
00185
00186 QWidget* Main_Widget;
00187 QSocketNotifier *RDataNotifier;
00188 QSocketNotifier *RCmdNotifier;
00189 QSocketNotifier *DataNotifier;
00190 int data_sfd;
00191 int mdat_sfd;
00192 int cmd_sfd;
00193 int cmdr_sfd;
00194 int devr_sfd;
00195 int devs_sfd;
00196 int timerID;
00197 int port;
00198 int flag;
00199 int pid;
00200 char* hostname;
00201 struct hostent *host, *hostBackup;
00202 struct hostent *hp;
00203 struct sockaddr_in server,server_buffer;
00204 struct sockaddr_in client;
00205 struct sockaddr_in client_polld;
00206 struct sockaddr_in server_max;
00207 struct sockaddr_in cmdClient_max;
00208 struct sockaddr_in cmdClient_polld;
00209 struct sockaddr_in cmdServer_max;
00210 struct sockaddr_in cmdServer_polld;
00211 struct sockaddr_in dataClient;
00212 struct sockaddr_in dataServer;
00213 struct sockaddr_in server_polld;
00214 unsigned int server_len;
00215 int dataClient_len;
00216 devDataPacket d_packet;
00217 command_packet c_packet;
00218 dataPacket packet;
00219 int n;
00220 int cmdClient_max_len;
00221 int cmdvalue;
00222
00223
00224 char *pr_filename;
00225 char *init_filename;
00226 char *max_init_filename;
00227 char save_fname [100];
00228 char array_fname [100];
00229 char image_fname [100];
00230 char data_dir [100];
00231 char *l_fname;
00232 char *l_afname;
00233 char *l_ifname ;
00234 char *f_name;
00235
00236
00237 bool eventFilter(QObject *,QEvent *);
00238 QMenuBar *menu;
00239 QToolBar *fileTools;
00240 QLabel *label;
00241 QLabel *channel;
00242 QLabel *label_max_channels;
00243 QLabel *integrations;
00244 QLabel *label_integrations;
00245 QLabel *label_measurement;
00246 QLabel *prio_label;
00247 QLabel *dev_label;
00248 QLabel *init_label;
00249 QLCDNumber *chan_no;
00250 QPopupMenu *options;
00251 QPopupMenu *priority_trigger;
00252 QFrame *top_separator;
00253 QFrame *bottom_separator;
00254 QPushButton *button_triggermode;
00255 QPushButton *button_monitormode;
00256 QPushButton *button_speed;
00257 QPushButton *pbcont;
00258 QPushButton *pbstart;
00259 QPushButton *pbstop;
00260 QPushButton *pbreset;
00261 QPushButton *pbpause;
00262 QProgressBar *progress;
00263 QProgressBar *int_progress;
00264 QLabel *progressTitle;
00265 QCheckBox *cbutton_update;
00266 QLabel *chn_no;
00267 QLabel *chn_label;
00268 QListBox *device_lb;
00269 QListBox *prio_lb;
00270 QListView *prio_lv;
00271 QLineEdit *dev_editor;
00272 QLineEdit *integ_editor;
00273 QLineEdit *channel_editor;
00274 QLineEdit *prio_editor;
00275 QLineEdit *prio_fname;
00276 QLineEdit *dev_fname;
00277 QLineEdit *in_fname;
00278 QCursor *mouse;
00279 QTimer *blink_timer;
00280 QTimer *number_timer;
00281 QTimer *update_timer;
00282 QColor col;
00283 QColor col_off,col_on;
00284 QColor editcol;
00285 QColorGroup colgrp;
00286 QColorGroup colgrp_off,colgrp_on;
00287 QColorGroup grp_active,grp_passive;
00288
00289
00290 bool dev_lb_update;
00291 bool save_flag;
00292 bool device_lb_flag;
00293 int *lbtodata;
00294 int *lbtoplotprops;
00295 int m_running;
00296 int trigger_period;
00297 int monitor_mode;
00298 int trigger_mode;
00299 int update_intervall;
00300 int plot_update;
00301 int data_send_intervall;
00302 int color_state;
00303 int pause_flag;
00304 int stop_flag;
00305 int continue_flag;
00306 int max_channels;
00307 int max_integrations;
00308 QDate date;
00309 QTime time;
00310 QString namestr;
00311 Plot *Plotwin;
00312 QList<Plot> *WindowList;
00313 QList<PlotBuffer> *P_Buf;
00314 vector<int> WindowPtr;
00315
00316
00317
00318
00319
00320
00321 VarType *VarListPtr;
00322 ArrayType *ArrayListPtr;
00323 int *iarraybuffer;
00324 double *darraybuffer;
00325 int bufpos;
00326 int *buf;
00327 double *dbuf;
00328 int varcounter;
00329 int arraycounter;
00330 int dev_index;
00331 int plot_index;
00332 int windowcounter;
00333 bool m_enable;
00334 bool save_detect_enable;
00335 };
00336
00337 #endif