エレキジャック Web版 マイコン・カーを製作してみよう<17> カメラで撮影した画像をパソコンに表示するためのプログラムです。http://www.eleki-jack.com/arm/2012/08/17.html パソコン用のプログラムはC1098View.exeです。詳しくはエレキジャックのページを参照ください。

Dependencies:   CameraC1098 TextLCD mbed

C1098シリアルカメラをmbedで制御しています。mbedからPCへ送った画像データをC1098View.exeで表示したものです。 /media/uploads/sunifu/-15__c1098view_----.jpg

詳しくはエレキジャックのページを参照ください。 マイコン・カーを製作してみよう(16) http://www.eleki-jack.com/arm/2012/08/16.html マイコン・カーを製作してみよう(17) http://www.eleki-jack.com/arm/2012/08/17.html

Committer:
sunifu
Date:
Mon Sep 03 14:29:41 2012 +0000
Revision:
0:985e1f891b2e
V1.0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sunifu 0:985e1f891b2e 1 #include "mbed.h"
sunifu 0:985e1f891b2e 2 #include "CameraC1098.h"
sunifu 0:985e1f891b2e 3 #include "TextLCD.h"
sunifu 0:985e1f891b2e 4
sunifu 0:985e1f891b2e 5 static char buf[256+1];
sunifu 0:985e1f891b2e 6
sunifu 0:985e1f891b2e 7 TextLCD lcd(p24, p26, p27, p28, p29, p30);
sunifu 0:985e1f891b2e 8 CameraC1098 camera(p9, p10);
sunifu 0:985e1f891b2e 9 Serial pc(p13,p14);
sunifu 0:985e1f891b2e 10
sunifu 0:985e1f891b2e 11 /**
sunifu 0:985e1f891b2e 12 * A callback function for jpeg images.
sunifu 0:985e1f891b2e 13 * You can block this function until saving the image datas.
sunifu 0:985e1f891b2e 14 *
sunifu 0:985e1f891b2e 15 * @param buf A pointer to the image buffer.
sunifu 0:985e1f891b2e 16 * @param siz A size of the image buffer.
sunifu 0:985e1f891b2e 17 */
sunifu 0:985e1f891b2e 18 void jpeg_callback(char *buf, size_t siz) {
sunifu 0:985e1f891b2e 19 for (int i = 0; i < (int)siz; i++) {
sunifu 0:985e1f891b2e 20 pc.putc(buf[i]);
sunifu 0:985e1f891b2e 21 }
sunifu 0:985e1f891b2e 22 }
sunifu 0:985e1f891b2e 23
sunifu 0:985e1f891b2e 24 /**
sunifu 0:985e1f891b2e 25 * Synchronizing.
sunifu 0:985e1f891b2e 26 */
sunifu 0:985e1f891b2e 27 void sync(void) {
sunifu 0:985e1f891b2e 28 CameraC1098::ErrorNumber err = CameraC1098::NoError;
sunifu 0:985e1f891b2e 29
sunifu 0:985e1f891b2e 30 err = camera.sync();
sunifu 0:985e1f891b2e 31 lcd.locate(0,0);
sunifu 0:985e1f891b2e 32 if (CameraC1098::NoError == err) {
sunifu 0:985e1f891b2e 33 printf("[ OK ] : CameraC1098::sync\r\n");
sunifu 0:985e1f891b2e 34 lcd.printf("C1098:Sync [OK] ");
sunifu 0:985e1f891b2e 35
sunifu 0:985e1f891b2e 36 } else {
sunifu 0:985e1f891b2e 37 printf("[FAIL] : CameraC1098::sync (Error=%02X)\r\n", (int)err);
sunifu 0:985e1f891b2e 38 lcd.printf("C1098:Sync[FAIL]");
sunifu 0:985e1f891b2e 39 }
sunifu 0:985e1f891b2e 40 }
sunifu 0:985e1f891b2e 41
sunifu 0:985e1f891b2e 42
sunifu 0:985e1f891b2e 43 /**
sunifu 0:985e1f891b2e 44 * A test function for jpeg snapshot picture.
sunifu 0:985e1f891b2e 45 */
sunifu 0:985e1f891b2e 46 void test_jpeg_snapshot_picture() {
sunifu 0:985e1f891b2e 47 CameraC1098::ErrorNumber err = CameraC1098::NoError;
sunifu 0:985e1f891b2e 48
sunifu 0:985e1f891b2e 49 err = camera.getJpegSnapshotPicture(jpeg_callback);
sunifu 0:985e1f891b2e 50 lcd.locate(0,1);
sunifu 0:985e1f891b2e 51 if (CameraC1098::NoError == err) {
sunifu 0:985e1f891b2e 52 printf("[ OK ] : CameraC1098::getJpegSnapshotPicture\r\n");
sunifu 0:985e1f891b2e 53 lcd.printf("getJpgPict [OK] ");
sunifu 0:985e1f891b2e 54 } else {
sunifu 0:985e1f891b2e 55 printf("[FAIL] : CameraC1098::getJpegSnapshotPicture (Error=%02X)\r\n", (int)err);
sunifu 0:985e1f891b2e 56 lcd.printf("getJpgPict[FAIL]");
sunifu 0:985e1f891b2e 57 }
sunifu 0:985e1f891b2e 58 }
sunifu 0:985e1f891b2e 59
sunifu 0:985e1f891b2e 60 /**
sunifu 0:985e1f891b2e 61 * A entry point.
sunifu 0:985e1f891b2e 62 */
sunifu 0:985e1f891b2e 63 int main() {
sunifu 0:985e1f891b2e 64 printf("\r\n");
sunifu 0:985e1f891b2e 65 printf("==========\r\n");
sunifu 0:985e1f891b2e 66 printf("CameraC1098\r\n");
sunifu 0:985e1f891b2e 67 printf("==========\r\n");
sunifu 0:985e1f891b2e 68 CameraC1098::ErrorNumber err = CameraC1098::NoError;
sunifu 0:985e1f891b2e 69 err = camera.init(CameraC1098::Baud460800, CameraC1098::JpegResolution320x240);
sunifu 0:985e1f891b2e 70 camera.setmbedBaud( CameraC1098::Baud460800 );
sunifu 0:985e1f891b2e 71 pc.baud(460800);
sunifu 0:985e1f891b2e 72
sunifu 0:985e1f891b2e 73 lcd.cls();
sunifu 0:985e1f891b2e 74 lcd.locate(0,0);
sunifu 0:985e1f891b2e 75 if (CameraC1098::NoError == err) {
sunifu 0:985e1f891b2e 76 printf("[ OK ] : CameraC1098::init\r\n");
sunifu 0:985e1f891b2e 77 lcd.printf("C1098:init [OK] ");
sunifu 0:985e1f891b2e 78 } else {
sunifu 0:985e1f891b2e 79 printf("[FAIL] : CameraC1098::init (Error=%02X)\r\n", (int)err);
sunifu 0:985e1f891b2e 80 lcd.printf("C1098:init[FAIL]");
sunifu 0:985e1f891b2e 81 }
sunifu 0:985e1f891b2e 82 sync();
sunifu 0:985e1f891b2e 83
sunifu 0:985e1f891b2e 84 while(1){
sunifu 0:985e1f891b2e 85 test_jpeg_snapshot_picture();
sunifu 0:985e1f891b2e 86 }
sunifu 0:985e1f891b2e 87 return 0;
sunifu 0:985e1f891b2e 88 }