This is Ethernet Telescope.
Dependencies: CameraC328 WIZnetInterface_Ricky mbed-src
Fork of Camera_PCStreaming_WIZwiki-W7500 by
main.cpp@1:7bccc7b293ab, 2016-03-01 (annotated)
- Committer:
- Ricky_Kwon
- Date:
- Tue Mar 01 10:52:16 2016 +0000
- Revision:
- 1:7bccc7b293ab
- Parent:
- 0:b2764ee848ec
WIZKon Telescope Project!!
;
; This is Ethernet Telescope.
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 | 1:7bccc7b293ab | 6 | #define USE_JPEG_HIGH_RESOLUTION 3//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 | 1:7bccc7b293ab | 17 | const char ip_addr[] = "192.168.0.123"; |
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 | 1:7bccc7b293ab | 21 | |
Ricky_Kwon | 0:b2764ee848ec | 22 | EthernetInterface eth; |
Ricky_Kwon | 0:b2764ee848ec | 23 | TCPSocketConnection Streaming; |
Ricky_Kwon | 0:b2764ee848ec | 24 | |
Ricky_Kwon | 0:b2764ee848ec | 25 | /* UART */ |
Ricky_Kwon | 0:b2764ee848ec | 26 | Serial pc(USBTX, USBRX); |
Ricky_Kwon | 0:b2764ee848ec | 27 | |
Ricky_Kwon | 0:b2764ee848ec | 28 | /* Function*/ |
Ricky_Kwon | 0:b2764ee848ec | 29 | void jpeg_callback(char *buf, size_t siz); |
Ricky_Kwon | 0:b2764ee848ec | 30 | void sync(void); |
Ricky_Kwon | 0:b2764ee848ec | 31 | void test_jpeg_snapshot_picture(void); |
Ricky_Kwon | 0:b2764ee848ec | 32 | void init(void); |
Ricky_Kwon | 0:b2764ee848ec | 33 | |
Ricky_Kwon | 0:b2764ee848ec | 34 | int main() { |
Ricky_Kwon | 0:b2764ee848ec | 35 | |
Ricky_Kwon | 1:7bccc7b293ab | 36 | printf("WIZKon Telescope\r\n"); |
Ricky_Kwon | 0:b2764ee848ec | 37 | |
Ricky_Kwon | 0:b2764ee848ec | 38 | eth.init(mac_addr, ip_addr, mask_addr, gateway_addr); //Use Static |
Ricky_Kwon | 0:b2764ee848ec | 39 | eth.connect(); |
Ricky_Kwon | 1:7bccc7b293ab | 40 | while(1) |
Ricky_Kwon | 1:7bccc7b293ab | 41 | { //Wait link up |
Ricky_Kwon | 1:7bccc7b293ab | 42 | if(eth.link() == true) |
Ricky_Kwon | 1:7bccc7b293ab | 43 | break; |
Ricky_Kwon | 1:7bccc7b293ab | 44 | } |
Ricky_Kwon | 1:7bccc7b293ab | 45 | printf("My IP Address is %s\n\r", eth.getIPAddress()); |
Ricky_Kwon | 0:b2764ee848ec | 46 | sync(); |
Ricky_Kwon | 0:b2764ee848ec | 47 | init(); |
Ricky_Kwon | 0:b2764ee848ec | 48 | while (Streaming.connect(dest_ip, dest_port) < 0) { |
Ricky_Kwon | 0:b2764ee848ec | 49 | printf("Unable to connect to (%s) on port (%d)\r\n", dest_ip, dest_port); |
Ricky_Kwon | 0:b2764ee848ec | 50 | wait(1); |
Ricky_Kwon | 0:b2764ee848ec | 51 | } |
Ricky_Kwon | 0:b2764ee848ec | 52 | |
Ricky_Kwon | 0:b2764ee848ec | 53 | while(true) |
Ricky_Kwon | 0:b2764ee848ec | 54 | { |
Ricky_Kwon | 0:b2764ee848ec | 55 | int n = Streaming.receive(buf, sizeof(buf)); |
Ricky_Kwon | 0:b2764ee848ec | 56 | buf[n] = '\0'; |
Ricky_Kwon | 0:b2764ee848ec | 57 | |
Ricky_Kwon | 0:b2764ee848ec | 58 | Streaming.send(START, sizeof(START)-1); |
Ricky_Kwon | 0:b2764ee848ec | 59 | test_jpeg_snapshot_picture(); |
Ricky_Kwon | 0:b2764ee848ec | 60 | Streaming.send(END, sizeof(END)-1); |
Ricky_Kwon | 0:b2764ee848ec | 61 | } |
Ricky_Kwon | 0:b2764ee848ec | 62 | } |
Ricky_Kwon | 0:b2764ee848ec | 63 | |
Ricky_Kwon | 0:b2764ee848ec | 64 | void jpeg_callback(char *buf, size_t siz) { |
Ricky_Kwon | 0:b2764ee848ec | 65 | //for (int i = 0; i < (int)siz; i++) { |
Ricky_Kwon | 0:b2764ee848ec | 66 | //fprintf(fp_jpeg, "%c", buf[i]); |
Ricky_Kwon | 0:b2764ee848ec | 67 | Streaming.send(buf, siz); |
Ricky_Kwon | 0:b2764ee848ec | 68 | //} |
Ricky_Kwon | 0:b2764ee848ec | 69 | } |
Ricky_Kwon | 0:b2764ee848ec | 70 | void sync(void) { |
Ricky_Kwon | 0:b2764ee848ec | 71 | CameraC328::ErrorNumber err = CameraC328::NoError; |
Ricky_Kwon | 0:b2764ee848ec | 72 | |
Ricky_Kwon | 0:b2764ee848ec | 73 | err = camera.sync(); |
Ricky_Kwon | 0:b2764ee848ec | 74 | if (CameraC328::NoError == err) { |
Ricky_Kwon | 0:b2764ee848ec | 75 | printf("[ OK ] : CameraC328::sync\r\n"); |
Ricky_Kwon | 0:b2764ee848ec | 76 | } else { |
Ricky_Kwon | 0:b2764ee848ec | 77 | printf("[FAIL] : CameraC328::sync (Error=%02X)\r\n", (int)err); |
Ricky_Kwon | 0:b2764ee848ec | 78 | } |
Ricky_Kwon | 0:b2764ee848ec | 79 | } |
Ricky_Kwon | 0:b2764ee848ec | 80 | void test_jpeg_snapshot_picture() { |
Ricky_Kwon | 0:b2764ee848ec | 81 | CameraC328::ErrorNumber err = CameraC328::NoError; |
Ricky_Kwon | 0:b2764ee848ec | 82 | |
Ricky_Kwon | 0:b2764ee848ec | 83 | err = camera.getJpegSnapshotPicture(jpeg_callback); |
Ricky_Kwon | 0:b2764ee848ec | 84 | if (CameraC328::NoError == err) { |
Ricky_Kwon | 0:b2764ee848ec | 85 | printf("[ OK ] : CameraC328::getJpegSnapshotPicture\r\n"); |
Ricky_Kwon | 0:b2764ee848ec | 86 | } else { |
Ricky_Kwon | 0:b2764ee848ec | 87 | printf("[FAIL] : CameraC328::getJpegSnapshotPicture (Error=%02X)\r\n", (int)err); |
Ricky_Kwon | 0:b2764ee848ec | 88 | } |
Ricky_Kwon | 0:b2764ee848ec | 89 | } |
Ricky_Kwon | 0:b2764ee848ec | 90 | void init() |
Ricky_Kwon | 0:b2764ee848ec | 91 | { |
Ricky_Kwon | 0:b2764ee848ec | 92 | CameraC328::ErrorNumber err = CameraC328::NoError; |
Ricky_Kwon | 0:b2764ee848ec | 93 | |
Ricky_Kwon | 0:b2764ee848ec | 94 | #if (USE_JPEG_HIGH_RESOLUTION==1) |
Ricky_Kwon | 0:b2764ee848ec | 95 | err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution80x64); |
Ricky_Kwon | 0:b2764ee848ec | 96 | #elif (USE_JPEG_HIGH_RESOLUTION==2) |
Ricky_Kwon | 0:b2764ee848ec | 97 | err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution160x128); |
Ricky_Kwon | 0:b2764ee848ec | 98 | #elif (USE_JPEG_HIGH_RESOLUTION==3) |
Ricky_Kwon | 0:b2764ee848ec | 99 | err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution320x240); |
Ricky_Kwon | 0:b2764ee848ec | 100 | #elif (USE_JPEG_HIGH_RESOLUTION==4) |
Ricky_Kwon | 0:b2764ee848ec | 101 | err = camera.init(CameraC328::Jpeg, CameraC328::RawResolution80x60, CameraC328::JpegResolution640x480); |
Ricky_Kwon | 0:b2764ee848ec | 102 | #endif |
Ricky_Kwon | 0:b2764ee848ec | 103 | if (CameraC328::NoError == err) { |
Ricky_Kwon | 0:b2764ee848ec | 104 | printf("[ OK ] : CameraC328::init\r\n"); |
Ricky_Kwon | 0:b2764ee848ec | 105 | } else { |
Ricky_Kwon | 0:b2764ee848ec | 106 | printf("[FAIL] : CameraC328::init (Error=%02X)\r\n", (int)err); |
Ricky_Kwon | 0:b2764ee848ec | 107 | } |
Ricky_Kwon | 0:b2764ee848ec | 108 | } |