Wizwiki-W7500과 Wizfi250을 사용한 UDP통신
Dependencies: Servo WizFi250Interface mbed-src
Fork of WizFi250_AP_HelloWorld by
main.cpp@1:88a24339327f, 2015-09-09 (annotated)
- Committer:
- Minsu
- Date:
- Wed Sep 09 09:19:34 2015 +0000
- Revision:
- 1:88a24339327f
- Parent:
- 0:87d959d6a3f3
123
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
kaizen | 0:87d959d6a3f3 | 1 | /* |
kaizen | 0:87d959d6a3f3 | 2 | * Copyright (C) 2015 Wiznet, MIT License |
kaizen | 0:87d959d6a3f3 | 3 | * |
kaizen | 0:87d959d6a3f3 | 4 | * Permission is hereby granted, free of charge, to any person obtaining a copy of this software |
kaizen | 0:87d959d6a3f3 | 5 | * and associated documentation files (the "Software"), to deal in the Software without restriction, |
kaizen | 0:87d959d6a3f3 | 6 | * including without limitation the rights to use, copy, modify, merge, publish, distribute, |
kaizen | 0:87d959d6a3f3 | 7 | * sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is |
kaizen | 0:87d959d6a3f3 | 8 | * furnished to do so, subject to the following conditions: |
kaizen | 0:87d959d6a3f3 | 9 | * |
kaizen | 0:87d959d6a3f3 | 10 | * The above copyright notice and this permission notice shall be included in all copies or |
kaizen | 0:87d959d6a3f3 | 11 | * substantial portions of the Software. |
kaizen | 0:87d959d6a3f3 | 12 | * |
kaizen | 0:87d959d6a3f3 | 13 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING |
kaizen | 0:87d959d6a3f3 | 14 | * BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
kaizen | 0:87d959d6a3f3 | 15 | * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, |
kaizen | 0:87d959d6a3f3 | 16 | * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
kaizen | 0:87d959d6a3f3 | 17 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
kaizen | 0:87d959d6a3f3 | 18 | */ |
kaizen | 0:87d959d6a3f3 | 19 | |
kaizen | 0:87d959d6a3f3 | 20 | #include <stdio.h> |
Minsu | 1:88a24339327f | 21 | #include <stdlib.h> |
Minsu | 1:88a24339327f | 22 | |
Minsu | 1:88a24339327f | 23 | #include "Servo.h" |
Minsu | 1:88a24339327f | 24 | |
kaizen | 0:87d959d6a3f3 | 25 | #include "mbed.h" |
kaizen | 0:87d959d6a3f3 | 26 | #include "WizFi250Interface.h" |
kaizen | 0:87d959d6a3f3 | 27 | |
Minsu | 1:88a24339327f | 28 | #define ECHO_SERVER_PORT 7777 |
kaizen | 0:87d959d6a3f3 | 29 | |
kaizen | 0:87d959d6a3f3 | 30 | #define SECURE WizFi250::SEC_WPA2_MIXED |
kaizen | 0:87d959d6a3f3 | 31 | #define SSID "WizFi250_AP_Test" |
kaizen | 0:87d959d6a3f3 | 32 | #define PASS "1234567890" |
kaizen | 0:87d959d6a3f3 | 33 | |
kaizen | 0:87d959d6a3f3 | 34 | #if defined(TARGET_WIZwiki_W7500) |
kaizen | 0:87d959d6a3f3 | 35 | WizFi250Interface wizfi250(D1,D0,D7,D8,PA_12,NC,115200); |
kaizen | 0:87d959d6a3f3 | 36 | Serial pc(USBTX, USBRX); |
kaizen | 0:87d959d6a3f3 | 37 | #endif |
kaizen | 0:87d959d6a3f3 | 38 | |
Minsu | 1:88a24339327f | 39 | DigitalOut red(LED1); |
Minsu | 1:88a24339327f | 40 | DigitalOut green(LED2); |
kaizen | 0:87d959d6a3f3 | 41 | |
Minsu | 1:88a24339327f | 42 | void TCPServer(); |
Minsu | 1:88a24339327f | 43 | void UDPServer(); |
Minsu | 1:88a24339327f | 44 | |
Minsu | 1:88a24339327f | 45 | char speed_str[6]; |
Minsu | 1:88a24339327f | 46 | char direction_str[10]; |
Minsu | 1:88a24339327f | 47 | volatile float speed_values; |
Minsu | 1:88a24339327f | 48 | volatile float direction_values; |
Minsu | 1:88a24339327f | 49 | volatile int speed_temp=0; |
Minsu | 1:88a24339327f | 50 | |
Minsu | 1:88a24339327f | 51 | |
Minsu | 1:88a24339327f | 52 | |
Minsu | 1:88a24339327f | 53 | Servo myservo(D6); //서보모터 |
Minsu | 1:88a24339327f | 54 | PwmOut mypwm(D5); //브러쉬드DC모터 |
Minsu | 1:88a24339327f | 55 | |
kaizen | 0:87d959d6a3f3 | 56 | int main() |
kaizen | 0:87d959d6a3f3 | 57 | { |
kaizen | 0:87d959d6a3f3 | 58 | pc.baud(115200); |
Minsu | 1:88a24339327f | 59 | |
Minsu | 1:88a24339327f | 60 | speed_values=0.0650; //중립value 0.0650 |
Minsu | 1:88a24339327f | 61 | direction_values=0.5; //중립value 0.5 |
Minsu | 1:88a24339327f | 62 | |
Minsu | 1:88a24339327f | 63 | red=1; //led off |
Minsu | 1:88a24339327f | 64 | green=1; //led off |
kaizen | 0:87d959d6a3f3 | 65 | |
kaizen | 0:87d959d6a3f3 | 66 | printf("WizFi250 Hello World demo. \r\n"); |
kaizen | 0:87d959d6a3f3 | 67 | wizfi250.init(); |
Minsu | 1:88a24339327f | 68 | wizfi250.setAddress("192.168.101.10","255.255.255.0","192.168.101.1"); |
kaizen | 0:87d959d6a3f3 | 69 | if ( wizfi250.connect(SECURE, SSID, PASS, WizFi250::WM_AP)) return -1; |
kaizen | 0:87d959d6a3f3 | 70 | printf("IP Address is %s\r\n", wizfi250.getIPAddress()); |
kaizen | 0:87d959d6a3f3 | 71 | |
Minsu | 1:88a24339327f | 72 | mypwm=speed_values; |
Minsu | 1:88a24339327f | 73 | myservo=direction_values; |
Minsu | 1:88a24339327f | 74 | wait(2); |
Minsu | 1:88a24339327f | 75 | |
Minsu | 1:88a24339327f | 76 | //TCPServer(); |
Minsu | 1:88a24339327f | 77 | UDPServer(); |
Minsu | 1:88a24339327f | 78 | |
kaizen | 0:87d959d6a3f3 | 79 | wizfi250.disconnect(); |
Minsu | 1:88a24339327f | 80 | |
Minsu | 1:88a24339327f | 81 | } |
Minsu | 1:88a24339327f | 82 | |
Minsu | 1:88a24339327f | 83 | void TCPServer(){ |
Minsu | 1:88a24339327f | 84 | char buffer[1024]; |
Minsu | 1:88a24339327f | 85 | int n = 0; |
Minsu | 1:88a24339327f | 86 | |
Minsu | 1:88a24339327f | 87 | |
Minsu | 1:88a24339327f | 88 | TCPSocketServer server; |
Minsu | 1:88a24339327f | 89 | server.bind(ECHO_SERVER_PORT); |
Minsu | 1:88a24339327f | 90 | server.listen(); |
Minsu | 1:88a24339327f | 91 | |
Minsu | 1:88a24339327f | 92 | printf("\nWait for new connection...\r\n"); |
Minsu | 1:88a24339327f | 93 | green=0; |
Minsu | 1:88a24339327f | 94 | wait(0.5f); |
Minsu | 1:88a24339327f | 95 | green=1; |
Minsu | 1:88a24339327f | 96 | wait(0.5f); |
Minsu | 1:88a24339327f | 97 | green=0; |
Minsu | 1:88a24339327f | 98 | wait(0.5f); |
Minsu | 1:88a24339327f | 99 | green=1; |
Minsu | 1:88a24339327f | 100 | |
Minsu | 1:88a24339327f | 101 | TCPSocketConnection client; |
Minsu | 1:88a24339327f | 102 | server.accept(client); |
Minsu | 1:88a24339327f | 103 | client.set_blocking(false, 1500); |
Minsu | 1:88a24339327f | 104 | |
Minsu | 1:88a24339327f | 105 | printf("Connection from: %s\r\n", client.get_address()); |
Minsu | 1:88a24339327f | 106 | |
Minsu | 1:88a24339327f | 107 | |
Minsu | 1:88a24339327f | 108 | while (true) |
Minsu | 1:88a24339327f | 109 | { |
Minsu | 1:88a24339327f | 110 | if( client.is_connected() == false ) |
Minsu | 1:88a24339327f | 111 | { |
Minsu | 1:88a24339327f | 112 | //client.close(); |
Minsu | 1:88a24339327f | 113 | //printf("Client Close\r\n"); |
Minsu | 1:88a24339327f | 114 | server.accept(client); |
Minsu | 1:88a24339327f | 115 | client.set_blocking(false, 1500); |
Minsu | 1:88a24339327f | 116 | //break; |
Minsu | 1:88a24339327f | 117 | } |
Minsu | 1:88a24339327f | 118 | |
Minsu | 1:88a24339327f | 119 | n = client.receive(buffer, sizeof(buffer)); |
Minsu | 1:88a24339327f | 120 | if( n > 0 ) |
Minsu | 1:88a24339327f | 121 | { |
Minsu | 1:88a24339327f | 122 | buffer[n] = '\0'; |
Minsu | 1:88a24339327f | 123 | /* |
Minsu | 1:88a24339327f | 124 | if(buffer[0] == 'H'){ |
Minsu | 1:88a24339327f | 125 | myled=0; |
Minsu | 1:88a24339327f | 126 | printf("\n[LED On]\r\n"); |
Minsu | 1:88a24339327f | 127 | }else if(buffer[0] == 'L'){ |
Minsu | 1:88a24339327f | 128 | myled=1; |
Minsu | 1:88a24339327f | 129 | printf("\n[LED Off]\r\n"); |
Minsu | 1:88a24339327f | 130 | }else{ |
Minsu | 1:88a24339327f | 131 | printf("length : %d\r\n", n); |
Minsu | 1:88a24339327f | 132 | client.send_all(buffer, n); |
Minsu | 1:88a24339327f | 133 | }*/ |
Minsu | 1:88a24339327f | 134 | |
Minsu | 1:88a24339327f | 135 | if(buffer[0] == 'D'){ |
Minsu | 1:88a24339327f | 136 | direction_str[0]=buffer[1]; |
Minsu | 1:88a24339327f | 137 | direction_str[1]=buffer[2]; |
Minsu | 1:88a24339327f | 138 | direction_values = atoi(direction_str); |
Minsu | 1:88a24339327f | 139 | |
Minsu | 1:88a24339327f | 140 | direction_values = direction_values * 0.01; |
Minsu | 1:88a24339327f | 141 | |
Minsu | 1:88a24339327f | 142 | if(direction_values > 0.90) |
Minsu | 1:88a24339327f | 143 | direction_values = 0.9; |
Minsu | 1:88a24339327f | 144 | else if(direction_values < 0.10) |
Minsu | 1:88a24339327f | 145 | direction_values = 0.1; |
Minsu | 1:88a24339327f | 146 | printf("Direction value : %f\r\n", direction_values); |
Minsu | 1:88a24339327f | 147 | |
Minsu | 1:88a24339327f | 148 | speed_str[0]=buffer[3]; |
Minsu | 1:88a24339327f | 149 | speed_str[1]=buffer[4]; |
Minsu | 1:88a24339327f | 150 | speed_str[2]=buffer[5]; |
Minsu | 1:88a24339327f | 151 | speed_str[3]=buffer[6]; |
Minsu | 1:88a24339327f | 152 | |
Minsu | 1:88a24339327f | 153 | speed_values = atoi(speed_str); |
Minsu | 1:88a24339327f | 154 | speed_temp=speed_values; |
Minsu | 1:88a24339327f | 155 | speed_values = speed_values * 0.00001; |
Minsu | 1:88a24339327f | 156 | printf("Speed value : %f, %d\r\n", speed_values, speed_temp); |
Minsu | 1:88a24339327f | 157 | |
Minsu | 1:88a24339327f | 158 | mypwm = (double) speed_values; |
Minsu | 1:88a24339327f | 159 | myservo = (double) direction_values; |
Minsu | 1:88a24339327f | 160 | }else{ |
Minsu | 1:88a24339327f | 161 | //printf("not if\r\n"); |
Minsu | 1:88a24339327f | 162 | printf("%s\r\n", buffer); |
Minsu | 1:88a24339327f | 163 | } |
Minsu | 1:88a24339327f | 164 | //printf("length : %d\r\n", n); |
Minsu | 1:88a24339327f | 165 | //client.send_all(buffer, n); |
Minsu | 1:88a24339327f | 166 | |
Minsu | 1:88a24339327f | 167 | } |
Minsu | 1:88a24339327f | 168 | } |
Minsu | 1:88a24339327f | 169 | } |
Minsu | 1:88a24339327f | 170 | |
Minsu | 1:88a24339327f | 171 | void UDPServer(){ |
Minsu | 1:88a24339327f | 172 | UDPSocket server; |
Minsu | 1:88a24339327f | 173 | printf("Socket create\r\n"); |
Minsu | 1:88a24339327f | 174 | server.set_blocking(false); |
Minsu | 1:88a24339327f | 175 | printf("Blocking\r\n"); |
Minsu | 1:88a24339327f | 176 | server.bind(ECHO_SERVER_PORT); |
Minsu | 1:88a24339327f | 177 | printf("Bind\r\n"); |
Minsu | 1:88a24339327f | 178 | |
Minsu | 1:88a24339327f | 179 | Endpoint client; |
Minsu | 1:88a24339327f | 180 | printf("Client create\r\n"); |
Minsu | 1:88a24339327f | 181 | green=0; |
Minsu | 1:88a24339327f | 182 | wait(0.3f); |
Minsu | 1:88a24339327f | 183 | green=1; |
Minsu | 1:88a24339327f | 184 | wait(0.3f); |
Minsu | 1:88a24339327f | 185 | green=0; |
Minsu | 1:88a24339327f | 186 | wait(0.3f); |
Minsu | 1:88a24339327f | 187 | green=1; |
Minsu | 1:88a24339327f | 188 | |
Minsu | 1:88a24339327f | 189 | //char buffer[256]; |
Minsu | 1:88a24339327f | 190 | char buffer[7] = {0}; |
Minsu | 1:88a24339327f | 191 | volatile int n=0; |
Minsu | 1:88a24339327f | 192 | |
Minsu | 1:88a24339327f | 193 | while(true){ |
Minsu | 1:88a24339327f | 194 | //printf("Receive\r\n"); |
Minsu | 1:88a24339327f | 195 | n = server.receiveFrom(client, buffer, sizeof(buffer)); |
Minsu | 1:88a24339327f | 196 | |
Minsu | 1:88a24339327f | 197 | //printf("Receive\r\n"); |
Minsu | 1:88a24339327f | 198 | |
Minsu | 1:88a24339327f | 199 | if(n > 0){ |
Minsu | 1:88a24339327f | 200 | if(buffer[0] == 'D'){ |
Minsu | 1:88a24339327f | 201 | green=0; //On |
Minsu | 1:88a24339327f | 202 | |
Minsu | 1:88a24339327f | 203 | direction_str[0]=buffer[1]; |
Minsu | 1:88a24339327f | 204 | direction_str[1]=buffer[2]; |
Minsu | 1:88a24339327f | 205 | direction_values = atoi(direction_str); |
Minsu | 1:88a24339327f | 206 | |
Minsu | 1:88a24339327f | 207 | direction_values = direction_values * 0.01; |
Minsu | 1:88a24339327f | 208 | |
Minsu | 1:88a24339327f | 209 | /* |
Minsu | 1:88a24339327f | 210 | if(direction_values > 0.90) |
Minsu | 1:88a24339327f | 211 | direction_values = 0.9; |
Minsu | 1:88a24339327f | 212 | else if(direction_values < 0.10) |
Minsu | 1:88a24339327f | 213 | direction_values = 0.1; |
Minsu | 1:88a24339327f | 214 | */ |
Minsu | 1:88a24339327f | 215 | printf("Direction value : %f\r\n", direction_values); |
Minsu | 1:88a24339327f | 216 | |
Minsu | 1:88a24339327f | 217 | |
Minsu | 1:88a24339327f | 218 | printf("[%c%c%c]", buffer[0], buffer[1], buffer[2]); |
Minsu | 1:88a24339327f | 219 | |
Minsu | 1:88a24339327f | 220 | speed_str[0]=buffer[3]; |
Minsu | 1:88a24339327f | 221 | speed_str[1]=buffer[4]; |
Minsu | 1:88a24339327f | 222 | speed_str[2]=buffer[5]; |
Minsu | 1:88a24339327f | 223 | speed_str[3]=buffer[6]; |
Minsu | 1:88a24339327f | 224 | |
Minsu | 1:88a24339327f | 225 | speed_values = atoi(speed_str); |
Minsu | 1:88a24339327f | 226 | speed_temp=speed_values; |
Minsu | 1:88a24339327f | 227 | speed_values = speed_values * 0.00001; |
Minsu | 1:88a24339327f | 228 | printf("Speed value : %f, %d\r\n", speed_values, speed_temp); |
Minsu | 1:88a24339327f | 229 | |
Minsu | 1:88a24339327f | 230 | mypwm = (double) speed_values; |
Minsu | 1:88a24339327f | 231 | myservo = (double) direction_values; |
Minsu | 1:88a24339327f | 232 | }else{ |
Minsu | 1:88a24339327f | 233 | red=0; |
Minsu | 1:88a24339327f | 234 | if(buffer[1]=='D'){ |
Minsu | 1:88a24339327f | 235 | green=0; |
Minsu | 1:88a24339327f | 236 | green=1; |
Minsu | 1:88a24339327f | 237 | green=0; |
Minsu | 1:88a24339327f | 238 | green=1; |
Minsu | 1:88a24339327f | 239 | direction_str[0]=buffer[2]; |
Minsu | 1:88a24339327f | 240 | direction_str[1]=buffer[3]; |
Minsu | 1:88a24339327f | 241 | direction_values = atoi(direction_str); |
Minsu | 1:88a24339327f | 242 | |
Minsu | 1:88a24339327f | 243 | direction_values = direction_values * 0.01; |
Minsu | 1:88a24339327f | 244 | |
Minsu | 1:88a24339327f | 245 | if(direction_values > 0.90) |
Minsu | 1:88a24339327f | 246 | direction_values = 0.9; |
Minsu | 1:88a24339327f | 247 | else if(direction_values < 0.10) |
Minsu | 1:88a24339327f | 248 | direction_values = 0.1; |
Minsu | 1:88a24339327f | 249 | printf("Direction value : %f\r\n", direction_values); |
Minsu | 1:88a24339327f | 250 | |
Minsu | 1:88a24339327f | 251 | |
Minsu | 1:88a24339327f | 252 | printf("[%c%c%c]", buffer[0], buffer[1], buffer[2]); |
Minsu | 1:88a24339327f | 253 | |
Minsu | 1:88a24339327f | 254 | speed_str[0]=buffer[4]; |
Minsu | 1:88a24339327f | 255 | speed_str[1]=buffer[5]; |
Minsu | 1:88a24339327f | 256 | speed_str[2]=buffer[6]; |
Minsu | 1:88a24339327f | 257 | speed_str[3]=0; |
Minsu | 1:88a24339327f | 258 | |
Minsu | 1:88a24339327f | 259 | speed_values = atoi(speed_str); |
Minsu | 1:88a24339327f | 260 | speed_temp=speed_values; |
Minsu | 1:88a24339327f | 261 | speed_values = speed_values * 0.00001; |
Minsu | 1:88a24339327f | 262 | printf("Speed value : %f, %d\r\n", speed_values, speed_temp); |
Minsu | 1:88a24339327f | 263 | |
Minsu | 1:88a24339327f | 264 | mypwm = (double) speed_values; |
Minsu | 1:88a24339327f | 265 | myservo = (double) direction_values; |
Minsu | 1:88a24339327f | 266 | } |
Minsu | 1:88a24339327f | 267 | printf("%s\r\n", buffer); |
Minsu | 1:88a24339327f | 268 | memset(buffer, 0, sizeof(buffer)); |
Minsu | 1:88a24339327f | 269 | |
Minsu | 1:88a24339327f | 270 | } |
Minsu | 1:88a24339327f | 271 | green=1; |
Minsu | 1:88a24339327f | 272 | red=1; |
Minsu | 1:88a24339327f | 273 | memset(buffer, 0, sizeof(buffer)); |
Minsu | 1:88a24339327f | 274 | } |
Minsu | 1:88a24339327f | 275 | } |
Minsu | 1:88a24339327f | 276 | } |