Main Page | Namespace List | Class List | File List | Namespace Members | Class Members | File Members

viewer.c

Go to the documentation of this file.
00001 #include "../../SharedMemory/SMcommon.h"
00002 #include <iostream>
00003 #include <time.h>
00004 #include <stdio.h>
00005 
00006 class DataTaking{
00007  private:
00008   SharedMemory sm;
00009   int shd_param_id;
00010   struct SHM_PARAM *param_ptr;
00011   double *data_ptr;
00012   key_t key;
00013   char *fmttm(char *buf , struct tm *st);
00014   
00015   time_t t;
00016   struct tm* ltm;
00017   char s[50];
00018   
00019 
00020  public:
00021   int ShMemory();
00022   void run();
00023   void start_time();  
00024   
00025 };
00026 
00027 int DataTaking::ShMemory(){
00028   //  key = ftok("~/study/ROOT/jikken3/DataTaking/viewer",PROJ_CHAR);
00029   key = ftok("viewer",PROJ_CHAR);
00030   if( key == -1 ) {
00031     perror("ftok()");
00032     return 1;
00033   }
00034   sm.shm_access(key,sizeof(struct SHM_PARAM),&shd_param_id,(int *)&param_ptr);
00035   return 0;
00036 }
00037 
00038 void DataTaking::start_time(){
00039   time(&t);        //time_t type
00040   //  printf("%d\n",t);
00041   
00042   ltm = localtime(&t);   //change time_t type -> tm structure(local)
00043   fmttm(s,ltm);
00044   printf("%s\n",s);
00045 
00046 }
00047 
00048 char *DataTaking::fmttm(char *buf , struct tm *st){
00049   char *a[7] = {"sun","man","tue","wed","the","fri","sat",};
00050                                                                                 
00051   sprintf(buf,"start [%d/%d/%d (%s) %02d:%02d:%02d]",
00052           st->tm_year +1900,
00053           st->tm_mon +1,
00054           st->tm_mday,
00055           a[st->tm_wday],
00056           st->tm_hour,
00057           st->tm_min,
00058           st->tm_sec);
00059 
00060   sprintf(param_ptr->StartTime,"%d / %d / %d  (%s) %02d:%02d:%02d",
00061           st->tm_year +1900,
00062           st->tm_mon +1,
00063           st->tm_mday,
00064           a[st->tm_wday],
00065           st->tm_hour,
00066           st->tm_min,
00067           st->tm_sec);
00068   return buf;
00069 
00070 }
00071 
00072 void DataTaking::run(){
00073   ShMemory();
00074   sm.shm_initialize(key,sizeof(struct SHM_PARAM), &shd_param_id, (int *)&param_ptr);
00075   param_ptr->shd_param_id = shd_param_id;
00076   param_ptr->nEvent=0;
00077   param_ptr->nOverFlow=0;
00078 
00079   start_time();
00080   
00081   //printf(param_ptr->StartTime);
00082   std::cout<<param_ptr->StartTime<<std::endl;
00083   //  printf("%s",param_ptr->StartTime);
00084   
00085   while(1){
00086     param_ptr->nEvent++;
00087     int eve;
00088     eve=rand()%280;
00089     if(eve<250)param_ptr->Hist[eve]++;
00090     else if(eve>250)param_ptr->nOverFlow++;
00091     std::cout<<"eve = "<<eve<<"  ";
00092     std::cout<<param_ptr->nEvent<<" "<<param_ptr->nOverFlow<<std::endl;
00093     if( param_ptr->status == FIN )break;
00094     if( param_ptr->status == PAUSE )std::cout<<"Pause  "<<std::endl;
00095     if( param_ptr->status == RESTART );
00096     //    usleep(50000);
00097     sleep(1);
00098   }
00099   sm.erase_shm(param_ptr);
00100 
00101 
00102 }
00103 
00104 int main(int argc, char **argv)
00105 {
00106   DataTaking dt;
00107   dt.run();
00108   //  SharedMemory sm;
00109   
00110 }

Generated on Sun Dec 14 23:32:46 2008 by doxygen 1.3.5