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

Dependencies:   Servo WizFi250Interface mbed-src

Fork of WizFi250_AP_HelloWorld by WIZnet

Files at this revision

API Documentation at this revision

Comitter:
Minsu
Date:
Wed Sep 09 09:19:34 2015 +0000
Parent:
0:87d959d6a3f3
Commit message:
123

Changed in this revision

Servo.lib Show annotated file Show diff for this revision Revisions of this file
WizFi250Interface.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-src.lib Show annotated file Show diff for this revision Revisions of this file
diff -r 87d959d6a3f3 -r 88a24339327f Servo.lib
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Servo.lib	Wed Sep 09 09:19:34 2015 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/simon/code/Servo/#36b69a7ced07
diff -r 87d959d6a3f3 -r 88a24339327f WizFi250Interface.lib
--- a/WizFi250Interface.lib	Tue Jul 14 06:55:18 2015 +0000
+++ b/WizFi250Interface.lib	Wed Sep 09 09:19:34 2015 +0000
@@ -1,1 +1,1 @@
-http://mbed.org/users/kaizen/code/WizFi250Interface/#1f5121c5efcd
+https://developer.mbed.org/users/Minsu/code/WizFi250Interface/#3a2282277ad0
diff -r 87d959d6a3f3 -r 88a24339327f main.cpp
--- a/main.cpp	Tue Jul 14 06:55:18 2015 +0000
+++ b/main.cpp	Wed Sep 09 09:19:34 2015 +0000
@@ -18,9 +18,14 @@
  */
 
 #include <stdio.h>
+#include <stdlib.h>
+
+#include "Servo.h"
+
 #include "mbed.h"
 #include "WizFi250Interface.h"
 
+#define ECHO_SERVER_PORT    7777
 
 #define SECURE WizFi250::SEC_WPA2_MIXED
 #define SSID "WizFi250_AP_Test"
@@ -31,21 +36,241 @@
     Serial pc(USBTX, USBRX);
 #endif
 
+DigitalOut red(LED1);
+DigitalOut green(LED2);
 
