Mitesh Patel
/
CameraC328_TestProgram1
Embed:
(wiki syntax)
Show/hide line numbers
main.cpp
00001 /** 00002 * Test program. 00003 * 00004 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems) 00005 * http://shinta.main.jp/ 00006 */ 00007 00008 #include "mbed.h" 00009 #include "CameraC328.h" 00010 00011 DigitalIn pir(p6); 00012 DigitalOut led(LED1); 00013 00014 //InterruptIn PIR(p6); 00015 00016 LocalFileSystem fs ("fs"); 00017 00018 CameraC328 camera(p9, p10, CameraC328::Baud115200); 00019 const int IMG_X = 80; 00020 const int IMG_Y = 60; 00021 char buf[IMG_X * IMG_Y * 2]; 00022 FILE *fp_jpeg; 00023 00024 void uncompressed_callback(size_t done, size_t total, char c) { 00025 buf[done - 1] = c; 00026 } 00027 00028 void jpeg_callback(char *buf, size_t siz) { 00029 for (int i = 0; i < (int)siz; i++) { 00030 fprintf(fp_jpeg, "%c", buf[i]); 00031 } 00032 } 00033 void sync(void) { 00034 CameraC328::ErrorNumber err = CameraC328::NoError; 00035 00036 err = camera.sync(); 00037 if (CameraC328::NoError == err) { 00038 printf("[ OK ] : CameraC328::sync\n"); 00039 } else { 00040 printf("[FAIL] : CameraC328::sync (Error=%02X)\n", (int)err); 00041 00042 } 00043 } 00044 00045 void test_uncompressed_snapshot_picture(void) { 00046 CameraC328::ErrorNumber err = CameraC328::NoError; 00047 00048 err = camera.init(CameraC328::Color16bit, CameraC328::RawResolution80x60, CameraC328::JpegResolution160x128); 00049 if (CameraC328::NoError == err) { 00050 printf("[ OK ] : CameraC328::init\n"); 00051 } else { 00052 printf("[FAIL] : CameraC328::init (Error=%02X)\n", (int)err); 00053 } 00054 00055 for (int i = 0; i < 1; i++) { 00056 err = camera.getUncompressedSnapshotPicture(uncompressed_callback); 00057 if (CameraC328::NoError == err) { 00058 printf("[ OK ] : CameraC328::getUncompressedSnapshotPicture\n"); 00059 } else { 00060 printf("[FAIL] : CameraC328::getUncompressedSnapshotPicture (Error=%02X)\n", (int)err); 00061 } 00062 00063 char fname[64]; 00064 snprintf(fname, sizeof(fname), "/fs/ucss%04d.ppm", i); 00065 FILE *fp = fopen(fname, "w"); 00066 fprintf(fp, "P3\n"); 00067 fprintf(fp, "%d %d\n", IMG_X, IMG_Y); 00068 fprintf(fp, "%d\n", 255); 00069 for (int y = 0; y < IMG_Y; y++) { 00070 for (int x = 0; x < IMG_X; x++) { 00071 int adrofs = y * (IMG_X * 2) + (x * 2); 00072 uint16_t dat = (buf[adrofs + 0] << 8) | (buf[adrofs + 1] << 0); 00073 uint8_t r = ((dat >> 11) & 0x1f) << 3; 00074 uint8_t g = ((dat >> 5) & 0x3f) << 2; 00075 uint8_t b = ((dat >> 0) & 0x1f) << 3; 00076 fprintf(fp,"%d %d %d\n", r, g, b); 00077 } 00078 } 00079 fclose(fp); 00080 } 00081 } 00082 00083 void test_uncompressed_preview_picture(void) { 00084 CameraC328::ErrorNumber err = CameraC328::NoError; 00085 00086 err = camera.init(CameraC328::Color16bit, CameraC328::RawResolution80x60, CameraC328::JpegResolution160x128); 00087 if (CameraC328::NoError == err) { 00088 printf("[ OK ] : CameraC328::init\n"); 00089 } else { 00090 printf("[FAIL] : CameraC328::init (Error=%02X)\n", (int)err); 00091 } 00092 00093 for (int i = 0; i < 1; i++) { 00094 err = camera.getUncompressedPreviewPicture(uncompressed_callback); 00095 if (CameraC328::NoError == err) { 00096 printf("[ OK ] : CameraC328::getUncompressedPreviewPicture\n"); 00097 } else { 00098 printf("[FAIL] : CameraC328::getUncompressedPreviewPicture (Error=%02X)\n", (int)err); 00099 } 00100 00101 char fname[64]; 00102 snprintf(fname, sizeof(fname), "/fs/ucpv%04d.ppm", i); 00103 FILE *fp = fopen(fname, "w"); 00104 fprintf(fp, "P3\n"); 00105 fprintf(fp, "%d %d\n", IMG_X, IMG_Y); 00106 fprintf(fp, "%d\n", 255); 00107 for (int y = 0; y < IMG_Y; y++) { 00108 for (int x = 0; x < IMG_X; x++) { 00109 int adrofs = y * (IMG_X * 2) + (x * 2); 00110 uint16_t dat = (buf[adrofs + 0] << 8) | (buf[adrofs + 1] << 0); 00111 uint8_t r = ((dat >> 11) & 0x1f) << 3; 00112 uint8_t g = ((dat >> 5) & 0x3f) << 2; 00113 uint8_t b = ((dat >> 0) & 0x1f) << 3; 00114 fprintf(fp,"%d %d %d\n", r, g, b); 00115 } 00116 } 00117 fclose(fp); 00118 } 00119 } 00120 00121 void test_jpeg_snapshot_picture(void) { 00122 CameraC328::ErrorNumber err = CameraC328::NoError; 00123 00124 err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution160x120, CameraC328::JpegResolution640x480); 00125 if (CameraC328::NoError == err) { 00126 printf("[ OK ] : CameraC328::init\n"); 00127 } else { 00128 printf("[FAIL] : CameraC328::init (Error=%02X)\n", (int)err); 00129 } 00130 00131 for (int i = 0; i < 1; i++) { 00132 char fname[64]; 00133 snprintf(fname, sizeof(fname), "/fs/jpss%04d.jpg", i); 00134 fp_jpeg = fopen(fname, "w"); 00135 00136 err = camera.getJpegSnapshotPicture(jpeg_callback); 00137 if (CameraC328::NoError == err) { 00138 printf("[ OK ] : CameraC328::getJpegSnapshotPicture\n"); 00139 } else { 00140 printf("[FAIL] : CameraC328::getJpegSnapshotPicture (Error=%02X)\n", (int)err); 00141 } 00142 00143 fclose(fp_jpeg); 00144 } 00145 } 00146 00147 void test_jpeg_preview_picture(void) { 00148 // sync(); 00149 CameraC328::ErrorNumber err = CameraC328::NoError; 00150 00151 err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution160x120, CameraC328::JpegResolution640x480); 00152 if (CameraC328::NoError == err) { 00153 printf("[ OK ] : CameraC328::init\n"); 00154 } else { 00155 printf("[FAIL] : CameraC328::init (Error=%02X)\n", (int)err); 00156 } 00157 00158 for (int i = 0; i < 1; i++) { 00159 char fname[64]; 00160 snprintf(fname, sizeof(fname), "/fs/jppv%04d.jpg", i); 00161 fp_jpeg = fopen(fname, "w"); 00162 00163 00164 err = camera.getJpegPreviewPicture(jpeg_callback); 00165 if (CameraC328::NoError == err) { 00166 printf("[ OK ] : CameraC328::getJpegPreviewPicture\n"); 00167 } else { 00168 printf("[FAIL] : CameraC328::getJpegPreviewPicture (Error=%02X)\n", (int)err); 00169 } 00170 00171 00172 00173 00174 fclose(fp_jpeg); 00175 00176 FILE *fp = fopen("/fs/pic.htm", "w"); // Open local filename 00177 fprintf(fp, "<title> cam test page </title>\n"); 00178 fprintf(fp, "<body> cam test page "); 00179 fprintf(fp,"<div id='my_area' align='center'>"); 00180 fprintf(fp, "<IMG SRC='JPPV0000.jpg'>"); 00181 fprintf(fp, " </body>\n"); 00182 fprintf(fp, "</a>"); 00183 fclose(fp); 00184 00185 } 00186 } 00187 00188 /*void INTR_handler() { 00189 sync(); 00190 00191 test_jpeg_preview_picture(); 00192 }*/ 00193 00194 int main() { 00195 00196 printf("CameraC328\n"); 00197 00198 00199 //PIR.rise(&INTR_handler); 00200 00201 sync(); 00202 00203 while(1){ 00204 //printf("CameraC328\n\r"); 00205 // sync(); 00206 00207 // test_jpeg_preview_picture(); 00208 // test_uncompressed_preview_picture(); 00209 // test_uncompressed_snapshot_picture(); 00210 //test_jpeg_snapshot_picture(); 00211 if(pir==1){ 00212 printf("somebody detected\n"); 00213 00214 sync(); 00215 test_jpeg_preview_picture(); 00216 00217 00218 00219 00220 } 00221 led=!led; 00222 wait(0.5); 00223 00224 } 00225 00226 00227 return 0; 00228 }
Generated on Thu Jul 14 2022 13:54:59 by 1.7.2