mbedとELECOM UCAM-DLA200HBKというwebカメラを使い、画像をjpgデータでSDカードまたは内部メモリに保存します。

Dependencies:   SDHCFileSystem_ChanNFSSD mbed uvchost

Revision:
0:3385ba2b8f13
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Feb 10 15:33:53 2013 +0000
@@ -0,0 +1,64 @@
+#if 1
+#include "mbed.h"
+#include "uvc.h"
+//#include "msc.h"
+#include "SDHCFileSystem.h"
+#include<vector>
+Serial pc(USBTX, USBRX);//Serial class 
+DigitalOut led1(LED1), led2(LED2), led3(LED3), led4(LED4);
+
+//SDFileSystem class 
+SDFileSystem sd(p5, p6, p7, p8, "sd");
+//#define FILENAME "/sd/cam%04d.jpg"
+
+//LocalFileSystem class
+LocalFileSystem local("local");
+#define FILENAME "/local/cam%04d.jpg"
+
+#define INTERVAL_MS 10000
+#define CAM_N 1
+#define SHOT_N 1
+
+vector <uvc*> vec_cam;
+Timer t;
+int main()
+{
+    pc.baud(9600);
+    wait_ms(1000);
+    printf("%s\n", __FILE__); //sourcefilename printout
+    printf("start!!\n");
+    //msc* usb = new msc("usb"); //usb storage class
+    //if (usb->setup() < 0) exit(1);
+    
+    FILE *fp;
+    if ((fp=fopen(FILENAME,"wb")) == NULL) return -1; //"wb" : write and binary mode
+    
+    for(int n = 0; n < CAM_N; n++) {
+        uvc* cam = new uvc(n);
+        cam->SetImageSize(320, 240);
+        cam->SetFrameInterval(2000000);
+        if (cam->setup() < 0) {
+            break;
+        }
+        vec_cam.push_back(cam);
+    }
+    t.start();
+    for (int n = 0; n < SHOT_N; n++) {
+        int cam = n % vec_cam.size();
+        t.reset();
+        char path[32];
+        //snprintf(path, sizeof(path), "/usb/cam%1d%03d.jpg", cam, n%100);
+        snprintf(path, sizeof(path), FILENAME, n);
+        int len = vec_cam[cam]->get_jpeg(path);
+        printf("%d %s %d\n", n, path, len);
+        while(t.read_ms() < INTERVAL_MS) {
+            for(int n = 0; n < vec_cam.size(); n++) {
+                vec_cam[n]->poll();
+            }
+        }
+    }
+    printf("finish!!\n");
+    fclose(fp);
+    exit(1);
+}
+#endif
\ No newline at end of file