python fall back jonas predlagam da greva raje v pythonu delat
This commit is contained in:
94
python_fall_back/main.py
Normal file
94
python_fall_back/main.py
Normal file
@@ -0,0 +1,94 @@
|
||||
import time
|
||||
import network
|
||||
import socket
|
||||
import asyncio
|
||||
|
||||
ssid = '5'
|
||||
password = 'nevem123'
|
||||
move = 0
|
||||
dir = 0
|
||||
|
||||
def read_html(filename):
|
||||
try:
|
||||
with open(filename, "r") as file:
|
||||
return file.read()
|
||||
except:
|
||||
return "<html><body><h1>File not found</h1></body></html>"
|
||||
|
||||
def init_wifi(ssid, password):
|
||||
wlan = network.WLAN(network.STA_IF)
|
||||
wlan.active(True)
|
||||
wlan.connect(ssid, password)
|
||||
|
||||
connection_timeout = 10
|
||||
while connection_timeout > 0:
|
||||
if wlan.status() >= 3:
|
||||
break
|
||||
connection_timeout -= 1
|
||||
print('Waiting for Wi-Fi connection...')
|
||||
time.sleep(1)
|
||||
|
||||
if wlan.status() != 3:
|
||||
print("Failed to connect.")
|
||||
return False
|
||||
else:
|
||||
print('Connection successful!')
|
||||
print('IP address:', wlan.ifconfig()[0])
|
||||
return True
|
||||
|
||||
async def handle_client(reader, writer):
|
||||
global move, dir
|
||||
try:
|
||||
request_line = await reader.readline()
|
||||
if not request_line:
|
||||
return
|
||||
request = request_line.decode().strip()
|
||||
if '/up' in request:
|
||||
move += 5
|
||||
elif '/down' in request:
|
||||
move -= 5
|
||||
elif '/right' in request:
|
||||
dir += 5
|
||||
elif '/left' in request:
|
||||
dir -= 5
|
||||
while True:
|
||||
line = await reader.readline()
|
||||
if line == b"\r\n" or line == b"":
|
||||
break
|
||||
|
||||
response_body = read_html("./webpage/index.html")
|
||||
writer.write(b"HTTP/1.0 200 OK\r\n")
|
||||
writer.write(b"Content-type: text/html\r\n")
|
||||
writer.write(b"Connection: close\r\n\r\n")
|
||||
writer.write(response_body.encode("utf-8"))
|
||||
await writer.drain()
|
||||
|
||||
except Exception as e:
|
||||
print("Error handling client:", e)
|
||||
finally:
|
||||
await writer.aclose()
|
||||
async def move_car_loop():
|
||||
global move, dir
|
||||
print("Car control loop started.")
|
||||
while True:
|
||||
print(f"Executing: Speed {move} , Direction {dir}")
|
||||
await asyncio.sleep(0.5)
|
||||
move = move * 0.9
|
||||
dir = dir * 0.9
|
||||
if(abs(move) < 1):
|
||||
move = 0
|
||||
if(abs(dir) < 1):
|
||||
dir = 0
|
||||
async def main():
|
||||
if not init_wifi(ssid, password):
|
||||
return
|
||||
print("Starting async web server...")
|
||||
server = await asyncio.start_server(handle_client, "0.0.0.0", 80)
|
||||
car_task = asyncio.create_task(move_car_loop())
|
||||
while True:
|
||||
await asyncio.sleep(1)
|
||||
|
||||
try:
|
||||
asyncio.run(main())
|
||||
except KeyboardInterrupt:
|
||||
print("Program Interrupted")
|
||||
Reference in New Issue
Block a user