mirror of
				https://github.com/eledio-devices/thirdparty-ArduinoJson.git
				synced 2025-10-31 16:14:11 +01:00 
			
		
		
		
	Added an example with EthernetServer
This commit is contained in:
		
							
								
								
									
										74
									
								
								examples/JsonServer/JsonServer.ino
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										74
									
								
								examples/JsonServer/JsonServer.ino
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,74 @@ | ||||
| // Sample Arduino Json Web Server | ||||
| // Created by Benoit Blanchon. | ||||
| // Heavily inspired by "Web Server" from David A. Mellis and Tom Igoe | ||||
|  | ||||
| #include <SPI.h> | ||||
| #include <Ethernet.h> | ||||
| #include <ArduinoJson.h> | ||||
|  | ||||
| byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; | ||||
| IPAddress ip(192, 168, 0, 177); | ||||
| EthernetServer server(80); | ||||
|  | ||||
| bool readRequest(EthernetClient& client) { | ||||
|   bool currentLineIsBlank = true; | ||||
|   while (client.connected()) { | ||||
|     if (client.available()) { | ||||
|       char c = client.read(); | ||||
|       if (c == '\n' && currentLineIsBlank) { | ||||
|         return true; | ||||
|       } else if (c == '\n') { | ||||
|         currentLineIsBlank = true; | ||||
|       } else if (c != '\r') { | ||||
|         currentLineIsBlank = false; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   return false; | ||||
| } | ||||
|  | ||||
| JsonObject& prepareResponse(JsonBuffer& jsonBuffer) { | ||||
|   JsonObject& root = jsonBuffer.createObject(); | ||||
|  | ||||
|   JsonArray& analogValues = root.createNestedArray("analog"); | ||||
|   for (int pin = 0; pin < 6; pin++) { | ||||
|     int value = analogRead(pin); | ||||
|     analogValues.add(value); | ||||
|   } | ||||
|  | ||||
|   JsonArray& digitalValues = root.createNestedArray("digital"); | ||||
|   for (int pin = 0; pin < 14; pin++) { | ||||
|     int value = digitalRead(pin); | ||||
|     digitalValues.add(value); | ||||
|   } | ||||
|  | ||||
|   return root; | ||||
| } | ||||
|  | ||||
| void writeResponse(EthernetClient& client, JsonObject& json) { | ||||
|   client.println("HTTP/1.1 200 OK"); | ||||
|   client.println("Content-Type: application/json"); | ||||
|   client.println("Connection: close"); | ||||
|   client.println(); | ||||
|  | ||||
|   json.prettyPrintTo(client); | ||||
| } | ||||
|  | ||||
| void setup() { | ||||
|   Ethernet.begin(mac, ip); | ||||
|   server.begin(); | ||||
| } | ||||
|  | ||||
| void loop() { | ||||
|   EthernetClient client = server.available(); | ||||
|   if (client) { | ||||
|     bool success = readRequest(client); | ||||
|     if (success) { | ||||
|       StaticJsonBuffer<500> jsonBuffer; | ||||
|       JsonObject& json = prepareResponse(jsonBuffer); | ||||
|       writeResponse(client, json); | ||||
|     } | ||||
|     delay(1); | ||||
|     client.stop(); | ||||
|   } | ||||
| } | ||||
		Reference in New Issue
	
	Block a user