自動對焦縮放系統實驗
三、實驗原理
程式範例
 
//---------------------------------------------------------------------------
#include <vcl\vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma link "TCeyes"
#pragma link "comthread"
#pragma resource "*.dfm"
TForm1 *Form1;
bool IsStartCap=false;
int aa=40;
int bb=400;
int s=40;
int q;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
 : TForm(Owner)
{
  Form1->Top=0;
  Form1->Left=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  ComThread1->ComInit();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  ComThread1->Write(":WFCBB99");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
   ComThread1->Write(":WFCBB9B");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
  ComThread1->ComClose();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Ceyes1ReceiveImage(TObject *Sender)
{
  Ceyes1->CopyImageToCanvas(PaintBox1->Canvas);
  Canvas->Pen->Color=clBlack;
  Canvas->Pen->Width=1;
  Canvas->MoveTo(40,550);
  Canvas->LineTo(40,350);
  Canvas->LineTo(750,350);
  Canvas->LineTo(750,550);
  Canvas->LineTo(40,550);
  Canvas->Pen->Color=clBlue;
  Canvas->Pen->Width=1;
  Canvas->MoveTo(40,420);
  Canvas->LineTo(750,420);
  Canvas->MoveTo(40,440);
  Canvas->LineTo(750,440);
  Canvas->TextOut(7,415,13000);
  Canvas->TextOut(7,435,11000);

  if(!IsStartCap)return;
  if(Ceyes1->ByteCount==3)
{
int Total=Ceyes1->ImageSizeOfBytes;
int width=Ceyes1->ImageWidth;
int height=Ceyes1->ImageHeight;
unsigned char *Ptr=(unsigned char*)Ceyes1->ImagePtr;
int cont=0;

for(int k=0;k<=Total;k=k+3)
{
  int gray;
  gray=*(Ptr+2+k);
  if(gray<=60)
  {
     cont=cont+1;
     *(Ptr+k)=0;
     *(Ptr+1+k)=0;
     *(Ptr+2+k)=0;
   }
   else
   {
     *(Ptr+k)=255;
     *(Ptr+1+k)=255;
     *(Ptr+2+k)=255;
   }
}

Label1->Caption=cont;
if(cont>=13000 )
{
  ComThread1->Write(":WFCBB9B");

  for(int i=0;i<=1700;i++)
  {
    for(int j=0;j<=900;j++)
    {
    }
  }

  ComThread1->Write(":WFCBBFE");
}
else
{
if(cont<=11000)
{
  ComThread1->Write(":WFCBB99");

  for(int i=0;i<=1700;i++)
  {
    for(int j=0;j<=900;j++)
    {
    }
  }

  ComThread1->Write(":WFCBBFE");
}
}
//曲線圖
Canvas->MoveTo(aa,bb);
s=s+1;
q=450-(cont-10000)/100;
aa=s;
bb=q;

Canvas->Pen->Color=clRed;
Canvas->Pen->Width=1;
Canvas->LineTo(s,q);

if(s==750)
{
aa=40;
bb=q;
s=40;
Refresh();
}
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
IsStartCap=true;
//Ceyes1->MeltImage();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
IsStartCap=false;
//Ceyes1->FreezeImage();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
ComThread1->Write(":WFCBBFE");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
//Refresh();
}
//---------------------------------------------------------------------------
 

 
 
 
回本實驗目錄
回「光電產業自動化檢測技術專題」