Wizwiki-W7500과 Wizfi250을 사용한 UDP통신

Dependencies:   Servo WizFi250Interface mbed-src

Fork of WizFi250_AP_HelloWorld by WIZnet

Committer:
Minsu
Date:
Wed Sep 09 09:19:34 2015 +0000
Revision:
1:88a24339327f
Parent:
0:87d959d6a3f3
123

Who changed what in which revision?

UserRevisionLine numberNew 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 }