单片机ESP32充当服务器,手机通过WiFi连接服务器,在手机上输入内容,需要在后台ESP32端打印出来,目前ESP32可以收到数据,但是但打印不出来。
python代码如下:
#导入Pin模块
import _thread
import sys
import machine
import onewire
from machine import Pin
import time
import network
import socket
#定义LED控制对象
led1=Pin(33,Pin.OUT,Pin.PULL_DOWN)#wifi链接
#连接的WIFI账号和密码
ssid = "309"
password = "1234567890"
#WIFI连接
def wifi_connect():
wlan=network.WLAN(network.STA_IF) #STA模式
wlan.active(True) #激活
if not wlan.isconnected():
print("conneting to network...")
wlan.connect(ssid,password) #输入 WIFI 账号密码
while not wlan.isconnected():
led1.value(1)
time.sleep_ms(300)
led1.value(0)
time.sleep_ms(300)
led1.value(0)
return False
else:
led1.value(0)
print("network information:", wlan.ifconfig())
return True
#网页数据
def web_page():
html = """<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>交互页面</title>
</head>
<body>
<h2>提交你的信息</h2>
<form name="form1" method="Get" action="">
<label for="textfield"></label>
<table width="381" border="0">
<tr>
<td width="93">姓名</td>
<td width="272"><input type="text" name="name" id="name"></td>
</tr>
<tr>
<td>性别</td>
<td><label for="textfield2"></label>
<input type="text" name="name1" id="name1"> </td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="button" id="button" value="提交"></td>
</tr>
</table>
</form>
</body>
</html>"""
return html
#程序入口
if __name__=="__main__":
if wifi_connect():
#SOCK_STREAM表示的是TCP协议,SOCK_DGRAM表示的是UDP协议
my_socket=socket.socket(socket.AF_INET, socket.SOCK_STREAM) #创建socket连接
# 将socket对象绑定ip地址和端口号
my_socket.bind(('', 80))
# 相当于电话的开机 括号里的参数表示可以同时接收5个请求
my_socket.listen(5)
while True:
# 进入监听状态,等待别人链接过来,有两个返回值,
#一个是对方的socket对象,一个是对方的ip以及端口
client, addr = my_socket.accept()
print('Got a connection from %s' % str(addr))
# recv表示接收,括号里是最大接收字节
request = client.recv(1024)
request = str(request)
print (request)
response = web_page()
client.send('HTTP/1.1 200 OK\n')
client.send('Content-Type: text/html\n')
client.send('Connection: close\n\n')
client.sendall(response)
client.close()