Changeset 2518 for trunk/MagicSoft/Cosy/main
- Timestamp:
- 11/17/03 13:50:48 (22 years ago)
- Location:
- trunk/MagicSoft/Cosy/main
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Cosy/main/MBending.cc
r2407 r2518 68 68 ClassImp(MBending); 69 69 70 #undef DEBUG 71 #define DEBUG(txt) txt 72 //#define DEBUG(txt) 73 70 74 const Int_t MBending::fNumPar=19; 71 75 … … 286 290 AltAz p = aa; 287 291 292 DEBUG(cout << setprecision(16)); 293 DEBUG(cout << "Bend8: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 294 288 295 const AltAz CRX(-fCrx*sin(p.Az()-p.Alt()), fCrx*cos(p.Az()-p.Alt())/cos(p.Alt())); 289 296 const AltAz CRY(-fCry*cos(p.Az()-p.Alt()), -fCry*sin(p.Az()-p.Alt())/cos(p.Alt())); … … 291 298 p += CRY; 292 299 300 DEBUG(cout << "Bend7: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 301 293 302 const AltAz NRX(fNrx*sin(p.Alt()), -fNrx); 294 303 const AltAz NRY(fNry*cos(p.Alt()), -fNry*tan(p.Alt())); … … 296 305 p += NRY; 297 306 307 DEBUG(cout << "Bend6: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 308 298 309 const AltAz CES(-fEces*sin(p.Alt()), -fAces*sin(p.Az())); 299 310 const AltAz CEC(-fEcec*cos(p.Alt()), -fAcec*cos(p.Az())); … … 301 312 p += CEC; 302 313 314 DEBUG(cout << "Bend5: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 315 303 316 const AltAz TX(Sign(fTx/tan(p.Alt()), p.Alt()), 0); 304 317 const AltAz TF(Sign(fTf*cos(p.Alt()), p.Alt()), 0); 305 p += TX;318 //p += TX; 306 319 p += TF; 320 321 DEBUG(cout << "Bend4: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 322 323 cout << fAw << " " << cos(p.Az()) << " " << tan(p.Alt()) << endl; 324 cout << fAw* cos(p.Az())*tan(p.Alt())*180/3.1415 << endl; 307 325 308 326 const AltAz AW( fAw*sin(p.Az()), -fAw*cos(p.Az())*tan(p.Alt())); … … 311 329 p += AN; 312 330 331 DEBUG(cout << "Bend3: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 332 313 333 const AltAz CA(0, -fCa/cos(p.Alt())); 314 334 p += CA; 315 335 336 DEBUG(cout << "Bend2: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 337 316 338 const AltAz NPAE(0, -fNpae*tan(p.Alt())); 317 339 p += NPAE; 318 340 341 DEBUG(cout << "Bend1: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 342 319 343 const AltAz FLOP(Sign(fFlop, p.Alt()), 0); 320 344 p += FLOP; … … 323 347 p += I; 324 348 349 DEBUG(cout << "Bend0: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 350 325 351 return p; 326 352 } 327 353 328 AltAz MBending:: CorrectBack(const AltAz &aa) const354 AltAz MBending::AddOffsets(const AltAz &aa) const 329 355 { 330 356 // Correct [rad] … … 333 359 334 360 const AltAz I(fIe, fIa); 361 p += I; 362 363 return p; 364 } 365 366 AltAz MBending::CorrectBack(const AltAz &aa) const 367 { 368 // Correct [rad] 369 // zdaz [rad] 370 AltAz p = aa; 371 372 DEBUG(cout << setprecision(16)); 373 DEBUG(cout << "Back0: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 374 375 const AltAz I(fIe, fIa); 335 376 p -= I; 336 377 … … 338 379 p -= FLOP; 339 380 381 DEBUG(cout << "Back1: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 382 340 383 const AltAz NPAE(0, -fNpae*tan(p.Alt())); 341 384 p -= NPAE; 342 385 386 DEBUG(cout << "Back2: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 387 343 388 const AltAz CA(0, -fCa/cos(p.Alt())); 344 389 p -= CA; 390 391 DEBUG(cout << "Back3: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 392 393 cout << fAw << " " << cos(p.Az()) << " " << tan(p.Alt()) << endl; 394 cout << fAw* cos(p.Az())*tan(p.Alt())*180/3.1415 << endl; 345 395 346 396 const AltAz AN(-fAn*cos(p.Az()), -fAn*sin(p.Az())*tan(p.Alt())); … … 349 399 p -= AW; 350 400 401 DEBUG(cout << "Back4: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 402 351 403 const AltAz TF(Sign(fTf*cos(p.Alt()), p.Alt()), 0); 352 404 const AltAz TX(Sign(fTx/tan(p.Alt()), p.Alt()), 0); 353 405 p -= TF; 354 p -= TX; 406 //p -= TX; 407 408 DEBUG(cout << "Back5: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 355 409 356 410 const AltAz CEC(-fEcec*cos(p.Alt()), -fAcec*cos(p.Az())); … … 359 413 p -= CES; 360 414 415 DEBUG(cout << "Back6: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 416 361 417 const AltAz NRY(fNry*cos(p.Alt()), -fNry*tan(p.Alt())); 362 418 const AltAz NRX(fNrx*sin(p.Alt()), -fNrx); … … 364 420 p -= NRX; 365 421 422 DEBUG(cout << "Back7: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 423 366 424 const AltAz CRY(-fCry*cos(p.Az()-p.Alt()), -fCry*sin(p.Az()-p.Alt())/cos(p.Alt())); 367 425 const AltAz CRX(-fCrx*sin(p.Az()-p.Alt()), fCrx*cos(p.Az()-p.Alt())/cos(p.Alt())); … … 369 427 p -= CRX; 370 428 429 DEBUG(cout << "Back8: " << 90-p.Alt()*180/TMath::Pi() << " " << p.Az()*180/TMath::Pi() << endl); 430 371 431 return p; 372 432 } 433 434 AltAz MBending::SubtractOffsets(const AltAz &aa) const 435 { 436 // Correct [rad] 437 // zdaz [rad] 438 AltAz p = aa; 439 440 const AltAz I(fIe, fIa); 441 p -= I; 442 443 return p; 444 } 445 373 446 374 447 ZdAz MBending::Correct(const ZdAz &zdaz) const -
trunk/MagicSoft/Cosy/main/MBending.h
r2407 r2518 91 91 } 92 92 93 AltAz AddOffsets(const AltAz &aa) const; 94 ZdAz AddOffsets(const ZdAz &zdaz) const 95 { 96 AltAz p(TMath::Pi()/2-zdaz.Zd(), zdaz.Az()); 97 AltAz c = AddOffsets(p); 98 return ZdAz(TMath::Pi()/2-c.Alt(), c.Az()); 99 } 100 101 AltAz SubtractOffsets(const AltAz &aa) const; 102 ZdAz SubtractOffsets(const ZdAz &zdaz) const 103 { 104 AltAz p(TMath::Pi()/2-zdaz.Zd(), zdaz.Az()); 105 AltAz c = SubtractOffsets(p); 106 return ZdAz(TMath::Pi()/2-c.Alt(), c.Az()); 107 } 108 93 109 void SetParameters(const Double_t *par, Int_t n=fNumPar); 94 110 void GetParameters(Double_t *par, Int_t n=fNumPar) const; -
trunk/MagicSoft/Cosy/main/MCosy.cc
r2420 r2518 251 251 } 252 252 253 254 255 253 // -------------------------------------------------------------------------- 256 254 // … … 340 338 usleep(1); 341 339 342 if (Break() || HasError() || HasZombie()) 343 { 344 lout << "WaitForEndMovement aborted... "; 345 if (Break()) 346 lout << "Break signal." << endl; 347 if (HasError()) 348 lout << "Network has error." << endl; 349 if (HasZombie()) 350 lout << "Network has zombie." << endl; 351 } 340 if (!Break() && !HasError() && !HasZombie()) 341 return; 342 343 Timer t; 344 t.Now(); 345 lout << t << " - MCosy::WaitForEndMovement aborted..."; 346 if (Break()) 347 lout << " Break signal..."; 348 if (HasError()) 349 lout << " Network has error..."; 350 if (HasZombie()) 351 lout << " Network has zombie..."; 352 lout << endl; 352 353 } 353 354 … … 364 365 // status is set to stopped. 365 366 // 366 if (!HasError()) 367 { 367 if (HasError() || HasZombie()) 368 { 369 SetStatus(MDriveCom::kError); 370 return; 371 } 372 373 if (fMac1->IsPositioning() || fMac2->IsPositioning()) 374 SetStatus(MDriveCom::kMoving); 375 else 368 376 SetStatus(MDriveCom::kStopped); 369 return;370 }371 377 372 378 // 373 379 // If there is an error, the error status is set to Error. 374 380 // 375 SetStatus(MDriveCom::kError);376 381 377 382 /* … … 399 404 Bool_t MCosy::CheckRange(const ZdAz &d) const 400 405 { 401 // d [deg] 402 403 if (d.Zd()<fMin.Zd() || d.Zd()>fMax.Zd()) 404 { 405 lout << "ERROR: Requested Zenith Angle (" << d.Zd() << "deg, Az="; 406 lout << d.Az() << ") not inside allowed range." << endl; 406 // d [rad] 407 408 if (d.Zd()<fMin.Zd()) 409 { 410 lout << "ERROR: Requested Zenith Angle below negative endswitch." << endl; 407 411 return kFALSE; 408 412 } 409 413 410 if (d.Az()<fMin.Az() || d.Az()>fMax.Az()) 411 { 412 lout << "ERROR: Requested Azimuth Angle (" << d.Az() << "deg, Zd="; 413 lout << d.Zd() << ") not inside allowed range." << endl; 414 if (d.Zd()>fMax.Zd()) 415 { 416 lout << "ERROR: Requested Zenith Angle behind positive endswitch." << endl; 414 417 return kFALSE; 415 418 } 419 420 if (d.Az()<fMin.Az()) 421 { 422 lout << "ERROR: Requested Azimuth Angle below negative endswitch." << endl; 423 return kFALSE; 424 } 425 426 if (d.Az()>fMax.Az()) 427 { 428 lout << "ERROR: Requested Azimuth Angle behind positive endswitch." << endl; 429 return kFALSE; 430 } 431 416 432 417 433 return kTRUE; … … 437 453 lout << t << " - Target Position: " << d.Zd() << "deg, " << d.Az() << "deg (Zd/Az)" << endl; 438 454 439 if (!CheckRange(d))440 return kFALSE;441 442 455 // 443 456 // Calculate new target position (shortest distance to go) … … 459 472 // const ZdAz dest = CorrectTarget(src, dst); 460 473 // 461 const ZdAz dest = fBending(dst)*16384/2/TMath::Pi(); // [se] 474 ZdAz bend = fBending(dst); // [rad] 475 476 const ZdAz dest = bend*16384/2/TMath::Pi(); // [se] 477 478 if (!CheckRange(bend)) 479 return kFALSE; 480 481 bend *= kRad2Deg; 462 482 fZdAzSoll = dst; 463 483 464 484 cout << "Source Zd: " << src.Zd() << "se Az:" << src.Az() << "se" << endl; 465 485 cout << "Destination Zd: " << Rad2SE(dst.Zd()) << "se Az:" << Rad2SE(dst.Az()) << "se" << endl; 466 cout << "Bend'd Dest Zd: " << Rad2SE(fZdAzSoll.Zd()) << "se Az:" << Rad2SE(fZdAzSoll.Az())<< "se" << endl;467 cout << " Shortest Dest Zd: " << dest.Zd() << "se Az:" << dest.Az() << "se" << endl;486 cout << "Bend'd Dest Zd: " << dest.Zd() << "se Az:" << dest.Az() << "se" << endl; 487 cout << "Bend'd Dest Zd: " << bend.Zd() << "deg Az:" << bend.Az() << "deg" << endl; 468 488 469 489 // … … 476 496 { 477 497 478 lout << " Step #" << i << endl;498 lout << "- Step #" << i << endl; 479 499 // 480 500 // Get Shaft Encoder Positions … … 586 606 // 587 607 588 lout << " Do Relative Positioning..." << endl;608 lout << "- Do Relative Positioning..." << endl; 589 609 DoRelPos(rd, cdzd, cdaz); 590 lout << "Relative Positioning Done" << endl; 610 lout << "- Relative Positioning Done" << endl; 611 } 612 if (i==1 && track && !(Break() || HasError() || HasZombie())) 613 { 614 t.Now(); 615 lout << t << " - Positioning done." << endl; 616 SetStatus(MDriveCom::kStopped); 617 return TRUE; 591 618 } 592 619 … … 597 624 598 625 t.Now(); 599 lout << t << " - Warning: Requested position not reached (i=" << i << ")" << endl;626 lout << t << " - Warning: Requested position not reached (i=" << dec << i << ")" << endl; 600 627 return FALSE; 601 628 } … … 759 786 } 760 787 } 761 788 /* 762 789 Bool_t MCosy::AlignTrackingPos(ZdAz pointing, ZdAz &za) const 763 790 { … … 789 816 return rc; 790 817 } 818 */ 819 820 ZdAz MCosy::AlignTrackingPos(ZdAz pointing) const 821 { 822 // pointing [rad] 823 // AlignTrackingPos [deg] 824 825 pointing *= kRad2Deg; 826 827 if (pointing.Zd()<0) 828 { 829 pointing.Zd(-pointing.Zd()); 830 pointing.Az(pointing.Az()+180); 831 } 832 833 const ZdAz se = GetSePos()*2*TMath::Pi()/16384; // [rad] 834 const ZdAz unbendedse = fBending.CorrectBack(se)*kRad2Deg; // ist pointing 835 836 do 837 { 838 const Double_t d = unbendedse.Az() - pointing.Az(); 839 if (d>-180 && d<=180) 840 break; 841 842 pointing.Az(pointing.Az()+TMath::Sign(360., d)); 843 } while (1); 844 845 return pointing/kRad2Deg; 846 /* 847 const Bool_t rc = CheckRange(pointing); 848 za = pointing/kRad2Deg; // [rad] 849 850 if (!rc) 851 lout << "Error: Aligned position out of Range." << endl; 852 853 return rc;*/ 854 } 791 855 792 856 Double_t MCosy::Starguider(Double_t mjd, ZdAz &dest) const … … 804 868 return -1; 805 869 806 ZdAz point; 870 ZdAz point=AlignTrackingPos(ZdAz(zd, az)/kRad2Deg); 871 /* 807 872 if (!AlignTrackingPos(ZdAz(zd, az), point)) 808 873 { 809 874 cout << "Starguider position couldn't be aligned..." << endl; 810 875 return -1; 811 } 876 }*/ 877 878 // FIXME: Check Range missing! 812 879 813 880 const ZdAz diff = (dest-point)*kRad2Deg; … … 854 921 855 922 if (!SetPosition(dest, kTRUE)) 923 //if (!SetPosition(dest, kFALSE)) 856 924 { 857 925 lout << "Error: Cannot start tracking, positioning failed." << endl; … … 925 993 // 926 994 const Double_t mjd = sla.GetMjd()+dt/(60*60*24); 927 const ZdAz pointing = sla.CalcZdAz(fRaDec, mjd)*kRad2Deg; // soll pointing [deg] 928 995 const ZdAz pointing = sla.CalcZdAz(fRaDec, mjd); // soll pointing [deg] 996 997 /* 929 998 ZdAz dest; 930 999 if (!AlignTrackingPos(pointing, dest)) 931 1000 break; 1001 */ 1002 ZdAz dest = AlignTrackingPos(pointing); 932 1003 933 1004 ZdAz vcalc = sla.GetApproxVel(fRaDec) * kGearRatio2*4./60.; // [re/min] … … 940 1011 { 941 1012 dest = fBending(dest); // [rad] 1013 1014 if (!CheckRange(dest)) 1015 break; 1016 942 1017 dest *= 16384/TMath::Pi()/2; // [se] 943 1018 dest *= kGearRatio; // [re] … … 1021 1096 */ 1022 1097 usleep(1000000); // 1s 1098 cout << "." << flush; 1023 1099 //usleep(50000); // 0.05s 1024 1100 } … … 1138 1214 //CheckConnections(); 1139 1215 1216 CheckForError(); 1217 1140 1218 if (HasZombie()) 1141 1219 { … … 1157 1235 } 1158 1236 1237 CheckForError(); 1159 1238 return true; 1160 1239 } … … 1274 1353 cout << "WM_Position: start." << endl; 1275 1354 { 1276 if (!CheckNetwork())1277 return (void*)0xebb0;1355 //if (!CheckNetwork()) 1356 // return (void*)0xebb0; 1278 1357 1279 1358 ZdAz dest = *((ZdAz*)mp); … … 1387 1466 1388 1467 ZdAz a1 = sla.CalcZdAz(rd*kDeg2Rad); // [rad] 1389 const ZdAz a0 = a1*kRad2Deg; // [deg]1390 1468 1391 1469 cout << "Ra/Dec source: " << xy.X() << "h " << xy.Y() << "°" << endl; 1392 cout << "Zd/Az target: " << a 0.Zd() << "° " << a0.Az()<< "°" << endl;1470 cout << "Zd/Az target: " << a1.Zd()*kRad2Deg << "° " << a1.Az()*kRad2Deg << "°" << endl; 1393 1471 1394 1472 if (fZd1 && fZd2 && fAz) 1395 AlignTrackingPos(a0, a1); 1396 1397 a1 = fBending(a1)*kRad2Deg; 1473 a1 = AlignTrackingPos(a1); 1474 1475 a1 = fBending(a1); 1476 CheckRange(a1); 1477 a1 *= kRad2Deg; 1398 1478 1399 1479 const ZdAz a2 = a1*16384/360; … … 1403 1483 } 1404 1484 return (void*)0xa17a; 1485 1486 case WM_ENDSWITCH: 1487 { 1488 ZdAz pos = GetSePos()*TMath::Pi()*2/16384; 1489 pos = fBending.SubtractOffsets(pos)*kRad2Deg; 1490 1491 cout << "Endswitch Position: Zd=" << pos.Zd() << "° Az="; 1492 cout << pos.Az() << "°" << endl; 1493 } 1494 1495 return (void*)0x1010; 1405 1496 1406 1497 case WM_QUIT: … … 1436 1527 fMin.Set(zmin, amin); 1437 1528 1438 cout << " Min: " << zmin << "deg " << amin << "deg" << endl;1439 1440 1529 const Double_t amax = env.GetValue("Az_Max[deg]", 305.0); 1441 1530 const Double_t zmax = env.GetValue("Zd_Max[deg]", 98.25); 1442 1531 fMax.Set(zmax, amax); 1443 1444 cout << " Max: " << zmax << "deg " << amax << "deg" << endl; 1532 cout << "done." << endl; 1533 1534 cout << " * Min: " << zmin << "deg " << amin << "deg" << endl; 1535 cout << " * Max: " << zmax << "deg " << amax << "deg" << endl; 1536 1537 fMin = fBending.AddOffsets(fMin/kRad2Deg); 1538 fMax = fBending.AddOffsets(fMax/kRad2Deg); 1539 1540 cout << " * Min': " << fMin.Zd()*kRad2Deg << "deg " << fMin.Az()*kRad2Deg << "deg" << endl; 1541 cout << " * Max': " << fMax.Zd()*kRad2Deg << "deg " << fMax.Az()*kRad2Deg << "deg" << endl; 1445 1542 1446 1543 cout << "Reading gear ratios..." << flush; … … 1515 1612 return; 1516 1613 1517 lout << " Tracking Thread started..." << endl;1614 lout << "- Tracking Thread started..." << endl; 1518 1615 1519 1616 SlaStars sla(fObservatory); … … 1616 1713 ZdAz soll(sollzd.Zd(), sollaz.Az()); // [rad] 1617 1714 1618 AlignTrackingPos(soll*kRad2Deg, fZdAzSoll);1715 fZdAzSoll = AlignTrackingPos(soll); 1619 1716 1620 1717 ist *= TMath::Pi()*2/16384; … … 1628 1725 } 1629 1726 1630 lout << " Tracking Thread done." << endl;1727 lout << "- Tracking Thread done." << endl; 1631 1728 1632 1729 //--- fout << endl << endl; … … 1818 1915 ZdAz MCosy::GetPointingPos() const 1819 1916 { 1917 if (fZd1->IsZombieNode() || fZd2->IsZombieNode() || fAz->IsZombieNode()) 1918 return ZdAz(0, 0); 1919 1820 1920 // GetPointingPos [deg] 1821 1921 const ZdAz seist = GetSePos()*2*TMath::Pi()/16384; // [se] 1822 return fBending.CorrectBack(seist)*180/TMath::Pi(); 1922 1923 cout << seist.Zd()*kRad2Deg << " " << seist.Az()*kRad2Deg << endl; 1924 1925 ZdAz back = fBending.CorrectBack(seist)*180/TMath::Pi(); 1926 1927 cout << back.Zd() << " " << back.Az() << endl; 1928 1929 return back; 1823 1930 } 1824 1931 … … 1865 1972 // FIXME: Not thread safe! 1866 1973 static int i=0; 1867 if (i++== 8)1974 if (i++==7) 1868 1975 { 1869 1976 fCom->SendReport(fStatus, fRaDec, fZdAzSoll, bendist, fTrackingError); … … 2002 2109 // Don't call this function twice! 2003 2110 Network::Start(); 2111 2112 CheckForError(); 2004 2113 2005 2114 ReadConfig(); … … 2180 2289 // temp(°C) pressure(mB) height(m) humidity(1) wavelength(microm) troplapserate(K/m) 2181 2290 2182 fCom = new MDriveCom( out);2291 fCom = new MDriveCom(this, out); 2183 2292 fCom->Start(); 2184 2293 } -
trunk/MagicSoft/Cosy/main/MCosy.h
r2384 r2518 31 31 #define WM_TRACKPOS 0x100e 32 32 #define WM_POSITION1 0x100f 33 #define WM_ENDSWITCH 0x1010 33 34 34 35 class ShaftEncoder; … … 115 116 ofstream *tpout; 116 117 117 Bool_t AlignTrackingPos(ZdAz pointing, ZdAz &za) const; 118 //Bool_t AlignTrackingPos(ZdAz pointing, ZdAz &za) const; 119 ZdAz AlignTrackingPos(ZdAz pointing) const; 118 120 Bool_t CheckRange(const ZdAz &d) const; 119 121 Double_t Starguider(Double_t mjd, ZdAz &dest) const; -
trunk/MagicSoft/Cosy/main/MStarguider.cc
r2278 r2518 176 176 fInterpol->AddEntry("2", IDM_kInterpol2); 177 177 fInterpol->AddEntry("Off", IDM_kInterpol1); 178 fInterpol->CheckEntry(IDM_kInterpol1);179 178 fInterpol->Associate(this); 180 179 fList->Add(fInterpol); 181 180 182 fIntRate = 1; 181 TString disp=gVirtualX->DisplayName(); 182 if (disp.First(':')>0) 183 disp=disp(0, disp.First(':')); 184 185 if (disp.IsNull() || disp==(TString)"localhost") 186 { 187 fInterpol->CheckEntry(IDM_kInterpol1); 188 fIntRate = 1; 189 } 190 else 191 { 192 fInterpol->CheckEntry(IDM_kInterpol125); 193 fIntRate = 125; 194 } 183 195 184 196 fSetup = new MGPopupMenu(p); … … 347 359 gVirtualX->GrabButton(fId, kButton2, 0, 0, 0, 0, kTRUE); 348 360 349 fTimer=new TTimer(this, 1000/25); // 100ms361 fTimer=new TTimer(this, 1000/25); // 40ms 350 362 fTimer->TurnOn(); 351 363
Note:
See TracChangeset
for help on using the changeset viewer.