Changeset 4104 for trunk/MagicSoft/Cosy/devdrv/shaftencoder.cc
- Timestamp:
- 05/20/04 04:42:48 (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Cosy/devdrv/shaftencoder.cc
r4076 r4104 8 8 #include <TGLabel.h> // TGLabel->SetText 9 9 10 #include "macs.h" 11 10 12 ClassImp(ShaftEncoder); 11 13 … … 14 16 ShaftEncoder::ShaftEncoder(const BYTE_t nodeid, const char *name, MLog &out) 15 17 : NodeDrv(nodeid, name, out), fPos(0), fVel(0), fAcc(0), 16 fTurn(0), fLabel(NULL), fPosHasChanged(false), fReport(NULL) 17 { 18 } 19 18 fTurn(0), fLabel(NULL), fPosHasChanged(false), fReport(NULL),/*fTwin(0), 19 fIsUpdated(kFALSE),*/ fMotor(0), fOffset(0) 20 { 21 } 22 /* 23 void ShaftEncoder::CheckTwin(Int_t diff) const 24 { 25 if (!fTwin) 26 return; 27 28 if (fTwin->fIsUpdated) 29 fTwin->fIsUpdated = kFALSE; 30 else 31 fTwin->fOffset += diff; 32 } 33 */ 20 34 void ShaftEncoder::HandleSDO(WORD_t idx, BYTE_t subidx, LWORD_t val, timeval_t *tv) 21 35 { … … 79 93 fPos = val; 80 94 fTurn = 0; 95 fOffset = fMotor ? fMotor->GetPdoPos() : 0; 96 //fIsUpdated=kTRUE; 97 //fOffset = 0; 81 98 return; 82 99 … … 154 171 void ShaftEncoder::DisplayVal() 155 172 { 173 const LWORDS_t pos = GetPos(); 156 174 if (IsZombieNode()) 157 175 { 158 176 fLabel->SetText(new TGString("")); 159 fUpdPos = ~ fPos;177 fUpdPos = ~pos; 160 178 return; 161 179 } 162 180 163 181 char text[21]; 164 165 if (fPos!=fUpdPos && fLabel) 166 { 167 sprintf(text, "%ld", fPos); 182 if (pos!=fUpdPos && fLabel) 183 { 184 sprintf(text, "%ld", pos); 168 185 fLabel->SetText(new TGString(text)); 169 fUpdPos = fPos;186 fUpdPos = pos; 170 187 } 171 188 } … … 177 194 // 178 195 LWORDS_t pos = data[0] | (data[1]<<8) | (data[2]<<16); // | (data[3]<<24); 179 if (pos==fPos) 180 return; 196 197 //if (pos==fPos) 198 // return; 181 199 182 200 fPos = pos; 201 fOffset = fMotor ? fMotor->GetPdoPos() : 0; 183 202 fTime.Set(*tv); 184 203 fPosHasChanged = true; 185 204 205 //CheckTwin(fPos-pos); 206 //fIsUpdated=kTRUE; 207 186 208 if (fReport) 187 209 { 188 fReport->Lock( );210 fReport->Lock("ShaftEncoder::HandlePDOType0"); 189 211 *fReport << "SE-REPORT " << (int)GetId() << " " << fTime << " PDO0 " << pos << " " << GetNodeName() << endl; 190 fReport->UnLock( );212 fReport->UnLock("ShaftEncoder::HandlePDOType0"); 191 213 } 192 214 } … … 200 222 BYTE_t flag = data[4]; 201 223 202 if (fPos==pos) 203 return; 204 224 //if (fPos==pos) 225 // return; 226 227 //CheckTwin(fPos-pos); 205 228 fPos=pos; 229 fOffset = fMotor ? fMotor->GetPdoPos() : 0; 206 230 fTime.Set(*tv); 207 231 fPosHasChanged=true; 232 //fIsUpdated=kTRUE; 233 //fOffset = 0; 208 234 209 235 flag=flag; … … 211 237 if (fReport) 212 238 { 213 fReport->Lock( );239 fReport->Lock("ShaftEncoder::HandlePDOType1"); 214 240 *fReport << "SE-REPORT " << (int)GetId() << " " << fTime << " PDO1 " << pos << " " << (int)flag << " " << GetNodeName() << endl; 215 fReport->UnLock( );241 fReport->UnLock("ShaftEncoder::HandlePDOType1"); 216 242 } 217 243 } … … 241 267 turn--; 242 268 243 if (fPos==pos && fTurn==fTurn) 244 return; 269 //if (fPos==pos && fTurn==fTurn) 270 // return; 271 272 //CheckTwin(fPos-pos); 245 273 246 274 fPos = pos; 247 275 fTurn = turn; 248 276 277 fOffset = fMotor ? fMotor->GetPdoPos() : 0; 249 278 fTime.Set(*tv); 250 279 fPosHasChanged=true; 280 //fIsUpdated=kTRUE; 281 //fOffset = 0; 282 251 283 252 284 if (fReport) 253 285 { 254 fReport->Lock( );286 fReport->Lock("ShaftEncoder::HandlePDOType2"); 255 287 *fReport << "SE-REPORT " << (int)GetId() << " " << fTime << " PDO2 " << pos << " " << fVel << " " << fAcc << " " << GetNodeName() << endl; 256 fReport->UnLock( );288 fReport->UnLock("ShaftEncoder::HandlePDOType2"); 257 289 } 258 290 } … … 383 415 fPos = pre%16384; 384 416 fTurn = pre/16384; 417 418 fOffset = fMotor ? fMotor->GetPdoPos() : 0; 385 419 } 386 420
Note:
See TracChangeset
for help on using the changeset viewer.