Ramiro Rubio / Mbed 2 deprecated Camara

Dependencies:   mbed

main.cpp

Committer:
RAMIRORUBIO
Date:
2016-04-26
Revision:
1:9855b1065eae
Parent:
0:63fef0f8da41

File content as of revision 1:9855b1065eae:

#include "mbed.h"
Serial pc(USBTX, USBRX); // tx, rx
Serial wifi(PTE22,PTE23);
Serial cam(PTC4,PTC3);
DigitalOut myled(LED1);
unsigned char reset[]={0x56,0x00,0x26,0x00};
unsigned char init_end[]="Init end";
unsigned char take_pic[]={0x56,0x00,0x36,0x01,0x00};
unsigned char taking_pic[]={0x76,0x00,0x36,0x00,0x00};
unsigned char read_size[]={0x56,0x00,0x34,0x01,0x00};
unsigned char return_size[]={0x76,0x00,0x34,0x00,0x04,0x00,0x00};
unsigned char read_pic[]={0x56,0x00,0x32,0x0C,0x00,0x0A,0x00,0x00,0x00,0x00,0x00,0x00};
unsigned char wait_time[]={0x00,0x0A};
unsigned char stop_pic[]={0x56,0x00,0x36,0x01,0x03};
unsigned char size[2];
unsigned char data_ready;
unsigned char buff[13000];
unsigned int i;
unsigned int j;
unsigned int hex_size;
unsigned char rem;
int main() {
    i=0;
    myled=0;
    cam.baud(38400);
    do
    {
        cam.printf("%c",reset[i++]);
    }while(i<4);
    i=0;
    pc.printf("reset\n");
    do
    {
        if(cam.getc()==init_end[i])
        {
            i++;
        };
    }while(init_end[i]);
    pc.printf("START\n");
    
    
    i=0;
    do
    {
        cam.printf("%c",take_pic[i++]);  
    }while(i<5);
    i=0;
    do
    {
        if(cam.getc()==taking_pic[i])
        {
            i++;
        };
    }while(i<5);
    i=0;
    pc.printf("pic taken\n");
    wait(1);
    do
    {
        cam.printf("%c",read_size[i++]);   
    }while(i<5);
    i=0;
    do
    {
        if(cam.getc()==return_size[i])
        {
            i++;
        };
        
    }while(i<7);
    i=0;  
    size[0]=cam.getc();
    size[1]=cam.getc();
    hex_size=0;
    hex_size=size[0];
    hex_size=(hex_size<<8)+size[1];
    
    pc.printf("%x",hex_size);
    
    rem=hex_size%4;
    
    pc.printf("%x",rem);
    do
    { 
        cam.printf("%c",read_pic[i++]);  
    }while(i<12);
    i=0;
    do
    {
        cam.printf("%c",size[i++]); 
    }while(i<2);
    i=0;
    do
    {
        cam.printf("%c",wait_time[i++]);   
    }while(i<2);
    i=0;
    do
    {
        buff[i]=cam.getc();
        if(buff[i]==0xFF & !data_ready)
        {
            data_ready++;
        }
        else if(buff[i]==0xD9 & data_ready)
        {
            data_ready++;
        }
        else
        {
            data_ready=0;
        }
        i++;
    }while(data_ready<2);
    pc.printf("FOTO");
    j=5;
    myled=1;
    do
    {
        pc.printf("%c",buff[(j++)]);
    }while(j<i);
    j=5;

    wifi.printf("%s","file.open(\"http/test.jpg\",\"w+\")\r");
    wait(0.2);
    wifi.printf("%s","uart.on(\"data\",4,\r");
    wait(0.1);
    wifi.printf("%s","function(data)\r");
    wait(0.1);
    wifi.printf("%s","print(\"receive from uart:\", data)\r");
    wait(0.1);
    wifi.printf("%s","file.write(data)\r");
    wait(0.1);
    wifi.printf("%s","if data==\"quit\" then\r");
    wait(0.1);
    wifi.printf("%s","print(\"success\")\r");
    wait(0.1);
    wifi.printf("%s","uart.on(\"data\")\r");
    wait(0.1);
    wifi.printf("%s","end\r");
    wait(0.1);
    wifi.printf("%s","end, 0)\r");
    wait(0.1);
    do
    {
        wifi.printf("%c",buff[(j++)]);
        wait(0.007);
    }while(j<i);
    wifi.printf("%s","quit");
    wait(1);
    wifi.printf("%s","file.close()\r");
}