-/**
- *  \brief Hello World
- *  \param none
- *  \return int
- */
+void TCPServer();
+void UDPServer();
+
+char speed_str[6];
+char direction_str[10];
+volatile float speed_values;
+volatile float direction_values;
+volatile int speed_temp=0;
+
+
+
+Servo myservo(D6); //서보모터 
+PwmOut mypwm(D5); //브러쉬드DC모터
+
 int main()
 {
     pc.baud(115200);
+    
+    speed_values=0.0650; //중립value 0.0650
+    direction_values=0.5; //중립value 0.5
+    
+    red=1; //led off
+    green=1; //led off
  
     printf("WizFi250 Hello World demo. \r\n");
     wizfi250.init();
-    wizfi250.setAddress("192.168.100.1","255.255.255.0","192.168.100.1");
+    wizfi250.setAddress("192.168.101.10","255.255.255.0","192.168.101.1");
     if ( wizfi250.connect(SECURE, SSID, PASS, WizFi250::WM_AP))      return -1;
     printf("IP Address is %s\r\n", wizfi250.getIPAddress());
     
+    mypwm=speed_values;
+    myservo=direction_values;
+    wait(2);
+    
+    //TCPServer();
+    UDPServer();
+    
     wizfi250.disconnect();
-}
\ No newline at end of file
+
+}
+
+void TCPServer(){
+    char buffer[1024];
+    int n = 0;
+
+    
+    TCPSocketServer server;
+    server.bind(ECHO_SERVER_PORT);
+    server.listen();
+
+    printf("\nWait for new connection...\r\n");
+    green=0;
+    wait(0.5f);
+    green=1;
+    wait(0.5f);
+    green=0;
+    wait(0.5f);
+    green=1;
+    
+    TCPSocketConnection client;
+    server.accept(client);
+    client.set_blocking(false, 1500);
+
+    printf("Connection from: %s\r\n", client.get_address());
+    
+    
+    while (true)
+    {
+        if( client.is_connected() == false )
+        {
+            //client.close();
+            //printf("Client Close\r\n");
+            server.accept(client);
+            client.set_blocking(false, 1500);
+            //break;
+        }
+
+        n = client.receive(buffer, sizeof(buffer));
+        if( n > 0 )
+        {
+            buffer[n] = '\0';
+            /*
+            if(buffer[0] == 'H'){
+                myled=0;
+                printf("\n[LED On]\r\n");
+            }else if(buffer[0] == 'L'){
+                myled=1;
+                printf("\n[LED Off]\r\n");
+            }else{
+                printf("length : %d\r\n", n);
+                client.send_all(buffer, n);  
+            }*/
+            
+            if(buffer[0] == 'D'){
+                direction_str[0]=buffer[1];
+                direction_str[1]=buffer[2];
+                direction_values = atoi(direction_str);
+                
+                direction_values = direction_values * 0.01;
+                
+                if(direction_values > 0.90)
+                    direction_values = 0.9;
+                else if(direction_values < 0.10)
+                    direction_values = 0.1;
+                printf("Direction value : %f\r\n", direction_values);    
+                
+                speed_str[0]=buffer[3];
+                speed_str[1]=buffer[4];
+                speed_str[2]=buffer[5];
+                speed_str[3]=buffer[6];
+                
+                speed_values = atoi(speed_str);
+                speed_temp=speed_values;
+                speed_values = speed_values * 0.00001;
+                printf("Speed value : %f, %d\r\n", speed_values, speed_temp);
+                
+                mypwm = (double) speed_values;
+                myservo = (double) direction_values;  
+            }else{
+                //printf("not if\r\n");
+                printf("%s\r\n", buffer);
+            }
+            //printf("length : %d\r\n", n);
+            //client.send_all(buffer, n);  
+            
+        }        
+    }
+}
+
+void UDPServer(){
+    UDPSocket server;
+    printf("Socket create\r\n");
+    server.set_blocking(false);
+    printf("Blocking\r\n");
+    server.bind(ECHO_SERVER_PORT);
+    printf("Bind\r\n");
+
+    Endpoint client;
+    printf("Client create\r\n");
+    green=0;
+    wait(0.3f);
+    green=1;
+    wait(0.3f);
+    green=0;
+    wait(0.3f);
+    green=1;
+    
+    //char buffer[256];
+    char buffer[7] = {0};
+    volatile int n=0;
+    
+    while(true){
+        //printf("Receive\r\n");
+        n = server.receiveFrom(client, buffer, sizeof(buffer));
+        
+        //printf("Receive\r\n");
+        
+        if(n > 0){            
+            if(buffer[0] == 'D'){
+                green=0; //On
+                
+                direction_str[0]=buffer[1];
+                direction_str[1]=buffer[2];
+                direction_values = atoi(direction_str);
+                
+                direction_values = direction_values * 0.01;
+                
+                /*
+                if(direction_values > 0.90)
+                    direction_values = 0.9;
+                else if(direction_values < 0.10)
+                    direction_values = 0.1;
+                */
+                printf("Direction value : %f\r\n", direction_values);    
+                
+                
+                printf("[%c%c%c]", buffer[0], buffer[1], buffer[2]);
+                
+                speed_str[0]=buffer[3];
+                speed_str[1]=buffer[4];
+                speed_str[2]=buffer[5];
+                speed_str[3]=buffer[6];
+                
+                speed_values = atoi(speed_str);
+                speed_temp=speed_values;
+                speed_values = speed_values * 0.00001;
+                printf("Speed value : %f, %d\r\n", speed_values, speed_temp);
+                
+                mypwm = (double) speed_values;
+                myservo = (double) direction_values;  
+            }else{
+                red=0;
+                if(buffer[1]=='D'){
+                    green=0;
+                    green=1;
+                    green=0;
+                    green=1;
+                    direction_str[0]=buffer[2];
+                    direction_str[1]=buffer[3];
+                    direction_values = atoi(direction_str);
+                    
+                    direction_values = direction_values * 0.01;
+                    
+                    if(direction_values > 0.90)
+                        direction_values = 0.9;
+                    else if(direction_values < 0.10)
+                        direction_values = 0.1;
+                    printf("Direction value : %f\r\n", direction_values);    
+                    
+                    
+                    printf("[%c%c%c]", buffer[0], buffer[1], buffer[2]);
+                    
+                    speed_str[0]=buffer[4];
+                    speed_str[1]=buffer[5];
+                    speed_str[2]=buffer[6];
+                    speed_str[3]=0;
+                    
+                    speed_values = atoi(speed_str);
+                    speed_temp=speed_values;
+                    speed_values = speed_values * 0.00001;
+                    printf("Speed value : %f, %d\r\n", speed_values, speed_temp);
+                    
+                    mypwm = (double) speed_values;
+                    myservo = (double) direction_values;  
+                }
+                printf("%s\r\n", buffer);
+                memset(buffer, 0, sizeof(buffer));
+                
+            }
+            green=1;
+            red=1;
+            memset(buffer, 0, sizeof(buffer));
+        }
+    }
+}
diff -r 87d959d6a3f3 -r 88a24339327f mbed-src.lib
--- a/mbed-src.lib	Tue Jul 14 06:55:18 2015 +0000
+++ b/mbed-src.lib	Wed Sep 09 09:19:34 2015 +0000
@@ -1,1 +1,1 @@
-https://developer.mbed.org/users/kaizen/code/mbed-src/#cf2abc059970
+https://developer.mbed.org/users/Minsu/code/mbed-src/#cf2abc059970