fffff

Dependencies:   BufferedSoftSerial PinDetect

Committer:
mauuuuul
Date:
Tue Jun 18 06:19:28 2019 +0000
Revision:
3:ca5869d9fd5a
Parent:
1:965d7fb768b6
kkkk

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mab5449 0:6b383744246e 1 #include "mbed.h"
mab5449 0:6b383744246e 2 #include "EthernetInterface.h"
mauuuuul 3:ca5869d9fd5a 3 #include "PinDetect.h"
mauuuuul 3:ca5869d9fd5a 4 #include <string>
mauuuuul 3:ca5869d9fd5a 5 #include "BufferedSoftSerial.h"
mab5449 0:6b383744246e 6
mab5449 0:6b383744246e 7 // Network interface
mab5449 0:6b383744246e 8 EthernetInterface net;
mauuuuul 3:ca5869d9fd5a 9 Thread thdFindConnection;
mauuuuul 3:ca5869d9fd5a 10 TCPSocket socket;
mauuuuul 3:ca5869d9fd5a 11 Thread thdStartProccess;
mauuuuul 3:ca5869d9fd5a 12 #define IP "192.168.0.5"
mauuuuul 3:ca5869d9fd5a 13 #define GATEWAY "192.168.1.1"
mauuuuul 3:ca5869d9fd5a 14 #define MASK "255.255.255.0"
mab5449 0:6b383744246e 15
mauuuuul 3:ca5869d9fd5a 16 #include "mbed.h"
mauuuuul 3:ca5869d9fd5a 17
mauuuuul 3:ca5869d9fd5a 18 DigitalOut Led1(D7);
mauuuuul 3:ca5869d9fd5a 19 DigitalOut Led2(D6);
mauuuuul 3:ca5869d9fd5a 20 DigitalOut Led3(D5);
mauuuuul 3:ca5869d9fd5a 21
mauuuuul 3:ca5869d9fd5a 22 PinDetect pin1( PTC0 );
mauuuuul 3:ca5869d9fd5a 23 PinDetect pin2( PTC5 );
mauuuuul 3:ca5869d9fd5a 24
mauuuuul 3:ca5869d9fd5a 25 BufferedSoftSerial device(PTD1,PTD3);
mauuuuul 3:ca5869d9fd5a 26
mauuuuul 3:ca5869d9fd5a 27 Thread thdLedControl;
mauuuuul 3:ca5869d9fd5a 28
mauuuuul 3:ca5869d9fd5a 29 int step = 1;
mauuuuul 3:ca5869d9fd5a 30 bool PB1Pressed = false;
mauuuuul 3:ca5869d9fd5a 31 bool isConnected = false;
mauuuuul 3:ca5869d9fd5a 32
mauuuuul 3:ca5869d9fd5a 33 char cmdCheckConn[] = {0x0E, 0x0D, 0x31, 0x37, 0x30, 0x30, 0x30, 0x36, 0x30, 0x30, 0x30, 0x39, 0x35, 0x32};
mauuuuul 3:ca5869d9fd5a 34 char cmdReady[] = {0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F};
mauuuuul 3:ca5869d9fd5a 35
mauuuuul 3:ca5869d9fd5a 36 char cmdRun[] = {0x0C, 0x5F};
mauuuuul 3:ca5869d9fd5a 37
mauuuuul 3:ca5869d9fd5a 38 char cmdCompareData1[] = {0x30, 0x39, 0x35};
mauuuuul 3:ca5869d9fd5a 39
mauuuuul 3:ca5869d9fd5a 40 void ReconnectToServer()
mauuuuul 3:ca5869d9fd5a 41 {
mauuuuul 3:ca5869d9fd5a 42
mauuuuul 3:ca5869d9fd5a 43 int i = net.set_network(IP,MASK,GATEWAY);
mauuuuul 3:ca5869d9fd5a 44 i = net.connect();
mab5449 0:6b383744246e 45
mab5449 0:6b383744246e 46 // Show the network address
mab5449 0:6b383744246e 47 const char *ip = net.get_ip_address();
mab5449 0:6b383744246e 48
mab5449 0:6b383744246e 49 // Open a socket on the network interface, and create a TCP connection to mbed.org
mab5449 0:6b383744246e 50 socket.open(&net);
mauuuuul 3:ca5869d9fd5a 51 socket.connect("192.168.0.89", 5500);
mauuuuul 3:ca5869d9fd5a 52
mauuuuul 3:ca5869d9fd5a 53 isConnected = true;
mauuuuul 3:ca5869d9fd5a 54 }
mauuuuul 3:ca5869d9fd5a 55
mauuuuul 3:ca5869d9fd5a 56 void LedControl()
mauuuuul 3:ca5869d9fd5a 57 {
mauuuuul 3:ca5869d9fd5a 58
mauuuuul 3:ca5869d9fd5a 59 while(1) {
mauuuuul 3:ca5869d9fd5a 60 switch(step) {
mauuuuul 3:ca5869d9fd5a 61 case 1: {
mauuuuul 3:ca5869d9fd5a 62 Led2 = 1;
mauuuuul 3:ca5869d9fd5a 63 Led3 = 1;
mauuuuul 3:ca5869d9fd5a 64 while(step == 1) {
mauuuuul 3:ca5869d9fd5a 65 Led1 = !Led1;
mauuuuul 3:ca5869d9fd5a 66 wait(0.5);
mauuuuul 3:ca5869d9fd5a 67 }
mauuuuul 3:ca5869d9fd5a 68 }
mauuuuul 3:ca5869d9fd5a 69 break;
mauuuuul 3:ca5869d9fd5a 70
mauuuuul 3:ca5869d9fd5a 71 case 2: {
mauuuuul 3:ca5869d9fd5a 72 Led1 = 0;
mauuuuul 3:ca5869d9fd5a 73 Led3 = 1;
mauuuuul 3:ca5869d9fd5a 74 while(step == 2) {
mauuuuul 3:ca5869d9fd5a 75 Led2 = !Led2;
mauuuuul 3:ca5869d9fd5a 76 wait(0.5);
mauuuuul 3:ca5869d9fd5a 77 }
mauuuuul 3:ca5869d9fd5a 78 }
mauuuuul 3:ca5869d9fd5a 79 break;
mauuuuul 3:ca5869d9fd5a 80
mauuuuul 3:ca5869d9fd5a 81 case 3: {
mauuuuul 3:ca5869d9fd5a 82 Led1 = 0;
mauuuuul 3:ca5869d9fd5a 83 Led2 = 0;
mauuuuul 3:ca5869d9fd5a 84 while(step == 3) {
mauuuuul 3:ca5869d9fd5a 85 Led3 = !Led3;
mauuuuul 3:ca5869d9fd5a 86 wait(0.5);
mauuuuul 3:ca5869d9fd5a 87 }
mauuuuul 3:ca5869d9fd5a 88 }
mauuuuul 3:ca5869d9fd5a 89 break;
mauuuuul 3:ca5869d9fd5a 90 }
mauuuuul 3:ca5869d9fd5a 91 }
mauuuuul 3:ca5869d9fd5a 92 }
mauuuuul 3:ca5869d9fd5a 93
mauuuuul 3:ca5869d9fd5a 94 void DC_TCP()
mauuuuul 3:ca5869d9fd5a 95 {
mauuuuul 3:ca5869d9fd5a 96 socket.close();
mauuuuul 3:ca5869d9fd5a 97 net.disconnect();
mauuuuul 3:ca5869d9fd5a 98
mauuuuul 3:ca5869d9fd5a 99 isConnected = false;
mauuuuul 3:ca5869d9fd5a 100 }
mauuuuul 3:ca5869d9fd5a 101
mauuuuul 3:ca5869d9fd5a 102 void keyReleased()
mauuuuul 3:ca5869d9fd5a 103 {
mauuuuul 3:ca5869d9fd5a 104 if(step == 2) {
mauuuuul 3:ca5869d9fd5a 105 if(!PB1Pressed) {
mauuuuul 3:ca5869d9fd5a 106 PB1Pressed = true;
mauuuuul 3:ca5869d9fd5a 107 }
mauuuuul 3:ca5869d9fd5a 108 }
mauuuuul 3:ca5869d9fd5a 109 }
mab5449 0:6b383744246e 110
mauuuuul 3:ca5869d9fd5a 111 void StartProccess()
mauuuuul 3:ca5869d9fd5a 112 {
mauuuuul 3:ca5869d9fd5a 113
mauuuuul 3:ca5869d9fd5a 114 while(1) {
mauuuuul 3:ca5869d9fd5a 115
mauuuuul 3:ca5869d9fd5a 116 switch(step) {
mauuuuul 3:ca5869d9fd5a 117 case 1: {
mauuuuul 3:ca5869d9fd5a 118
mauuuuul 3:ca5869d9fd5a 119 char rbuffer[64];
mauuuuul 3:ca5869d9fd5a 120
mauuuuul 3:ca5869d9fd5a 121 int rcount = socket.recv(rbuffer, sizeof rbuffer);
mauuuuul 3:ca5869d9fd5a 122 if(rcount < 0) {
mauuuuul 3:ca5869d9fd5a 123
mauuuuul 3:ca5869d9fd5a 124 } else if(rcount > 0) {
mauuuuul 3:ca5869d9fd5a 125 rbuffer[rcount] = '\0';
mauuuuul 3:ca5869d9fd5a 126
mauuuuul 3:ca5869d9fd5a 127 string data;
mauuuuul 3:ca5869d9fd5a 128
mauuuuul 3:ca5869d9fd5a 129 for(int i = 0; i<sizeof(rbuffer); i++) {
mauuuuul 3:ca5869d9fd5a 130 if(rbuffer[i] == '\0')break;
mauuuuul 3:ca5869d9fd5a 131 data += rbuffer[i];
mauuuuul 3:ca5869d9fd5a 132 }
mauuuuul 3:ca5869d9fd5a 133
mauuuuul 3:ca5869d9fd5a 134 if(data == "F01") {
mauuuuul 3:ca5869d9fd5a 135 step = 2;
mauuuuul 3:ca5869d9fd5a 136 printf("Measurring Process is Getting Started..\r\n");
mauuuuul 3:ca5869d9fd5a 137 }
mauuuuul 3:ca5869d9fd5a 138 } else if(rcount == 0) {
mauuuuul 3:ca5869d9fd5a 139 printf("rcount = %d \r\n",rcount);
mauuuuul 3:ca5869d9fd5a 140 }
mauuuuul 3:ca5869d9fd5a 141
mauuuuul 3:ca5869d9fd5a 142 }
mauuuuul 3:ca5869d9fd5a 143 break;
mauuuuul 3:ca5869d9fd5a 144
mauuuuul 3:ca5869d9fd5a 145 case 2: {
mauuuuul 3:ca5869d9fd5a 146 if(PB1Pressed) {
mauuuuul 3:ca5869d9fd5a 147 step = 3;
mauuuuul 3:ca5869d9fd5a 148
mauuuuul 3:ca5869d9fd5a 149 //Serial Comm Start;
mauuuuul 3:ca5869d9fd5a 150 printf("Measurring Process Starting.. \r\n");
mauuuuul 3:ca5869d9fd5a 151
mauuuuul 3:ca5869d9fd5a 152
mauuuuul 3:ca5869d9fd5a 153 device.printf("Helo Maul");
mauuuuul 3:ca5869d9fd5a 154 }
mauuuuul 3:ca5869d9fd5a 155
mauuuuul 3:ca5869d9fd5a 156 }
mauuuuul 3:ca5869d9fd5a 157 break;
mauuuuul 3:ca5869d9fd5a 158
mauuuuul 3:ca5869d9fd5a 159 case 3: {
mauuuuul 3:ca5869d9fd5a 160 char buffer[256];
mauuuuul 3:ca5869d9fd5a 161 string data;
mauuuuul 3:ca5869d9fd5a 162
mauuuuul 3:ca5869d9fd5a 163 bool Done = false;
mauuuuul 3:ca5869d9fd5a 164 int sbuff = 0;
mauuuuul 3:ca5869d9fd5a 165 while(!Done) {
mauuuuul 3:ca5869d9fd5a 166
mauuuuul 3:ca5869d9fd5a 167 int state = 0;
mauuuuul 3:ca5869d9fd5a 168 char data1[3];
mauuuuul 3:ca5869d9fd5a 169 char data2[20];
mauuuuul 3:ca5869d9fd5a 170 char data3[256];
mauuuuul 3:ca5869d9fd5a 171 int datacount = 0;
mab5449 0:6b383744246e 172
mauuuuul 3:ca5869d9fd5a 173 switch(state) {
mauuuuul 3:ca5869d9fd5a 174 case 0: {
mauuuuul 3:ca5869d9fd5a 175
mauuuuul 3:ca5869d9fd5a 176 while(device.readable()) {
mauuuuul 3:ca5869d9fd5a 177 wait(0.01);
mauuuuul 3:ca5869d9fd5a 178 char tempbuf = device.getc();
mauuuuul 3:ca5869d9fd5a 179 data1[datacount] = tempbuf;
mauuuuul 3:ca5869d9fd5a 180
mauuuuul 3:ca5869d9fd5a 181 datacount++;
mauuuuul 3:ca5869d9fd5a 182 }
mauuuuul 3:ca5869d9fd5a 183
mauuuuul 3:ca5869d9fd5a 184 if(datacount == 3) {
mauuuuul 3:ca5869d9fd5a 185
mauuuuul 3:ca5869d9fd5a 186 bool equals = false;
mauuuuul 3:ca5869d9fd5a 187
mauuuuul 3:ca5869d9fd5a 188 if(data1[0] == '0' && data1[1] == '9' && data1[2] == '5') equals = true;
mauuuuul 3:ca5869d9fd5a 189
mauuuuul 3:ca5869d9fd5a 190 // if(data1[0] == '0')
mauuuuul 3:ca5869d9fd5a 191 // equals = true;
mauuuuul 3:ca5869d9fd5a 192 //
mauuuuul 3:ca5869d9fd5a 193 // if(data1[1] == '9')
mauuuuul 3:ca5869d9fd5a 194 // equals = true;
mauuuuul 3:ca5869d9fd5a 195 //
mauuuuul 3:ca5869d9fd5a 196 // if(data1[2] == '5')
mauuuuul 3:ca5869d9fd5a 197 // equals = true;
mauuuuul 3:ca5869d9fd5a 198
mauuuuul 3:ca5869d9fd5a 199 if(equals) {
mauuuuul 3:ca5869d9fd5a 200 state = 1;
mauuuuul 3:ca5869d9fd5a 201 datacount = 1;
mauuuuul 3:ca5869d9fd5a 202 printf("state %d finish\r\n",state);
mauuuuul 3:ca5869d9fd5a 203 }
mauuuuul 3:ca5869d9fd5a 204 }
mauuuuul 3:ca5869d9fd5a 205 }
mauuuuul 3:ca5869d9fd5a 206 break;
mauuuuul 3:ca5869d9fd5a 207
mauuuuul 3:ca5869d9fd5a 208 case 1: {
mauuuuul 3:ca5869d9fd5a 209 if(device.readable()) {
mauuuuul 3:ca5869d9fd5a 210 char tempbuf = device.getc();
mauuuuul 3:ca5869d9fd5a 211 data2[datacount-1] = tempbuf;
mauuuuul 3:ca5869d9fd5a 212 datacount++;
mauuuuul 3:ca5869d9fd5a 213 }
mauuuuul 3:ca5869d9fd5a 214
mauuuuul 3:ca5869d9fd5a 215 if(datacount == 10) {
mauuuuul 3:ca5869d9fd5a 216 if(data2[0] == 0x5E) {
mauuuuul 3:ca5869d9fd5a 217 state = 2;
mauuuuul 3:ca5869d9fd5a 218 datacount = 0;
mauuuuul 3:ca5869d9fd5a 219 printf("state %d finish",state);
mauuuuul 3:ca5869d9fd5a 220 }
mauuuuul 3:ca5869d9fd5a 221 }
mauuuuul 3:ca5869d9fd5a 222 }
mauuuuul 3:ca5869d9fd5a 223 break;
mauuuuul 3:ca5869d9fd5a 224
mauuuuul 3:ca5869d9fd5a 225 case 3: {
mauuuuul 3:ca5869d9fd5a 226 if(device.readable()) {
mauuuuul 3:ca5869d9fd5a 227 char tempbuf = device.getc();
mauuuuul 3:ca5869d9fd5a 228 data3[datacount-1] = tempbuf;
mauuuuul 3:ca5869d9fd5a 229 datacount++;
mauuuuul 3:ca5869d9fd5a 230 }
mab5449 0:6b383744246e 231
mauuuuul 3:ca5869d9fd5a 232 if(datacount > 48) {
mauuuuul 3:ca5869d9fd5a 233 if(data3[datacount-1] == 0x30 && data3[datacount-2] == 0x05E) {
mauuuuul 3:ca5869d9fd5a 234 state = 3;
mauuuuul 3:ca5869d9fd5a 235 datacount = 0;
mauuuuul 3:ca5869d9fd5a 236
mauuuuul 3:ca5869d9fd5a 237 for(int i = 0; i<data3[datacount-1]; i++) {
mauuuuul 3:ca5869d9fd5a 238 printf("%c",data3[i]);
mauuuuul 3:ca5869d9fd5a 239
mauuuuul 3:ca5869d9fd5a 240 if(i == datacount-1) {
mauuuuul 3:ca5869d9fd5a 241 printf("\r\n");
mauuuuul 3:ca5869d9fd5a 242 }
mauuuuul 3:ca5869d9fd5a 243 }
mauuuuul 3:ca5869d9fd5a 244 Done = true;
mauuuuul 3:ca5869d9fd5a 245 step = 1;
mauuuuul 3:ca5869d9fd5a 246 PB1Pressed = false;
mauuuuul 3:ca5869d9fd5a 247 printf("Measurring Finish.. \r\n");
mauuuuul 3:ca5869d9fd5a 248 printf("state %d finish",state);
mauuuuul 3:ca5869d9fd5a 249 }
mauuuuul 3:ca5869d9fd5a 250 }
mauuuuul 3:ca5869d9fd5a 251 }
mauuuuul 3:ca5869d9fd5a 252 break;
mauuuuul 3:ca5869d9fd5a 253 }
mauuuuul 3:ca5869d9fd5a 254 }
mauuuuul 3:ca5869d9fd5a 255 }
mauuuuul 3:ca5869d9fd5a 256 break;
mauuuuul 3:ca5869d9fd5a 257 }
mauuuuul 3:ca5869d9fd5a 258 }
mauuuuul 3:ca5869d9fd5a 259 }
mauuuuul 3:ca5869d9fd5a 260
mab5449 0:6b383744246e 261
mauuuuul 3:ca5869d9fd5a 262 void FindingServer()
mauuuuul 3:ca5869d9fd5a 263 {
mauuuuul 3:ca5869d9fd5a 264 printf("Finding Server.....\r\n\r\n");
mauuuuul 3:ca5869d9fd5a 265 int i = net.set_network(IP,MASK,GATEWAY);
mauuuuul 3:ca5869d9fd5a 266 i = net.connect();
mauuuuul 3:ca5869d9fd5a 267
mauuuuul 3:ca5869d9fd5a 268 // Show the network address
mauuuuul 3:ca5869d9fd5a 269 const char *ip = net.get_ip_address();
mauuuuul 3:ca5869d9fd5a 270
mauuuuul 3:ca5869d9fd5a 271 // Open a socket on the network interface, and create a TCP connection to mbed.org
mauuuuul 3:ca5869d9fd5a 272 socket.open(&net);
mauuuuul 3:ca5869d9fd5a 273 socket.connect("192.168.0.89", 5500);
mauuuuul 3:ca5869d9fd5a 274 isConnected = true;
mauuuuul 3:ca5869d9fd5a 275 printf("Connected to Server....\r\n");
mauuuuul 3:ca5869d9fd5a 276 thdStartProccess.start(StartProccess);
mab5449 0:6b383744246e 277 }
mauuuuul 3:ca5869d9fd5a 278
mauuuuul 3:ca5869d9fd5a 279 // Socket demo
mauuuuul 3:ca5869d9fd5a 280 int main()
mauuuuul 3:ca5869d9fd5a 281 {
mauuuuul 3:ca5869d9fd5a 282 device.baud(9600);
mauuuuul 3:ca5869d9fd5a 283
mauuuuul 3:ca5869d9fd5a 284 pin1.mode( PullDown );
mauuuuul 3:ca5869d9fd5a 285 pin1.attach_deasserted( &keyReleased );
mauuuuul 3:ca5869d9fd5a 286 pin1.setSampleFrequency(); // Defaults to 20ms.
mauuuuul 3:ca5869d9fd5a 287
mauuuuul 3:ca5869d9fd5a 288 pin2.mode( PullDown );
mauuuuul 3:ca5869d9fd5a 289 pin2.attach_deasserted( &keyReleased );
mauuuuul 3:ca5869d9fd5a 290 pin2.setSampleFrequency(); // Defaults to 20ms.
mauuuuul 3:ca5869d9fd5a 291
mauuuuul 3:ca5869d9fd5a 292 wait(0.01);
mauuuuul 3:ca5869d9fd5a 293 thdFindConnection.start(FindingServer);
mauuuuul 3:ca5869d9fd5a 294 thdLedControl.start(LedControl);
mauuuuul 3:ca5869d9fd5a 295 }