Camera_PCStreaming with WIZwiki-W7500

Dependencies:   CameraC328 WIZnetInterface_Ricky mbed-src

Committer:
Ricky_Kwon
Date:
Tue Nov 24 04:00:27 2015 +0000
Revision:
0:b2764ee848ec
Camera_PCStreaming with WIZwiki-W7500

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Ricky_Kwon 0:b2764ee848ec 1 #include "mbed.h"
Ricky_Kwon 0:b2764ee848ec 2 #include "EthernetInterface.h"
Ricky_Kwon 0:b2764ee848ec 3 #include "CameraC328.h"
Ricky_Kwon 0:b2764ee848ec 4
Ricky_Kwon 0:b2764ee848ec 5 /* CAMERA */
Ricky_Kwon 0:b2764ee848ec 6 #define USE_JPEG_HIGH_RESOLUTION 2//1=80x64 <--- not working -_-;;, 2=160x128, 3=320x240, 4=640x480
Ricky_Kwon 0:b2764ee848ec 7 #define START "start"
Ricky_Kwon 0:b2764ee848ec 8 #define END "end"
Ricky_Kwon 0:b2764ee848ec 9 CameraC328 camera(PA_13, PA_14, CameraC328::Baud115200);
Ricky_Kwon 0:b2764ee848ec 10
Ricky_Kwon 0:b2764ee848ec 11 /* TCP/IP */
Ricky_Kwon 0:b2764ee848ec 12 static char buf[1024];
Ricky_Kwon 0:b2764ee848ec 13 const char dest_ip[] = "192.168.0.11";
Ricky_Kwon 0:b2764ee848ec 14 int dest_port = 1212;
Ricky_Kwon 0:b2764ee848ec 15
Ricky_Kwon 0:b2764ee848ec 16 uint8_t mac_addr[6] = {0x00, 0x08, 0xdc, 0x12, 0x34, 0x45};
Ricky_Kwon 0:b2764ee848ec 17 const char ip_addr[] = "192.168.0.200";
Ricky_Kwon 0:b2764ee848ec 18 const char mask_addr[] = "255.255.255.0";
Ricky_Kwon 0:b2764ee848ec 19 const char gateway_addr[] = "192.168.0.1";
Ricky_Kwon 0:b2764ee848ec 20
Ricky_Kwon 0:b2764ee848ec 21 EthernetInterface eth;
Ricky_Kwon 0:b2764ee848ec 22 TCPSocketConnection Streaming;
Ricky_Kwon 0:b2764ee848ec 23
Ricky_Kwon 0:b2764ee848ec 24 /* UART */
Ricky_Kwon 0:b2764ee848ec 25 Serial pc(USBTX, USBRX);
Ricky_Kwon 0:b2764ee848ec 26
Ricky_Kwon 0:b2764ee848ec 27 /* Function*/
Ricky_Kwon 0:b2764ee848ec 28 void jpeg_callback(char *buf, size_t siz);
Ricky_Kwon 0:b2764ee848ec 29 void sync(void);
Ricky_Kwon 0:b2764ee848ec 30 void test_jpeg_snapshot_picture(void);
Ricky_Kwon 0:b2764ee848ec 31 void init(void);
Ricky_Kwon 0:b2764ee848ec 32
Ricky_Kwon 0:b2764ee848ec 33 int main() {
Ricky_Kwon 0:b2764ee848ec 34
Ricky_Kwon 0:b2764ee848ec 35 printf("Hello WIZwiki-W7500 Camera PCStreaming World!\r\n");
Ricky_Kwon 0:b2764ee848ec 36
Ricky_Kwon 0:b2764ee848ec 37 eth.init(mac_addr, ip_addr, mask_addr, gateway_addr); //Use Static
Ricky_Kwon 0:b2764ee848ec 38 eth.connect();
Ricky_Kwon 0:b2764ee848ec 39 sync();
Ricky_Kwon 0:b2764ee848ec 40 init();
Ricky_Kwon 0:b2764ee848ec 41 while (Streaming.connect(dest_ip, dest_port) < 0) {
Ricky_Kwon 0:b2764ee848ec 42 printf("Unable to connect to (%s) on port (%d)\r\n", dest_ip, dest_port);
Ricky_Kwon 0:b2764ee848ec 43 wait(1);
Ricky_Kwon 0:b2764ee848ec 44 }
Ricky_Kwon 0:b2764ee848ec 45
Ricky_Kwon 0:b2764ee848ec 46 while(true)
Ricky_Kwon 0:b2764ee848ec 47 {
Ricky_Kwon 0:b2764ee848ec 48 int n = Streaming.receive(buf, sizeof(buf));
Ricky_Kwon 0:b2764ee848ec 49 buf[n] = '\0';
Ricky_Kwon 0:b2764ee848ec 50
Ricky_Kwon 0:b2764ee848ec 51 Streaming.send(START, sizeof(START)-1);
Ricky_Kwon 0:b2764ee848ec 52 test_jpeg_snapshot_picture();
Ricky_Kwon 0:b2764ee848ec 53 Streaming.send(END, sizeof(END)-1);
Ricky_Kwon 0:b2764ee848ec 54
Ricky_Kwon 0:b2764ee848ec 55
Ricky_Kwon 0:b2764ee848ec 56 /*
Ricky_Kwon 0:b2764ee848ec 57 if (!strncmp(buf, "123", 3)){
Ricky_Kwon 0:b2764ee848ec 58 }
Ricky_Kwon 0:b2764ee848ec 59 else if(!strncmp(buf, "220", 3)){
Ricky_Kwon 0:b2764ee848ec 60 }
Ricky_Kwon 0:b2764ee848ec 61 else if(!strncmp(buf, "789", 3)){
Ricky_Kwon 0:b2764ee848ec 62 }
Ricky_Kwon 0:b2764ee848ec 63 */
Ricky_Kwon 0:b2764ee848ec 64 }
Ricky_Kwon 0:b2764ee848ec 65 }
Ricky_Kwon 0:b2764ee848ec 66
Ricky_Kwon 0:b2764ee848ec 67 void jpeg_callback(char *buf, size_t siz) {
Ricky_Kwon 0:b2764ee848ec 68 //for (int i = 0; i < (int)siz; i++) {
Ricky_Kwon 0:b2764ee848ec 69 //fprintf(fp_jpeg, "%c", buf[i]);
Ricky_Kwon 0:b2764ee848ec 70 Streaming.send(buf, siz);
Ricky_Kwon 0:b2764ee848ec 71 //}
Ricky_Kwon 0:b2764ee848ec 72 }
Ricky_Kwon 0:b2764ee848ec 73 void sync(void) {
Ricky_Kwon 0:b2764ee848ec 74 CameraC328::ErrorNumber err = CameraC328::NoError;
Ricky_Kwon 0:b2764ee848ec 75
Ricky_Kwon 0:b2764ee848ec 76 err = camera.sync();
Ricky_Kwon 0:b2764ee848ec 77 if (CameraC328::NoError == err) {
Ricky_Kwon 0:b2764ee848ec 78 printf("[ OK ] : CameraC328::sync\r\n");
Ricky_Kwon 0:b2764ee848ec 79 } else {
Ricky_Kwon 0:b2764ee848ec 80 printf("[FAIL] : CameraC328::sync (Error=%02X)\r\n", (int)err);
Ricky_Kwon 0:b2764ee848ec 81 }
Ricky_Kwon 0:b2764ee848ec 82 }
Ricky_Kwon 0:b2764ee848ec 83 void test_jpeg_snapshot_picture() {
Ricky_Kwon 0:b2764ee848ec 84 CameraC328::ErrorNumber err = CameraC328::NoError;
Ricky_Kwon 0:b2764ee848ec 85
Ricky_Kwon 0:b2764ee848ec 86 err = camera.getJpegSnapshotPicture(jpeg_callback);
Ricky_Kwon 0:b2764ee848ec 87 if (CameraC328::NoError == err) {
Ricky_Kwon 0:b2764ee848ec 88 printf("[ OK ] : CameraC328::getJpegSnapshotPicture\r\n");
Ricky_Kwon 0:b2764ee848ec 89 } else {
Ricky_Kwon 0:b2764ee848ec 90 printf("[FAIL] : CameraC328::getJpegSnapshotPicture (Error=%02X)\r\n", (int)err);
Ricky_Kwon 0:b2764ee848ec 91 }
Ricky_Kwon 0:b2764ee848ec 92 }
Ricky_Kwon 0:b2764ee848ec 93 void init()
Ricky_Kwon 0:b2764ee848ec 94 {
Ricky_Kwon 0:b2764ee848ec 95 CameraC328::ErrorNumber err = CameraC328::NoError;
Ricky_Kwon 0:b2764ee848ec 96
Ricky_Kwon 0:b2764ee848ec 97 #if (USE_JPEG_HIGH_RESOLUTION==1)
Ricky_Kwon 0:b2764ee848ec 98 err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution80x64);
Ricky_Kwon 0:b2764ee848ec 99 #elif (USE_JPEG_HIGH_RESOLUTION==2)
Ricky_Kwon 0:b2764ee848ec 100 err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution160x128);
Ricky_Kwon 0:b2764ee848ec 101 #elif (USE_JPEG_HIGH_RESOLUTION==3)
Ricky_Kwon 0:b2764ee848ec 102 err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution320x240);
Ricky_Kwon 0:b2764ee848ec 103 #elif (USE_JPEG_HIGH_RESOLUTION==4)
Ricky_Kwon 0:b2764ee848ec 104 err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution640x480);
Ricky_Kwon 0:b2764ee848ec 105 #endif
Ricky_Kwon 0:b2764ee848ec 106 if (CameraC328::NoError == err) {
Ricky_Kwon 0:b2764ee848ec 107 printf("[ OK ] : CameraC328::init\r\n");
Ricky_Kwon 0:b2764ee848ec 108 } else {
Ricky_Kwon 0:b2764ee848ec 109 printf("[FAIL] : CameraC328::init (Error=%02X)\r\n", (int)err);
Ricky_Kwon 0:b2764ee848ec 110 }
Ricky_Kwon 0:b2764ee848ec 111 }