Subversion Repositories DashDisplay

Rev

Rev 40 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 40 Rev 42
Line 18... Line 18...
18
       
18
       
19
        int nextcol = 1;
19
        int nextcol = 1;
20
        int row = 0;
20
        int row = 0;
21
        std::map<int,int> mapping;
21
        std::map<int,int> mapping;
22
        std::vector<std::vector<double> *> store;
22
        std::vector<std::vector<double> *> store;
23
        std::vector<const char *> headings;
23
        std::vector<std::string> headings;
-
 
24
        size_t constexpr size_step = 10000;
24
       
25
       
25
        FILE  * f;
26
        FILE  * f;
26
        if(argc > 1) {
27
        if(argc > 1) {
27
       
28
       
28
           f=fopen(argv[1],"r");
29
           f=fopen(argv[1],"r");
Line 33... Line 34...
33
                                int index;
34
                                int index;
34
                          int value;
35
                          int value;
35
                                                 
36
                                                 
36
                               
37
                               
37
                                int c = fscanf(f,"%d,%d,%d\n",&key,&index,&value);
38
                                int c = fscanf(f,"%d,%d,%d\n",&key,&index,&value);
38
                               
39
                                if(c)
39
                               
40
                                {
40
                                int search = key * 10 + index;
41
                                int search = key * 10 + index;
41
                               
42
                               
42
                                int & col = mapping[search];
43
                                int & col = mapping[search];
43
                               
44
                               
44
                                if(col == 0)
45
                                if(col == 0)
45
                                {
46
                                {
46
                                        col = nextcol++;
47
                                        col = nextcol++;
47
                                        mapping[search] = col;
48
                                        mapping[search] = col;
48
                                }
49
                                }
49
                               
50
                               
50
                       
-
 
51
                               
-
 
52
       if (col > store.size())
51
       if (col > store.size())
53
        {
52
        {
-
 
53
                                  if(key <=  PLX_X_CHT )
-
 
54
                                  {
-
 
55
                                       
-
 
56
                std::string st = PLX_Obs_Names[key];
-
 
57
                                  char c_code = '1'+ index;
-
 
58
                                        st += c_code;
54
                headings.push_back( PLX_Obs_Names [key]); // save column heading 
59
          headings.push_back( st ); // save column heading 
55
                store.push_back( new std::vector<double> ); // save value 
60
                std::vector<double> * new_vec = new std::vector<double>;
-
 
61
                        //              new_vec->reserve(size_step);  // reserve a big chunk of store 
56
                printf("Alloc heading %s\n",headings[col-1]);
62
                                store.push_back(new_vec); // save value
-
 
63
                            }
57
                                }
64
                                }
-
 
65
                               
58
              std::vector<double> * vec = store[col-1];
66
              std::vector<double> * vec = store[col-1];
-
 
67
                                if(vec)
-
 
68
                                {
-
 
69
                               
-
 
70
                                if(vec->capacity() <= row )
-
 
71
                                {
-
 
72
                                        vec->reserve(vec->capacity() + size_step);
59
                                       
73
                                }      
60
                               
74
                               
61
                                // decode scaling 
75
                                // decode scaling 
62
                                double res = 0;
76
                                double res = 0;
63
                                switch (key)
77
                                switch (key)
64
                                {
78
                                {
-
 
79
                                        case PLX_Volts:
-
 
80
                                                 vec->push_back(ConveriMFDRaw2Data(key ,0, value)) ;
65
                                       
81
                                                 break;
66
                                        case PLX_AFR:
82
                                        case PLX_AFR:
67
                                 vec->push_back(ConveriMFDRaw2Data(key , AFR_Gasoline, value)) ;
83
                                 vec->push_back(ConveriMFDRaw2Data(key , AFR_Gasoline, value)) ;
68
                                                 break;
84
                                                 break;
69
                                  case PLX_RPM:
85
                                  case PLX_RPM:
70
                                                 vec->push_back( ConveriMFDRaw2Data(key ,0, value)) ;
86
                                                 vec->push_back( ConveriMFDRaw2Data(key ,0, value)) ;
71
                         break;
87
                         break;
72
 
-
 
-
 
88
                                  case PLX_MAP:
-
 
89
                                          vec->push_back(ConveriMFDRaw2Data(key ,PRESSURE_kPa, value)) ;
-
 
90
              break;
73
          case PLX_X_CHT:
91
          case PLX_X_CHT:
74
             vec->push_back(ConveriMFDRaw2Data(key ,TEMP_Celsius, value));
92
             vec->push_back(ConveriMFDRaw2Data(key ,TEMP_Celsius, value));
75
                                                                                         break;
93
                                                 break;
76
                                        case PLX_FluidPressure:
94
                                        case PLX_FluidPressure:
77
                                            vec->push_back(ConveriMFDRaw2Data(key ,PRESSURE_PSI_Oil, value));  
95
                                            vec->push_back(ConveriMFDRaw2Data(key ,PRESSURE_PSI_Oil, value));  
78
                                                        break;                                   
96
                                                        break;                                   
79
                                        default:
97
                                        default:
80
                                                break;
98
                                                break;
Line 82... Line 100...
82
                               
100
                               
83
                                if(col == 1)
101
                                if(col == 1)
84
                                {
102
                                {
85
                                        row++;
103
                                        row++;
86
                                }
104
                                }
-
 
105
 
87
                               
106
}
88
                        //      printf("%3d %3d %10d\n", key,index,value);
107
                        //      printf("%3d %3d %10d\n", key,index,value);
89
                                       
108
                                       
90
                                }
109
                                }}
-
 
110
                               
91
                        }
111
                        }
92
               
112
               
93
}
113
}
94
       
114
       
95
        // having gathered all the data print it
115
        // having gathered all the data print it
96
       
116
       
97
        for(auto it = headings.begin(); it != headings.end() ;it++)
117
        for(auto it = headings.begin(); it != headings.end() ;it++)
98
        {
118
        {
99
                printf("%s,",*it);
119
                printf("%s,",(*it).c_str());
100
        }
120
        }
101
                printf("\n");
121
                printf("\n");
102
       
122
       
103
        for(size_t print = 0; print < row ; print++)
123
        for(size_t print = 0; print < row ; print++)
104
        {
124
        {
Line 110... Line 130...
110
                  {
130
                  {
111
 
131
 
112
                               double val = 0.0;
132
                               double val = 0.0;
113
                                if(*it != nullptr)
133
                                if(*it != nullptr)
114
                                                  {
134
                                                  {
115
                                                  std::vector<double>  vec =  **it;
135
                                                  std::vector<double> * vec =  *it;
116
                                if(print < vec.size())
136
                                                  if(vec && (print < vec->size()))
117
                              val = vec[print];
137
                              val =  vec->at(print);
118
                                                        }
138
                                                        }
119
                                printf("%0.2f," ,val);
139
                                printf("%0.2f," ,val);
120
                             }
140
                             }
121
               
141
               
122
                printf("\n");
142
                printf("\n");