Toma de foto y descomprimir en HEX
Dependencies: JPEGCamera SDFileSystem mbed
Fork of SaibiCansat2014 by
Diff: FastJpegCamera.h
- Revision:
- 9:3a2d25f4700b
- Parent:
- 8:3230ddd3a3d1
- Child:
- 10:337ccaaec39c
--- a/FastJpegCamera.h Thu Jul 17 23:30:16 2014 +0000 +++ b/FastJpegCamera.h Fri Jul 18 01:52:44 2014 +0000 @@ -5,13 +5,16 @@ #define FILENAME "/sd/pict%03d.jpg" +#define min(x, y) ((x) < (y)) ? (x) : (y) + class FastJpegCamera : public JPEGCamera { public: DigitalOut myled1; //show successful picture was taken int baudrate; Serial pc; + Serial& xbee; - FastJpegCamera(PinName tx, PinName rx) : JPEGCamera(tx,rx), baudrate(38400), pc(USBTX, USBRX), myled1(LED1){ + FastJpegCamera(PinName tx, PinName rx, Serial& xbee) : JPEGCamera(tx,rx), baudrate(38400), pc(USBTX, USBRX), myled1(LED1), xbee(xbee){ this->baud115200(); }; @@ -53,6 +56,28 @@ pc.printf("%02x %02x %02x %02x %02x", buf[0], buf[1], buf[2], buf[3], buf[4]); }; + bool processPicture() { + if (state == PROCESSING) { + if (address < imageSize) { + char data[1024]; + int size = readData(data, min(sizeof(data), imageSize - address), address); + int ret = fwrite(data, size, 1, fp); + if (ret > 0) + address += size; + if (ret == 0 || address >= imageSize) { + stopPictures(); + fclose(fp); + wait(0.1); // ???? + state = ret > 0 ? READY : ERROR; + }//if + for(int i=0; i<sizeof data; ++i){ + xbee.putc(data[i]); + }//for + }//if + }//if + return state == PROCESSING || state == READY; + }//processPicture + void shoot(int i){ if (!this->isReady()) { @@ -84,6 +109,7 @@ myled1 = 0; };//shoot + };//FastJpegCamera #endif