Windshape control / Mbed OS Controle_ventilo_ethernet_v1_2_4

Fork of Controle_ventilo_ethernet_v1_2_4 by Sergio Márquez

Revision:
3:6c54aa6db861
Parent:
2:1dd0818af42e
Child:
4:fb63da7601aa
--- a/main.cpp	Fri Nov 18 10:48:35 2016 +0000
+++ b/main.cpp	Fri Jan 20 17:54:22 2017 +0000
@@ -2,69 +2,146 @@
 #include "EthernetInterface.h"
 #include "Ethernet.h"
 
-/*#include "TCPSocket.h"
-#include "TCPServer.h"*/
+#include "TCPSocket.h"
 
 #include "SocketAddress.h"
 #include "Socket.h"
 #include "UDPSocket.h"
 
-const char* ECHO_SERVER_ADDRESS = "192.168.2.2";
-const int ECHO_SERVER_PORT = 7;
- 
-int main() {
-    EthernetInterface eth;
-    eth.Ethernet(); // problème lib ethernet
+#include <string.h> 
+//using namespace std;
+
+const char* ECHO_SERVER_ADDRESS = "192.168.0.146";    // addresse du PC home "192.168.1.2" sergio "169.254.61.104" or "129.194.185.33" or "255.255.252.0" liotard "10.136.134.73"
+//#define IP "10.136.134.100"
+//#define GATEWAY "10.136.132.1"         //"129.194.184.1"
+//#define MASK "255.255.252.0"
+const int ECHO_SERVER_PORT = 1025;  
+
+// Front fans
+//PwmOut frontFans[] = {(PB_11), (PE_14), (PE_9), (PB_3), (PB_15), (PB_6), (PB_13), (PE_5), (PC_8)}; // PE_11 also possible for front fan n°5
+
+// Rear fans
+//PwmOut rearFans[] = {(PB_10), (PE_12), (PE_10), (PE_11), (PC_6), (PD_13), (PC_7), (PE_6), (PC_9)}; // PE_10 also possible for rear fans n°5
+
+PwmOut frontFans[9]={PB_11,PE_14,PE_9,PB_3,PB_15,PB_6,PB_13,PE_5,PC_8};
+PwmOut rearFans[9]={PB_10,PE_12,PE_10,PE_11,PC_6,PD_13,PC_7,PE_6,PC_9};
+
+DigitalOut fantest(LED1);
+
+// Receive string
+char FR_str[2] = {0};
+char fan_str[10] = {0};
+char pwm_str[4] = {0};
+int FR = 0;
+int fan[10] = {0};
+float pwm_f = 0.0;
+int FR_len = 0;
+int fan_len = 0;
+int pwm_len = 0;
+
+void splitString(char stringToSplit[]);
+
+int main(int argc, char *argv[]) {
+    
+    for(int j = 0; j < 9; j++){
+        frontFans[j].period_ms(10);
+        rearFans[j].period_ms(10);
+        frontFans[j].write(0.0);
+        rearFans[j].write(0.0);
+    }
+    
+    /*fantest.period_ms(10);
+    fantest.write(0.1);*/
+    
+    EthernetInterface eth;                          // init interface ethernet de la carte
+    UDPSocket sock;                                 // init le socket en UDP de la carte
+    SocketAddress echo_server; 
+    
     eth.connect();
+    sock.open(&eth);
+    
+    //eth.set_network(IP,MASK,GATEWAY);
+    
     printf("\nClient IP Address is %s \n", eth.get_ip_address());
     
-    UDPSocket sock;
-    sock.UDPSocket(); // problème lib UDPSocket
-    
-    SocketAddress echo_server;
     echo_server.set_ip_address(ECHO_SERVER_ADDRESS);
     echo_server.set_port(ECHO_SERVER_PORT);
     
-    char out_buffer[] = "Hello World";
-    printf("Sending  message '%s' to server (%s)\n",out_buffer,ECHO_SERVER_ADDRESS);
-    sock.sendto(echo_server, out_buffer, sizeof(out_buffer));
+    fantest = 1;
+    wait(1);
+    fantest = 0;
+    wait(1);
     
-    char in_buffer[256];
-    int n = sock.recvfrom(&echo_server, in_buffer, sizeof(in_buffer));
+    //wait(10);
     
-    in_buffer[n] = '\0';
-    printf("Received message from server: '%s'\n", in_buffer);
-    
-    sock.close();
-    
-    eth.disconnect();
-    while(1) {}
+    while(1){
+        char out_buffer[] = "Envoyez moi une vitesse plz !";
+        printf("Sending  message '%s' to server (%s)\n",out_buffer,ECHO_SERVER_ADDRESS);
+        sock.sendto(echo_server, out_buffer, sizeof(out_buffer));
+        
+        char in_buffer[256];
+        int n = sock.recvfrom(&echo_server, in_buffer, sizeof(in_buffer));    
+        
+        in_buffer[n] = '\0';
+        
+        printf("%s\n", in_buffer);
+        
+        //int buff_in = atoi(in_buffer);
+        splitString(in_buffer);
+        
+        printf("%d\n%d\n%lf\n", FR, fan[2], pwm_f);
+        
+        //wait(10);
+        
+        switch(FR){
+            case 0:         // front fans
+            for(int i = 0; i < fan_len; i++){
+                frontFans[fan[i] - 1].write(pwm_f);
+            }
+            break;
+            
+            case 1:         // rear fans
+            for(int i = 0; i < fan_len; i++){
+                rearFans[fan[i] - 1].write(pwm_f);
+            }
+            break;
+            
+            case 2:         // both fans
+            for(int i = 0; i < fan_len; i++){
+                frontFans[fan[i] - 1].write(pwm_f);
+                rearFans[fan[i] - 1].write(pwm_f);
+            }
+            break;
+            
+            default:
+            for(int j = 0; j < 9; j++){
+                frontFans[j].write(0.0);
+                rearFans[j].write(0.0);
+            }
+        }
+        
+        //wait(5);
+    }
 }
 
-// code python
-
-/*
-import socket
-import signal
-import sys
- 
-def signal_handler(signal, frame):
-    print 'You pressed Ctrl+C!'
-    sock.close()
-    sys.exit(0)
- 
-signal.signal(signal.SIGINT, signal_handler)
- 
-ECHO_PORT = 7
- 
-print 'Server Running at ', socket.gethostbyname(socket.gethostname()) 
-sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-sock.bind(('', ECHO_PORT))
- 
-while True:
-    print "waiting for UDP data packet..."
-    data, address = sock.recvfrom(256)
-    print "Received packet from", address, "with data",data
-    print "Sending  packet back to client"
-    sock.sendto(data, address)
-*/
\ No newline at end of file
+void splitString(char stringToSplit[]){
+    char *comma_1 = strchr(stringToSplit, ',') + 1;
+    char *comma_2 = strchr(comma_1, ',') + 1;
+    char *comma_3 = strchr(comma_3, '\0');
+    
+    FR_len = comma_1 - stringToSplit - 1;
+    fan_len = comma_2 - comma_1 - 1;
+    pwm_len = comma_3 - comma_2;
+    
+    strncpy(FR_str, stringToSplit, 1);
+    FR = atoi(FR_str);
+    
+    strncpy(fan_str, comma_1, fan_len);
+    for(int i = 0; i < fan_len; i++){
+        fan[i] = fan_str[i] - '0';
+    }
+    
+    strncpy(pwm_str, comma_2, pwm_len);
+    int pwm = atoi(pwm_str);
+    pwm_f = (float)pwm/100.0;
+}
\ No newline at end of file