fffff

Dependencies:   BufferedSoftSerial PinDetect

Files at this revision

API Documentation at this revision

Comitter:
mauuuuul
Date:
Tue Jun 18 06:19:28 2019 +0000
Parent:
2:50f1485931f1
Commit message:
kkkk

Changed in this revision

BufferedSoftSerial.lib Show annotated file Show diff for this revision Revisions of this file
PinDetect.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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/BufferedSoftSerial.lib	Tue Jun 18 06:19:28 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/Sissors/code/BufferedSoftSerial/#671a6724ce79
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PinDetect.lib	Tue Jun 18 06:19:28 2019 +0000
@@ -0,0 +1,1 @@
+https://os.mbed.com/users/AjK/code/PinDetect/#cb3afc45028b
--- a/main.cpp	Fri Jun 23 14:13:09 2017 -0500
+++ b/main.cpp	Tue Jun 18 06:19:28 2019 +0000
@@ -1,38 +1,295 @@
 #include "mbed.h"
 #include "EthernetInterface.h"
+#include "PinDetect.h"
+#include <string>
+#include "BufferedSoftSerial.h"
 
 // Network interface
 EthernetInterface net;
+Thread thdFindConnection;
+TCPSocket socket;
+Thread thdStartProccess;
+#define IP         "192.168.0.5"
+#define GATEWAY    "192.168.1.1"
+#define MASK       "255.255.255.0"
 
