ハイパー・マイコン mbedでインターネット 電子工作 6章 リスト6-1 Camera-XBeeWifi のプログラム

Dependencies:   CameraC1098 TextLCD mbed

main.cpp

Committer:
sunifu
Date:
2014-07-13
Revision:
0:c9cd08c93546

File content as of revision 0:c9cd08c93546:

/**
 * CameraXBeeWifi program.
 *
 * CameraC328Library
 * Copyright (C) 2010 Shinichiro Nakamura (CuBeatSystems)
 * http://shinta.main.jp/
 *
 * CameraC1098-SS Library
 * Copyright (C) 2012 Tadao Iida
 */

#include "mbed.h"
#include "CameraC1098.h"
#include "TextLCD.h"

TextLCD lcd(p24, p26, p27, p28, p29, p30);

CameraC1098 camera(p9, p10);

Serial xbeewifi(p13,p14);

/**
 * A callback function for jpeg images.
 * You can block this function until saving the image datas.
 *
 * @param buf A pointer to the image buffer.
 * @param siz A size of the image buffer.
 */
void jpeg_callback(char *buf, size_t siz) {
    
    for (int i = 0; i < (int)siz; i++) {
        xbeewifi.putc(buf[i]) ;
    }
    
}

void sync(void) {
    CameraC1098::ErrorNumber err = CameraC1098::NoError;

    err = camera.sync();
    lcd.locate(0,0);
    if (CameraC1098::NoError == err) {
        printf("[ OK ] : CameraC1098::sync\r\n");
        lcd.printf("Camera Sync [OK]");
    } else {
        printf("[FAIL] : CameraC1098::sync (Error=%02X)\r\n", (int)err);
        lcd.printf("Camera init [NG]");
    }
}

void test_jpeg_snapshot_picture(void) {
    CameraC1098::ErrorNumber err = CameraC1098::NoError; 
    
    err = camera.getJpegSnapshotPicture(jpeg_callback);

    lcd.locate(0,0);        
    if (CameraC1098::NoError == err) {
        printf("[ OK ] : CameraC1098::getJpegSnapshotPicture\r\n");
        lcd.printf("Camera send [OK]");
    } else {
        printf("[FAIL] : CameraC1098::getJpegSnapshotPicture (Error=%02X)\r\n", (int)err);
        lcd.printf("Camera send [NG]");
    }
}

int main() {

    wait(2.0) ;
   
    printf("\r\n");
    printf("==========\r\n"); 
    printf("CameraC1098\r\n");
    printf("==========\r\n");
    CameraC1098::ErrorNumber err = CameraC1098::NoError;
    
    err = camera.init(CameraC1098::Baud230400, CameraC1098::JpegResolution320x240);
    
    camera.setmbedBaud( CameraC1098::Baud230400 );
    
    xbeewifi.baud(230400);
        
    lcd.locate(0,0);    
    
    if (CameraC1098::NoError == err) {
        printf("[ OK ] : CameraC1098::init\r\n") ;
        lcd.printf("Camera init [OK]");
    } else {
        printf("[FAIL] : CameraC1098::init (Error=%02X)\r\n", (int)err) ;
        lcd.printf("Camera init [NG]");
        exit(-1);
    }
         
    sync();     
     
    while(1){    
        lcd.locate(0,1);
        lcd.printf("pictshort       ");
        test_jpeg_snapshot_picture();
     }                
}