Simple USBHost WebCam test program
Dependencies: F401RE-USBHost mbed
Fork of KL46Z-USBHostC270_example by
WebカメラからJPEG画像を読み取るテストプログラムです。
使い方はKL46Z-USBHostC270_exampleと同じです。
動作確認カメラ: Logitech C270, Logitech C210, Logitech Q200R(Qcam Orbit AF), LifeCam VX-500
main.cpp
- Committer:
- va009039
- Date:
- 2014-01-28
- Revision:
- 1:22304b8f8395
- Parent:
- 0:a72d9b047d8d
- Child:
- 2:2a40888db9fc
File content as of revision 1:22304b8f8395:
#include "USBHostCam.h" RawSerial pc(USBTX, USBRX); DigitalOut led1(LED_GREEN); DigitalOut led2(LED_RED); #define LED_OFF 1 #define LED_ON 0 #if defined(TARGET_KL46Z) uint8_t image_buf[1024*24]; #elif defined(TARGET_KL25Z) uint8_t image_buf[1024*12]; #endif int main() { pc.baud(9600); led1 = led2 = LED_OFF; // Logitech C270 USBHostCam* cam = new USBHostCam(_320x240); int pos = 0; int size = 0; Timer t; for(int seq = 0;;) { int c = -1; if (pc.readable()) { c = pc.getc(); } switch(seq) { case 0: pc.printf("\nReady, please download JPEG using XMODEM from FRDM-KL46Z.\n"); t.start(); seq++; break; case 1: if (c == 0x15) { // NAK size = cam->readJPEG(image_buf, sizeof(image_buf)); pos = 0; seq++; } break; case 2: if (pos >= size) { pc.putc(0x04); // EOT } else { pc.putc(0x01); // SOH uint8_t block = pos/128 + 1; pc.putc(block); pc.putc(block ^ 0xff); uint8_t checksum = 0x00; for(int i = 0; i < 128; i++) { uint8_t c = image_buf[pos + i]; checksum += c; pc.putc(c); } pc.putc(checksum); } seq++; t.reset(); led2 = !led2; break; case 3: if (c == 0x06) { // ACK if (pos >= size) { seq = 0; } else { pos += 128; seq--; } } break; } if (t.read_ms() > 15*1000) { // timeout t.reset(); seq = 0; } cam->poll(); } }