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