Camera_PCStreaming with WIZwiki-W7500
Dependencies: CameraC328 WIZnetInterface_Ricky mbed-src
main.cpp@0:b2764ee848ec, 2015-11-24 (annotated)
- 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?
User | Revision | Line number | New 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 | } |