The code below is from a ubiquitous example of how to run a webserver on a Raspberry Pi Pico W. I'm trying to use pieces of it to serve up a web page, but my page includes a lot of HTML formatting and is much larger, about 7 KB. When it runs it seems to only serve up about half of my HTML code; if I remove much (but not all) of the formatting code, it works.
In the example, the HTML part is very small:
html = """<!DOCTYPE html>
<html>
<head> <title>Pico W</title> </head>
<body> <h1>Pico W</h1>
<p>%s</p>
</body>
</html>
"""
Does anyone know if there is a limitation to the size of a web page that can be served up, and if there is any way to get around it?
In the example, the HTML part is very small:
html = """<!DOCTYPE html>
<html>
<head> <title>Pico W</title> </head>
<body> <h1>Pico W</h1>
<p>%s</p>
</body>
</html>
"""
Does anyone know if there is a limitation to the size of a web page that can be served up, and if there is any way to get around it?
Code:
import networkimport socketimport timefrom machine import Pinled = Pin(15, Pin.OUT)ssid = 'YOUR NETWORK NAME'password = 'YOUR NETWORK PASSWORD'wlan = network.WLAN(network.STA_IF)wlan.active(True)wlan.connect(ssid, password)html = """<!DOCTYPE html><html> <head> <title>Pico W</title> </head> <body> <h1>Pico W</h1> <p>%s</p> </body></html>"""max_wait = 10while max_wait > 0: if wlan.status() < 0 or wlan.status() >= 3: break max_wait -= 1 print('waiting for connection...') time.sleep(1)if wlan.status() != 3: raise RuntimeError('network connection failed')else: print('connected') status = wlan.ifconfig() print( 'ip = ' + status[0] )addr = socket.getaddrinfo('0.0.0.0', 80)[0][-1]s = socket.socket()s.bind(addr)s.listen(1)print('listening on', addr)# Listen for connectionswhile True: try: cl, addr = s.accept() print('client connected from', addr) request = cl.recv(1024) print(request) request = str(request) led_on = request.find('/light/on') led_off = request.find('/light/off') print( 'led on = ' + str(led_on)) print( 'led off = ' + str(led_off)) if led_on == 6: print("led on") led.value(1) stateis = "LED is ON" if led_off == 6: print("led off") led.value(0) stateis = "LED is OFF" response = html % stateis cl.send('HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n') cl.send(response) cl.close() except OSError as e: cl.close() print('connection closed')
Statistics: Posted by JKJ — Thu Dec 19, 2024 2:56 pm