Ik heb een lineedit waarin ik de status wat een programmam zet. Dit programma is een stukje software wat een foto neemt van een SBIG st-402 camera en dan deze toont.
Als ik begin met het maken van de foto, doe ik:
dan wordt de cursor stil gezet en wordt de i/o intensieve actie gedaan:
en de functie makeimage:
het vreemde is dat de text grabbing nooit komt, ik zie wel dat de cam de foto maakt (aan de hand van de status ledjes), ik zie ook dat als de foto klaar is de text "Grab complete, ready..." komt te staan en als het mis gaat "Grab error", maar nooit de text grabbing...
Hoe kan dit?
Ik maak gebruik van debian met kernel 2.6.12.4.
Als ik begin met het maken van de foto, doe ik:
C++:
1
| statusLine->setText("Grabbing..."); |
dan wordt de cursor stil gezet en wordt de i/o intensieve actie gedaan:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| QApplication::setOverrideCursor( waitCursor ); int err; pSbigImg = new CSBIGImg(); pSbigCam->SetExposureTime(dShutter); SBIG_DARK_FRAME df=SBDF_DARK_ALSO; //SBDF_LIGHT_ONLY; SBDF_DARK_ONLY; SBDF_DARK_ALSO if (iFrame==0) df=SBDF_LIGHT_ONLY; else if (iFrame==1) df=SBDF_DARK_ONLY; else if (iFrame==2) df=SBDF_DARK_ALSO; // reso 2=L, 1=M, 0=H pSbigCam->SetReadoutMode(iQuality); //ccd 0=imaging, 1=tracking pSbigCam->SetActiveCCD((CCD_REQUEST)0); if ( (err=pSbigCam->GrabImage(pSbigImg, df)) != CE_NO_ERROR ) { QApplication::restoreOverrideCursor(); QMessageBox::information((QWidget*)0, "Easy Count Project", "Grab error."); statusLine->setText("Grab error"); return; } makeImage(); statusLine->setText("Grab complete, ready..."); QApplication::restoreOverrideCursor(); |
en de functie makeimage:
C++:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| void MainForm::makeImage() { unsigned char *pDest; unsigned short *pVid; long back, range, vid; image.reset(); image.create(pSbigImg->GetWidth(), pSbigImg->GetHeight(),8); image.setNumColors(256); for(int i=0; i<256; i++) image.setColor(bInvertedVideo ? 255 - i : i, qRgb(i,i,i)); // palette maken pDest=image.bits(); back=pSbigImg->GetBackground(); range=pSbigImg->GetRange(); pVid=pSbigImg->GetImagePointer(); if (range < iMinRange ) range = iMinRange; for (int i=0;i<pSbigImg->GetHeight();i++) { for (int j=0; j<pSbigImg->GetWidth();j++) { vid=*pVid++; vid-=back; if (vid<0) vid=0; else if (vid>=range) vid=255; else vid=(vid*255)/range; pDest[j]=vid; } pDest+=image.bytesPerLine(); } pixmap.convertFromImage(image,0); Picture->setPixmap(pixmap); } |
het vreemde is dat de text grabbing nooit komt, ik zie wel dat de cam de foto maakt (aan de hand van de status ledjes), ik zie ook dat als de foto klaar is de text "Grab complete, ready..." komt te staan en als het mis gaat "Grab error", maar nooit de text grabbing...
Hoe kan dit?
Ik maak gebruik van debian met kernel 2.6.12.4.
[ Voor 26% gewijzigd door elgringo op 19-12-2005 09:59 ]
if broken it is, fix it you should