-// Socket demo
-int main() {
-    // Bring up the ethernet interface
-    printf("Ethernet socket example\n");
-    net.connect();
+#include "mbed.h"
+
+DigitalOut Led1(D7);
+DigitalOut Led2(D6);
+DigitalOut Led3(D5);
+
+PinDetect  pin1( PTC0 );
+PinDetect  pin2( PTC5 );
+
+BufferedSoftSerial device(PTD1,PTD3);
+
+Thread thdLedControl;
+
+int step = 1;
+bool PB1Pressed = false;
+bool isConnected = false;
+
+char cmdCheckConn[] = {0x0E, 0x0D, 0x31, 0x37, 0x30, 0x30, 0x30, 0x36, 0x30, 0x30, 0x30, 0x39, 0x35, 0x32};
+char cmdReady[] = {0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F};
+
+char cmdRun[] = {0x0C, 0x5F};
+
+char cmdCompareData1[] = {0x30, 0x39, 0x35};
+
+void ReconnectToServer()
+{
+
+    int i = net.set_network(IP,MASK,GATEWAY);
+    i = net.connect();
 
     // Show the network address
     const char *ip = net.get_ip_address();
-    printf("IP address is: %s\n", ip ? ip : "No IP");
 
     // Open a socket on the network interface, and create a TCP connection to mbed.org
-    TCPSocket socket;
     socket.open(&net);
-    socket.connect("www.arm.com", 80);
+    socket.connect("192.168.0.89", 5500);
+
+    isConnected = true;
+}
+
+void LedControl()
+{
+
+    while(1) {
+        switch(step) {
+            case 1: {
+                Led2 = 1;
+                Led3 = 1;
+                while(step == 1) {
+                    Led1 = !Led1;
+                    wait(0.5);
+                }
+            }
+            break;
+
+            case 2: {
+                Led1 = 0;
+                Led3 = 1;
+                while(step == 2) {
+                    Led2 = !Led2;
+                    wait(0.5);
+                }
+            }
+            break;
+
+            case 3: {
+                Led1 = 0;
+                Led2 = 0;
+                while(step == 3) {
+                    Led3 = !Led3;
+                    wait(0.5);
+                }
+            }
+            break;
+        }
+    }
+}
+
+void DC_TCP()
+{
+    socket.close();
+    net.disconnect();
+
+    isConnected = false;
+}
+
+void keyReleased()
+{
+    if(step == 2) {
+        if(!PB1Pressed) {
+            PB1Pressed = true;
+        }
+    }
+}
 
-    // Send a simple http request
-    char sbuffer[] = "GET / HTTP/1.1\r\nHost: www.arm.com\r\n\r\n";
-    int scount = socket.send(sbuffer, sizeof sbuffer);
-    printf("sent %d [%.*s]\n", scount, strstr(sbuffer, "\r\n")-sbuffer, sbuffer);
+void StartProccess()
+{
+
+    while(1) {
+
+        switch(step) {
+            case 1: {
+
+                char rbuffer[64];
+
+                int rcount = socket.recv(rbuffer, sizeof rbuffer);
+                if(rcount < 0) {
+                
+                } else if(rcount > 0) {
+                    rbuffer[rcount] = '\0';
+
+                    string data;
+
+                    for(int i = 0; i<sizeof(rbuffer); i++) {
+                        if(rbuffer[i] == '\0')break;
+                        data += rbuffer[i];
+                    }
+
+                    if(data == "F01") {
+                        step = 2;
+                        printf("Measurring Process is Getting Started..\r\n");
+                    }
+                } else if(rcount == 0) {
+                    printf("rcount = %d \r\n",rcount);
+                }
+
+            }
+            break;
+
+            case 2: {
+                if(PB1Pressed) {
+                    step = 3;
+
+                    //Serial Comm Start;
+                    printf("Measurring Process Starting.. \r\n");
+
+
+                    device.printf("Helo Maul");
+                }
+
+            }
+            break;
+
+            case 3: {
+                char buffer[256];
+                string data;
+
+                bool Done = false;
+                int sbuff = 0;
+                while(!Done) {
+
+                    int state = 0;
+                    char data1[3];
+                    char data2[20];
+                    char data3[256];
+                    int datacount = 0;
 
-    // Recieve a simple http response and print out the response line
-    char rbuffer[64];
-    int rcount = socket.recv(rbuffer, sizeof rbuffer);
-    printf("recv %d [%.*s]\n", rcount, strstr(rbuffer, "\r\n")-rbuffer, rbuffer);
+                    switch(state) {
+                        case 0: {
+
+                            while(device.readable()) {
+                                wait(0.01);
+                                char tempbuf = device.getc();
+                                data1[datacount] = tempbuf;
+
+                                datacount++;
+                            }
+
+                            if(datacount == 3) {
+
+                                bool equals = false;
+
+                                if(data1[0] == '0' && data1[1] == '9' && data1[2] == '5') equals = true;
+
+//                                if(data1[0] == '0')
+//                                    equals = true;
+//
+//                                if(data1[1] == '9')
+//                                    equals = true;
+//
+//                                if(data1[2] == '5')
+//                                    equals = true;
+
+                                if(equals) {
+                                    state = 1;
+                                    datacount = 1;
+                                    printf("state %d finish\r\n",state);
+                                }
+                            }
+                        }
+                        break;
+
+                        case 1: {
+                            if(device.readable()) {
+                                char tempbuf = device.getc();
+                                data2[datacount-1] = tempbuf;
+                                datacount++;
+                            }
+
+                            if(datacount == 10) {
+                                if(data2[0] == 0x5E) {
+                                    state = 2;
+                                    datacount = 0;
+                                    printf("state %d finish",state);
+                                }
+                            }
+                        }
+                        break;
+
+                        case 3: {
+                            if(device.readable()) {
+                                char tempbuf = device.getc();
+                                data3[datacount-1] = tempbuf;
+                                datacount++;
+                            }
 
-    // Close the socket to return its memory and bring down the network interface
-    socket.close();
+                            if(datacount > 48) {
+                                if(data3[datacount-1] == 0x30 && data3[datacount-2] == 0x05E) {
+                                    state = 3;
+                                    datacount = 0;
+
+                                    for(int i = 0; i<data3[datacount-1]; i++) {
+                                        printf("%c",data3[i]);
+
+                                        if(i == datacount-1) {
+                                            printf("\r\n");
+                                        }
+                                    }
+                                    Done = true;
+                                    step = 1;
+                                    PB1Pressed = false;
+                                    printf("Measurring Finish.. \r\n");
+                                    printf("state %d finish",state);
+                                }
+                            }
+                        }
+                        break;
+                    }
+                }
+            }
+            break;
+        }
+    }
+}
+
 
-    // Bring down the ethernet interface
-    net.disconnect();
-    printf("Done\n");
+void FindingServer()
+{
+    printf("Finding Server.....\r\n\r\n");
+    int i = net.set_network(IP,MASK,GATEWAY);
+    i = net.connect();
+
+    // Show the network address
+    const char *ip = net.get_ip_address();
+
+    // Open a socket on the network interface, and create a TCP connection to mbed.org
+    socket.open(&net);
+    socket.connect("192.168.0.89", 5500);
+    isConnected = true;
+    printf("Connected to Server....\r\n");
+    thdStartProccess.start(StartProccess);
 }
+
+// Socket demo
+int main()
+{
+    device.baud(9600);
+
+    pin1.mode( PullDown );
+    pin1.attach_deasserted( &keyReleased );
+    pin1.setSampleFrequency(); // Defaults to 20ms.
+
+    pin2.mode( PullDown );
+    pin2.attach_deasserted( &keyReleased );
+    pin2.setSampleFrequency(); // Defaults to 20ms.
+
+    wait(0.01);
+    thdFindConnection.start(FindingServer);
+    thdLedControl.start(LedControl);
+}