fffff
Dependencies: BufferedSoftSerial PinDetect
Revision 3:ca5869d9fd5a, committed 2019-06-18
- Comitter:
- mauuuuul
- Date:
- Tue Jun 18 06:19:28 2019 +0000
- Parent:
- 2:50f1485931f1
- Commit message:
- kkkk
Changed in this revision
--- /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); +}