pc和esp8266间wifi通信的python代码
时间: 2023-10-27 10:04:40 浏览: 149
要在PC和ESP8266之间通过WiFi进行通信,你可以使用Python的`socket`模块和ESP8266上的MicroPython来实现。
首先,在ESP8266上,你需要使用MicroPython的`socket`模块创建一个TCP服务器,代码如下:
```python
import socket
# 创建一个socket对象
sock = socket.socket()
# 绑定IP地址和端口号
sock.bind(('0.0.0.0', 8080))
# 开始监听请求
sock.listen(1)
while True:
# 等待连接
conn, addr = sock.accept()
print('Connected by', addr)
while True:
# 接收客户端发送的数据
data = conn.recv(1024)
if not data:
break
# 处理数据
print('Received:', data.decode())
# 发送处理后的数据回客户端
conn.sendall(data)
# 关闭连接
conn.close()
```
在上面的代码中,我们首先使用`socket.socket()`创建一个TCP服务器的socket对象,然后使用`sock.bind()`方法绑定IP地址和端口号,并使用`sock.listen()`方法开始监听请求。在接收到客户端的请求后,我们使用`sock.accept()`方法等待连接,然后使用`conn.recv()`方法接收客户端发送的数据,处理数据,最后使用`conn.sendall()`方法将处理后的数据发送回客户端。在客户端关闭连接后,我们使用`conn.close()`方法关闭连接。
接下来,在PC上,你可以使用Python的`socket`模块来连接ESP8266并发送数据,代码如下:
```python
import socket
HOST = '192.168.0.100' # ESP8266的IP地址
PORT = 8080 # ESP8266的端口号
# 创建一个socket对象
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
# 连接到ESP8266
s.connect((HOST, PORT))
print(f'Connected to {HOST}:{PORT}')
# 发送数据到ESP8266
message = 'Hello, World!'
s.sendall(message.encode())
# 接收来自ESP8266的数据
data = s.recv(1024)
print(f'Received: {data.decode()}')
```
在上面的代码中,我们首先使用`socket.socket()`创建一个TCP客户端的socket对象,然后使用`s.connect()`方法连接ESP8266的IP地址和端口号。在连接成功后,我们使用`s.sendall()`方法发送数据到ESP8266,并使用`s.recv()`方法接收来自ESP8266的数据。最后,我们将接收到的数据打印出来。
需要注意的是,这里的`HOST`需要设置为ESP8266的IP地址,可以在ESP8266的串口终端中输入`import network; sta_if = network.WLAN(network.STA_IF); print(sta_if.ifconfig())`获取IP地址。
阅读全文