mbed interface to jpeg engine (OV528) camera module
Dependencies: mbed uCAM_TTL120
mbed_uCAM_TTL_test.cpp@0:f0b5974a0c54, 2014-11-17 (annotated)
- Committer:
- jebradshaw
- Date:
- Mon Nov 17 21:04:05 2014 +0000
- Revision:
- 0:f0b5974a0c54
- Child:
- 1:9a1b5099488a
close to writing jpeg to filesystem;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jebradshaw | 0:f0b5974a0c54 | 1 | // mbed_uCAM_TTL120_test.c |
jebradshaw | 0:f0b5974a0c54 | 2 | // J Bradshaw 11-06-2014 |
jebradshaw | 0:f0b5974a0c54 | 3 | #include "mbed.h" |
jebradshaw | 0:f0b5974a0c54 | 4 | #include "uCAM_TTL120.h" |
jebradshaw | 0:f0b5974a0c54 | 5 | #include "stdio.h" |
jebradshaw | 0:f0b5974a0c54 | 6 | #include "stdlib.h" |
jebradshaw | 0:f0b5974a0c54 | 7 | |
jebradshaw | 0:f0b5974a0c54 | 8 | LocalFileSystem local("local");// Create the local filesystem under the name "local" |
jebradshaw | 0:f0b5974a0c54 | 9 | Serial pc(USBTX,USBRX); |
jebradshaw | 0:f0b5974a0c54 | 10 | uCAM_TTL120 cam(p28, p27); //Tx/Rx |
jebradshaw | 0:f0b5974a0c54 | 11 | DigitalOut myled(LED1); |
jebradshaw | 0:f0b5974a0c54 | 12 | DigitalOut camrst(p15); |
jebradshaw | 0:f0b5974a0c54 | 13 | |
jebradshaw | 0:f0b5974a0c54 | 14 | char picture[20000]; |
jebradshaw | 0:f0b5974a0c54 | 15 | /* |
jebradshaw | 0:f0b5974a0c54 | 16 | void write_local_file(char *filename, char data) |
jebradshaw | 0:f0b5974a0c54 | 17 | { |
jebradshaw | 0:f0b5974a0c54 | 18 | char c; |
jebradshaw | 0:f0b5974a0c54 | 19 | FILE *fp = fopen(filename, "w"); // Open file on the local file system for writing |
jebradshaw | 0:f0b5974a0c54 | 20 | while(true) |
jebradshaw | 0:f0b5974a0c54 | 21 | { |
jebradshaw | 0:f0b5974a0c54 | 22 | c = fgetc(fp); |
jebradshaw | 0:f0b5974a0c54 | 23 | pc.printf("%c", c); |
jebradshaw | 0:f0b5974a0c54 | 24 | if(c == 0xff) |
jebradshaw | 0:f0b5974a0c54 | 25 | break; |
jebradshaw | 0:f0b5974a0c54 | 26 | } |
jebradshaw | 0:f0b5974a0c54 | 27 | fclose(fp); |
jebradshaw | 0:f0b5974a0c54 | 28 | } |
jebradshaw | 0:f0b5974a0c54 | 29 | */ |
jebradshaw | 0:f0b5974a0c54 | 30 | |
jebradshaw | 0:f0b5974a0c54 | 31 | |
jebradshaw | 0:f0b5974a0c54 | 32 | /* |
jebradshaw | 0:f0b5974a0c54 | 33 | int uCAM_send_GET_PICTURE_640x480_JPEG(FILE *filew) |
jebradshaw | 0:f0b5974a0c54 | 34 | { |
jebradshaw | 0:f0b5974a0c54 | 35 | char ser_read[7]; |
jebradshaw | 0:f0b5974a0c54 | 36 | char frame[512]; |
jebradshaw | 0:f0b5974a0c54 | 37 | char c; |
jebradshaw | 0:f0b5974a0c54 | 38 | unsigned long pic_bytes; |
jebradshaw | 0:f0b5974a0c54 | 39 | unsigned int pixel_col; |
jebradshaw | 0:f0b5974a0c54 | 40 | unsigned int i, j, k; |
jebradshaw | 0:f0b5974a0c54 | 41 | int m; |
jebradshaw | 0:f0b5974a0c54 | 42 | unsigned int serbytes_read; |
jebradshaw | 0:f0b5974a0c54 | 43 | int temp; |
jebradshaw | 0:f0b5974a0c54 | 44 | |
jebradshaw | 0:f0b5974a0c54 | 45 | pic_bytes = 0; |
jebradshaw | 0:f0b5974a0c54 | 46 | c=0; |
jebradshaw | 0:f0b5974a0c54 | 47 | serbytes_read = 0; |
jebradshaw | 0:f0b5974a0c54 | 48 | |
jebradshaw | 0:f0b5974a0c54 | 49 | for(i=0;i<100;i++) |
jebradshaw | 0:f0b5974a0c54 | 50 | picture[i] = 0; |
jebradshaw | 0:f0b5974a0c54 | 51 | |
jebradshaw | 0:f0b5974a0c54 | 52 | cam.uCAM_FlushBuffer(); |
jebradshaw | 0:f0b5974a0c54 | 53 | |
jebradshaw | 0:f0b5974a0c54 | 54 | cam.uCAM_Command_Send(uCAM_GET_PICTURE,0x01,0x00,0x00,0x00); // p1=0x01-Snapshot picture |
jebradshaw | 0:f0b5974a0c54 | 55 | wait(.3); |
jebradshaw | 0:f0b5974a0c54 | 56 | |
jebradshaw | 0:f0b5974a0c54 | 57 | //read serial C buffer and wait for ACK (0xAA0E0DXX0000) |
jebradshaw | 0:f0b5974a0c54 | 58 | c=cam.uCAM_read(ser_read, 6, 1); |
jebradshaw | 0:f0b5974a0c54 | 59 | wait(.2); |
jebradshaw | 0:f0b5974a0c54 | 60 | |
jebradshaw | 0:f0b5974a0c54 | 61 | if(c==6) //received 6 bytes back |
jebradshaw | 0:f0b5974a0c54 | 62 | { |
jebradshaw | 0:f0b5974a0c54 | 63 | if((ser_read[0] == 0xAA) && //first 2 bytes indicate it was a DATA packet |
jebradshaw | 0:f0b5974a0c54 | 64 | (ser_read[1] == 0x0E) && |
jebradshaw | 0:f0b5974a0c54 | 65 | (ser_read[2] == 0x04)) //returned get pic |
jebradshaw | 0:f0b5974a0c54 | 66 | { |
jebradshaw | 0:f0b5974a0c54 | 67 | //read serial buffer and wait for ACK (0xAA0E0DXX0000) |
jebradshaw | 0:f0b5974a0c54 | 68 | c=cam.uCAM_read(ser_read, 6, 1); |
jebradshaw | 0:f0b5974a0c54 | 69 | |
jebradshaw | 0:f0b5974a0c54 | 70 | if(c==6) //received 6 bytes back |
jebradshaw | 0:f0b5974a0c54 | 71 | { |
jebradshaw | 0:f0b5974a0c54 | 72 | if((ser_read[0] == 0xAA) && //first 2 bytes indicate it was a DATA packet |
jebradshaw | 0:f0b5974a0c54 | 73 | (ser_read[1] == 0x0A)) |
jebradshaw | 0:f0b5974a0c54 | 74 | { |
jebradshaw | 0:f0b5974a0c54 | 75 | pic_bytes = (unsigned long)ser_read[3]; |
jebradshaw | 0:f0b5974a0c54 | 76 | pic_bytes += (unsigned long)ser_read[4] << 8; |
jebradshaw | 0:f0b5974a0c54 | 77 | pic_bytes += (unsigned long)ser_read[5] << 16; |
jebradshaw | 0:f0b5974a0c54 | 78 | |
jebradshaw | 0:f0b5974a0c54 | 79 | serbytes_read = cam.uCAM_read(picture, pic_bytes, .2); //frames of 512 bytes? |
jebradshaw | 0:f0b5974a0c54 | 80 | |
jebradshaw | 0:f0b5974a0c54 | 81 | if(serbytes_read == pic_bytes){ |
jebradshaw | 0:f0b5974a0c54 | 82 | |
jebradshaw | 0:f0b5974a0c54 | 83 | for(int i=0;i<pic_bytes;i++){ |
jebradshaw | 0:f0b5974a0c54 | 84 | cam.uCAM_Command_Send(uCAM_ACK, 0x0A, 0x00, i, 0x00); |
jebradshaw | 0:f0b5974a0c54 | 85 | |
jebradshaw | 0:f0b5974a0c54 | 86 | cam.uCAM_read(picture, 512, .2); |
jebradshaw | 0:f0b5974a0c54 | 87 | for(int j=0;j<512;j++){ |
jebradshaw | 0:f0b5974a0c54 | 88 | pc.printf("%c", picture[j]); |
jebradshaw | 0:f0b5974a0c54 | 89 | // fputc(picture[j], filew); |
jebradshaw | 0:f0b5974a0c54 | 90 | } |
jebradshaw | 0:f0b5974a0c54 | 91 | } |
jebradshaw | 0:f0b5974a0c54 | 92 | cam.uCAM_Command_Send(uCAM_ACK, 0x00, 0x00, 0xf0, 0xf0); |
jebradshaw | 0:f0b5974a0c54 | 93 | |
jebradshaw | 0:f0b5974a0c54 | 94 | return pic_bytes; |
jebradshaw | 0:f0b5974a0c54 | 95 | } |
jebradshaw | 0:f0b5974a0c54 | 96 | else |
jebradshaw | 0:f0b5974a0c54 | 97 | return -5; |
jebradshaw | 0:f0b5974a0c54 | 98 | } |
jebradshaw | 0:f0b5974a0c54 | 99 | else |
jebradshaw | 0:f0b5974a0c54 | 100 | return -4; |
jebradshaw | 0:f0b5974a0c54 | 101 | } |
jebradshaw | 0:f0b5974a0c54 | 102 | return -3; |
jebradshaw | 0:f0b5974a0c54 | 103 | } |
jebradshaw | 0:f0b5974a0c54 | 104 | } |
jebradshaw | 0:f0b5974a0c54 | 105 | return -2; |
jebradshaw | 0:f0b5974a0c54 | 106 | }//if(c==6) |
jebradshaw | 0:f0b5974a0c54 | 107 | return -1; |
jebradshaw | 0:f0b5974a0c54 | 108 | }//uCAM_send_GET_PICTURE_640x480_JPEG(FILE *filew) |
jebradshaw | 0:f0b5974a0c54 | 109 | |
jebradshaw | 0:f0b5974a0c54 | 110 | int get_jpeg(FILE *file){ |
jebradshaw | 0:f0b5974a0c54 | 111 | cam.uCAM_Command_Send(uCAM_INITIAL,0x00,0x07,0x07,0x07); // JPEG,640 x 480,JPEG |
jebradshaw | 0:f0b5974a0c54 | 112 | |
jebradshaw | 0:f0b5974a0c54 | 113 | wait(.05); |
jebradshaw | 0:f0b5974a0c54 | 114 | |
jebradshaw | 0:f0b5974a0c54 | 115 | if(cam.uCAM_GetACK()){ |
jebradshaw | 0:f0b5974a0c54 | 116 | pc.printf("Did not receive ACK on uCAM_INITIAL\r\n"); |
jebradshaw | 0:f0b5974a0c54 | 117 | return -1; |
jebradshaw | 0:f0b5974a0c54 | 118 | } |
jebradshaw | 0:f0b5974a0c54 | 119 | |
jebradshaw | 0:f0b5974a0c54 | 120 | cam.uCAM_Command_Send(uCAM_SET_PACKAGE_SIZE,0x08,0x00,0x02,0x00); //512 bytes |
jebradshaw | 0:f0b5974a0c54 | 121 | |
jebradshaw | 0:f0b5974a0c54 | 122 | if(cam.uCAM_GetACK()){ |
jebradshaw | 0:f0b5974a0c54 | 123 | pc.printf("Did not receive ACK on uCAM_SET_PACKAGE_SIZE\r\n"); |
jebradshaw | 0:f0b5974a0c54 | 124 | return -2; |
jebradshaw | 0:f0b5974a0c54 | 125 | } |
jebradshaw | 0:f0b5974a0c54 | 126 | |
jebradshaw | 0:f0b5974a0c54 | 127 | cam.uCAM_Command_Send(uCAM_SNAPSHOT,0x00,0x00,0x00,0x00); //JPEG |
jebradshaw | 0:f0b5974a0c54 | 128 | |
jebradshaw | 0:f0b5974a0c54 | 129 | if(cam.uCAM_GetACK()){ |
jebradshaw | 0:f0b5974a0c54 | 130 | pc.printf("Did not receive ACK on uCAM_SNAPSHOT\r\n"); |
jebradshaw | 0:f0b5974a0c54 | 131 | return -3; |
jebradshaw | 0:f0b5974a0c54 | 132 | } |
jebradshaw | 0:f0b5974a0c54 | 133 | |
jebradshaw | 0:f0b5974a0c54 | 134 | uCAM_send_GET_PICTURE_640x480_JPEG(file); |
jebradshaw | 0:f0b5974a0c54 | 135 | } |
jebradshaw | 0:f0b5974a0c54 | 136 | */ |
jebradshaw | 0:f0b5974a0c54 | 137 | |
jebradshaw | 0:f0b5974a0c54 | 138 | int main(){ |
jebradshaw | 0:f0b5974a0c54 | 139 | FILE *fp; |
jebradshaw | 0:f0b5974a0c54 | 140 | |
jebradshaw | 0:f0b5974a0c54 | 141 | pc.baud(921600); |
jebradshaw | 0:f0b5974a0c54 | 142 | pc.printf("\r\n\r\n%s\r\n", __FILE__); |
jebradshaw | 0:f0b5974a0c54 | 143 | |
jebradshaw | 0:f0b5974a0c54 | 144 | //cam.uCAM_set_baud(); |
jebradshaw | 0:f0b5974a0c54 | 145 | |
jebradshaw | 0:f0b5974a0c54 | 146 | camrst = 0; |
jebradshaw | 0:f0b5974a0c54 | 147 | wait(.5); |
jebradshaw | 0:f0b5974a0c54 | 148 | camrst = 1; |
jebradshaw | 0:f0b5974a0c54 | 149 | |
jebradshaw | 0:f0b5974a0c54 | 150 | if(cam.uCAM_Connect()){ //Initialize the uCAM connection |
jebradshaw | 0:f0b5974a0c54 | 151 | pc.printf("Camera Initialized\r\n"); |
jebradshaw | 0:f0b5974a0c54 | 152 | } |
jebradshaw | 0:f0b5974a0c54 | 153 | else{ |
jebradshaw | 0:f0b5974a0c54 | 154 | pc.printf("Camera failed to connect\r\n"); |
jebradshaw | 0:f0b5974a0c54 | 155 | exit(1); |
jebradshaw | 0:f0b5974a0c54 | 156 | } |
jebradshaw | 0:f0b5974a0c54 | 157 | |
jebradshaw | 0:f0b5974a0c54 | 158 | int i = 0; |
jebradshaw | 0:f0b5974a0c54 | 159 | while(1) { |
jebradshaw | 0:f0b5974a0c54 | 160 | char ser_read[7]; |
jebradshaw | 0:f0b5974a0c54 | 161 | unsigned long pic_bytes; |
jebradshaw | 0:f0b5974a0c54 | 162 | unsigned int serbytes_read; |
jebradshaw | 0:f0b5974a0c54 | 163 | char fileNameStr[20]; |
jebradshaw | 0:f0b5974a0c54 | 164 | |
jebradshaw | 0:f0b5974a0c54 | 165 | // sprintf(fileNameStr, "/local/pic%2X.bmp", i++); |
jebradshaw | 0:f0b5974a0c54 | 166 | |
jebradshaw | 0:f0b5974a0c54 | 167 | /* |
jebradshaw | 0:f0b5974a0c54 | 168 | FILE *fp = fopen("/local/text1.txt", "w"); |
jebradshaw | 0:f0b5974a0c54 | 169 | wait(.2); |
jebradshaw | 0:f0b5974a0c54 | 170 | fprintf(fp, "Hello World Joe!"); |
jebradshaw | 0:f0b5974a0c54 | 171 | fclose(fp); |
jebradshaw | 0:f0b5974a0c54 | 172 | |
jebradshaw | 0:f0b5974a0c54 | 173 | */ |
jebradshaw | 0:f0b5974a0c54 | 174 | fp = fopen("/local/pic000.jpg", "w"); |
jebradshaw | 0:f0b5974a0c54 | 175 | |
jebradshaw | 0:f0b5974a0c54 | 176 | //------- begin get jpeg -------------- |
jebradshaw | 0:f0b5974a0c54 | 177 | cam.uCAM_FlushBuffer(); |
jebradshaw | 0:f0b5974a0c54 | 178 | cam.uCAM_Command_Send(uCAM_INITIAL,0x00,0x07,0x07,0x07); // JPEG,640 x 480,JPEG |
jebradshaw | 0:f0b5974a0c54 | 179 | |
jebradshaw | 0:f0b5974a0c54 | 180 | wait(.05); |
jebradshaw | 0:f0b5974a0c54 | 181 | |
jebradshaw | 0:f0b5974a0c54 | 182 | cam.uCAM_read(ser_read, 6, .1); |
jebradshaw | 0:f0b5974a0c54 | 183 | if((ser_read[0] == 0xAA) && |
jebradshaw | 0:f0b5974a0c54 | 184 | (ser_read[1] == 0x0E) && |
jebradshaw | 0:f0b5974a0c54 | 185 | (ser_read[2] == 0x01)){ //INITIAL ACK |
jebradshaw | 0:f0b5974a0c54 | 186 | pc.printf("ACK received on uCAM_INITIAL\r\n"); |
jebradshaw | 0:f0b5974a0c54 | 187 | } |
jebradshaw | 0:f0b5974a0c54 | 188 | else{ |
jebradshaw | 0:f0b5974a0c54 | 189 | pc.printf("Did not receive ACK on uCAM_INITIAL\r\n"); |
jebradshaw | 0:f0b5974a0c54 | 190 | } |
jebradshaw | 0:f0b5974a0c54 | 191 | |
jebradshaw | 0:f0b5974a0c54 | 192 | cam.uCAM_FlushBuffer(); |
jebradshaw | 0:f0b5974a0c54 | 193 | cam.uCAM_Command_Send(uCAM_SET_PACKAGE_SIZE,0x08,0x00,0x02,0x00); //512 bytes |
jebradshaw | 0:f0b5974a0c54 | 194 | |
jebradshaw | 0:f0b5974a0c54 | 195 | wait(.05); |
jebradshaw | 0:f0b5974a0c54 | 196 | |
jebradshaw | 0:f0b5974a0c54 | 197 | cam.uCAM_read(ser_read, 6, .1); |
jebradshaw | 0:f0b5974a0c54 | 198 | if((ser_read[0] == 0xAA) && |
jebradshaw | 0:f0b5974a0c54 | 199 | (ser_read[1] == 0x0E) && |
jebradshaw | 0:f0b5974a0c54 | 200 | (ser_read[2] == 0x06)){ //SET PACKAGE SIZE ACK |
jebradshaw | 0:f0b5974a0c54 | 201 | pc.printf("ACK received on uCAM_SET_PACKAGE_SIZE\r\n"); |
jebradshaw | 0:f0b5974a0c54 | 202 | } |
jebradshaw | 0:f0b5974a0c54 | 203 | else{ |
jebradshaw | 0:f0b5974a0c54 | 204 | pc.printf("Did not receive ACK on SET PACKAGE SIZE\r\n"); |
jebradshaw | 0:f0b5974a0c54 | 205 | } |
jebradshaw | 0:f0b5974a0c54 | 206 | |
jebradshaw | 0:f0b5974a0c54 | 207 | cam.uCAM_Command_Send(uCAM_SNAPSHOT,0x00,0x00,0x00,0x00); //JPEG |
jebradshaw | 0:f0b5974a0c54 | 208 | |
jebradshaw | 0:f0b5974a0c54 | 209 | cam.uCAM_read(ser_read, 6, .1); |
jebradshaw | 0:f0b5974a0c54 | 210 | if((ser_read[0] == 0xAA) && |
jebradshaw | 0:f0b5974a0c54 | 211 | (ser_read[1] == 0x0E) && |
jebradshaw | 0:f0b5974a0c54 | 212 | (ser_read[2] == 0x05)){ //uCAM_SNAPSHOT ACK |
jebradshaw | 0:f0b5974a0c54 | 213 | pc.printf("ACK received on uCAM_SNAPSHOT\r\n"); |
jebradshaw | 0:f0b5974a0c54 | 214 | } |
jebradshaw | 0:f0b5974a0c54 | 215 | else{ |
jebradshaw | 0:f0b5974a0c54 | 216 | pc.printf("Did not receive ACK on uCAM_SNAPSHOT\r\n"); |
jebradshaw | 0:f0b5974a0c54 | 217 | } |
jebradshaw | 0:f0b5974a0c54 | 218 | |
jebradshaw | 0:f0b5974a0c54 | 219 | pic_bytes = 0; |
jebradshaw | 0:f0b5974a0c54 | 220 | serbytes_read = 0; |
jebradshaw | 0:f0b5974a0c54 | 221 | |
jebradshaw | 0:f0b5974a0c54 | 222 | for(i=0;i<100;i++) |
jebradshaw | 0:f0b5974a0c54 | 223 | picture[i] = 0; |
jebradshaw | 0:f0b5974a0c54 | 224 | |
jebradshaw | 0:f0b5974a0c54 | 225 | cam.uCAM_FlushBuffer(); |
jebradshaw | 0:f0b5974a0c54 | 226 | |
jebradshaw | 0:f0b5974a0c54 | 227 | cam.uCAM_Command_Send(uCAM_GET_PICTURE,0x01,0x00,0x00,0x00); // p1=0x01-Snapshot picture |
jebradshaw | 0:f0b5974a0c54 | 228 | wait(.3); |
jebradshaw | 0:f0b5974a0c54 | 229 | |
jebradshaw | 0:f0b5974a0c54 | 230 | //read serial C buffer and wait for ACK (0xAA0E0DXX0000) |
jebradshaw | 0:f0b5974a0c54 | 231 | char c=cam.uCAM_read(ser_read, 6, 1); |
jebradshaw | 0:f0b5974a0c54 | 232 | |
jebradshaw | 0:f0b5974a0c54 | 233 | wait(.2); |
jebradshaw | 0:f0b5974a0c54 | 234 | |
jebradshaw | 0:f0b5974a0c54 | 235 | if((ser_read[0] == 0xAA) && //first 2 bytes indicate it was a DATA packet |
jebradshaw | 0:f0b5974a0c54 | 236 | (ser_read[1] == 0x0E) && |
jebradshaw | 0:f0b5974a0c54 | 237 | (ser_read[2] == 0x04)) //returned get pic |
jebradshaw | 0:f0b5974a0c54 | 238 | { |
jebradshaw | 0:f0b5974a0c54 | 239 | //read serial buffer and wait for ACK (0xAA0E0DXX0000) |
jebradshaw | 0:f0b5974a0c54 | 240 | char c=cam.uCAM_read(ser_read, 6, 1); |
jebradshaw | 0:f0b5974a0c54 | 241 | |
jebradshaw | 0:f0b5974a0c54 | 242 | if((ser_read[0] == 0xAA) && //first 2 bytes indicate it was a DATA packet |
jebradshaw | 0:f0b5974a0c54 | 243 | (ser_read[1] == 0x0A) && |
jebradshaw | 0:f0b5974a0c54 | 244 | (ser_read[2] == 0x01)) //DATA from snapshot ACK |
jebradshaw | 0:f0b5974a0c54 | 245 | { |
jebradshaw | 0:f0b5974a0c54 | 246 | pic_bytes = (unsigned long)ser_read[3]; |
jebradshaw | 0:f0b5974a0c54 | 247 | pic_bytes += (unsigned long)ser_read[4] << 8; |
jebradshaw | 0:f0b5974a0c54 | 248 | pic_bytes += (unsigned long)ser_read[5] << 16; |
jebradshaw | 0:f0b5974a0c54 | 249 | |
jebradshaw | 0:f0b5974a0c54 | 250 | int packID=0; |
jebradshaw | 0:f0b5974a0c54 | 251 | char packID_l, packID_h; |
jebradshaw | 0:f0b5974a0c54 | 252 | |
jebradshaw | 0:f0b5974a0c54 | 253 | pc.printf("\r\n"); |
jebradshaw | 0:f0b5974a0c54 | 254 | while(pic_bytes>0){ |
jebradshaw | 0:f0b5974a0c54 | 255 | packID_h = (packID >> 8) & 0xff; |
jebradshaw | 0:f0b5974a0c54 | 256 | packID_l = packID & 0xff; |
jebradshaw | 0:f0b5974a0c54 | 257 | |
jebradshaw | 0:f0b5974a0c54 | 258 | cam.uCAM_FlushBuffer(); |
jebradshaw | 0:f0b5974a0c54 | 259 | cam.uCAM_Command_Send(uCAM_ACK, 0x00, 0x00, packID_l, packID_h); |
jebradshaw | 0:f0b5974a0c54 | 260 | |
jebradshaw | 0:f0b5974a0c54 | 261 | pc.printf("\r\n "); |
jebradshaw | 0:f0b5974a0c54 | 262 | |
jebradshaw | 0:f0b5974a0c54 | 263 | if(pic_bytes > 512){ |
jebradshaw | 0:f0b5974a0c54 | 264 | int pbytes = cam.uCAM_read(picture, 512, .2); |
jebradshaw | 0:f0b5974a0c54 | 265 | pic_bytes -= 512; |
jebradshaw | 0:f0b5974a0c54 | 266 | //debugging |
jebradshaw | 0:f0b5974a0c54 | 267 | for(int j=0;j<512;j++){ |
jebradshaw | 0:f0b5974a0c54 | 268 | fputc(picture[j], fp); |
jebradshaw | 0:f0b5974a0c54 | 269 | pc.printf("%2X ", picture[j]); |
jebradshaw | 0:f0b5974a0c54 | 270 | } |
jebradshaw | 0:f0b5974a0c54 | 271 | } |
jebradshaw | 0:f0b5974a0c54 | 272 | else{ |
jebradshaw | 0:f0b5974a0c54 | 273 | cam.uCAM_read(picture, pic_bytes, .2); |
jebradshaw | 0:f0b5974a0c54 | 274 | //for debugging |
jebradshaw | 0:f0b5974a0c54 | 275 | for(int j=0;j<pic_bytes;j++){ |
jebradshaw | 0:f0b5974a0c54 | 276 | fputc(picture[j], fp); |
jebradshaw | 0:f0b5974a0c54 | 277 | pc.printf("%2X ", picture[j]); |
jebradshaw | 0:f0b5974a0c54 | 278 | } |
jebradshaw | 0:f0b5974a0c54 | 279 | pic_bytes = 0; |
jebradshaw | 0:f0b5974a0c54 | 280 | } |
jebradshaw | 0:f0b5974a0c54 | 281 | |
jebradshaw | 0:f0b5974a0c54 | 282 | packID++; |
jebradshaw | 0:f0b5974a0c54 | 283 | } |
jebradshaw | 0:f0b5974a0c54 | 284 | cam.uCAM_Command_Send(uCAM_ACK, 0x00, 0x00, 0xf0, 0xf0); |
jebradshaw | 0:f0b5974a0c54 | 285 | |
jebradshaw | 0:f0b5974a0c54 | 286 | //serbytes_read = cam.uCAM_read(picture, pic_bytes, .2); //frames of 512 bytes? |
jebradshaw | 0:f0b5974a0c54 | 287 | |
jebradshaw | 0:f0b5974a0c54 | 288 | } |
jebradshaw | 0:f0b5974a0c54 | 289 | //pc.printf("-3"); |
jebradshaw | 0:f0b5974a0c54 | 290 | }//data packet |
jebradshaw | 0:f0b5974a0c54 | 291 | |
jebradshaw | 0:f0b5974a0c54 | 292 | fclose(fp); |
jebradshaw | 0:f0b5974a0c54 | 293 | |
jebradshaw | 0:f0b5974a0c54 | 294 | //------- end get jpeg -------------- |
jebradshaw | 0:f0b5974a0c54 | 295 | |
jebradshaw | 0:f0b5974a0c54 | 296 | /* |
jebradshaw | 0:f0b5974a0c54 | 297 | cam.uCAM_send_INITIAL_80x60_16RAW(); |
jebradshaw | 0:f0b5974a0c54 | 298 | wait(.1); |
jebradshaw | 0:f0b5974a0c54 | 299 | cam.uCAM_send_SNAPSHOT(); |
jebradshaw | 0:f0b5974a0c54 | 300 | wait(.1); |
jebradshaw | 0:f0b5974a0c54 | 301 | cam.uCAM_send_GET_PICTURE_80x60_16COL_RAW(); |
jebradshaw | 0:f0b5974a0c54 | 302 | */ |
jebradshaw | 0:f0b5974a0c54 | 303 | myled = 1; |
jebradshaw | 0:f0b5974a0c54 | 304 | wait(3); |
jebradshaw | 0:f0b5974a0c54 | 305 | myled = 0; |
jebradshaw | 0:f0b5974a0c54 | 306 | wait(0.2); |
jebradshaw | 0:f0b5974a0c54 | 307 | } |
jebradshaw | 0:f0b5974a0c54 | 308 | } |