// フレームグラバー PXC200 で画像を入力するプログラム // for Visual C++ & ESPLIB // 1999/11/24 IN #include #include "pxc200.h" #include "frame.h" int fgh; PXC200 pxc; FRAME *frh; FRAMELIB frame; void ESP_Ready(void) { ESP_OpenTextWindow(0,0,300,500); ESP_CreateImage(0,"Image",320,0,640,480,100); } #define OK() ESP_Printf("OK!\n") #define NG() ESP_Printf("Failed!\n") void ESP_Main(void) { int iflag=0; int r; int *p; int *old; int i; ESP_Printf("OpenLibrary - pxc2_95.dll ... "); r=imagenation_OpenLibrary("pxc2_95.dll",&pxc,sizeof(pxc)); if(r){OK(); iflag |= 1;} else {NG(); goto fin;} ESP_Printf("OpenLibrary - frame_32.dll ... "); r=imagenation_OpenLibrary("frame_32.dll",&frame,sizeof(frame)); if(r){OK(); iflag |= 2;} else {NG(); goto fin;} ESP_Printf("AllocateFG ... "); r = fgh = pxc.AllocateFG(-1); if(r){OK(); iflag |= 4;} else {NG(); goto fin;} ESP_Printf("VideoType ... "); r=pxc.VideoType(fgh); if(r== 0)ESP_Printf(" No video\n"); if(r== 1)ESP_Printf(" NTSC\n"); if(r== 2)ESP_Printf(" PAL/SECAM\n"); if(r== 3)ESP_Printf(" Other\n"); if(r==-1)ESP_Printf(" Invalid fgh\n"); pxc.SetWidth(fgh,640); pxc.SetHeight(fgh,480); pxc.SetLeft(fgh,0); pxc.SetTop(fgh,0); pxc.SetXResolution(fgh,640); pxc.SetYResolution(fgh,480); r=pxc.ReadRevision(fgh); ESP_Printf("Board revision number is %d\n",r); ESP_Printf("AllocateBuffer ... "); frh = pxc.AllocateBuffer(640,480, PBITS_RGB32); if(frh!=NULL){OK(); iflag |= 8;} else {NG(); goto fin;} // select camera No.1 pxc.SetCamera(fgh,0,0); pxc.SetChromaControl(fgh,NOTCH_FILTER|BW_DETECT); p=frame.FrameBuffer(frh); ESP_Printf("Pointer to FrameBuffer ... %08XH\n",p); old=_ESP_VramPtr[0]; _ESP_VramPtr[0]=p; for(i=0;i<100;i++){ if(ESP_STOP)break; r=pxc.Grab(fgh,frh,0); //r=pxc.GrabContinuous(fgh,frh,-1,0); ESP_Printf("%03d _ Grabbed(%d)\n",i,r); ESP_Update(); } _ESP_VramPtr[0]=old; CopyMemory(_ESP_VramPtr[0],p,sizeof(int)*640*480); fin: if(iflag & 8) frame.FreeFrame(frh), ESP_Printf("FreeFrame done.\n"); if(iflag & 4) pxc.FreeFG(fgh), ESP_Printf("FreeFG done.\n"); if(iflag & 2) imagenation_CloseLibrary(&frame), ESP_Printf("CloseLibrary(frame) done.\n"); if(iflag & 1) imagenation_CloseLibrary(&pxc), ESP_Printf("CloseLibrary(pxc) done.\n"); }