/* "simplest", example of simply enumerating the available devices with ESCAPI */ #include #include "escapi.h" void main() { int i, j; /* Initialize ESCAPI */ int devices = setupESCAPI(); if (devices == 0) { printf("ESCAPI initialization failure or no devices found.\n"); return; } /* Set up capture parameters. * ESCAPI will scale the data received from the camera * (with point sampling) to whatever values you want. * Typically the native resolution is 320*240. */ struct SimpleCapParams capture; capture.mWidth = 24; capture.mHeight = 18; capture.mTargetBuf = new int[24 * 18]; /* Initialize capture - only one capture may be active per device, * but several devices may be captured at the same time. * * 0 is the first device. */ if (initCapture(0, &capture) == 0) { printf("Capture failed - device may already be in use.\n"); return; } /* Go through 10 capture loops so that the camera has * had time to adjust to the lighting conditions and * should give us a sane image.. */ for (i = 0; i < 10; i++) { /* request a capture */ doCapture(0); while (isCaptureDone(0) == 0) { /* Wait until capture is done. * Warning: if capture init failed, or if the capture * simply fails (i.e, user unplugs the web camera), this * will be an infinite loop. */ } } /* now we have the data.. what shall we do with it? let's * render it in ASCII.. (using 3 top bits of green as the value) */ char light[] = " .,-o+O0@"; for (i = 0; i < 18; i++) { for (j = 0; j < 24; j++) { printf("%c", light[(capture.mTargetBuf[i*24+j] >> 13) & 7]); } printf("\n"); } deinitCapture(0); }