UDP连接匿名助手,并发送数据到匿名助手
UDP连接匿名助手,并发送数据到匿名助手
环境准备
代码编写
# 整体流程
# 1. 链接wifi
# 2. 启动网络功能(UDP)
# 3. 接收网络数据
# 4. 处理接收的数据
import socket
import time
import network
import machine
def do_connect():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('connecting to network...')
wlan.connect('lhc', '12345678')
i = 1
while not wlan.isconnected():
print("正在链接...{}".format(i))
i += 1
time.sleep(1)
print('network config:', wlan.ifconfig())
def start_udp():
# 2. 启动网络功能(UDP)
# 获取设备的IP地址
ip_address = network.WLAN(network.STA_IF).ifconfig()[0]
# 2.1. 创建udp套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 2.2. 绑定本地信息
udp_socket.bind((ip_address, 7788))
return udp_socket
def send_data():
target_ip = "192.168.128.118" # 目标设备的IP地址
target_port = 7789 # 目标设备的UDP端口
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
while True:
message = input("Enter message: ")
udp_socket.sendto(message.encode("utf-8"), (target_ip, target_port))
MAX_PACKET_SIZE = 1024
def main():
# 1. 链接wifi
do_connect()
# 2. 创建UDP
udp_socket = start_udp()
# 3. 创建灯对象
led = machine.Pin(2, machine.Pin.OUT)
# 4. 接收网络数据
while True:
recv_data, sender_info = udp_socket.recvfrom(MAX_PACKET_SIZE)
print("{}发送{}".format(sender_info, recv_data))
recv_data_str = recv_data.decode("utf-8")
try:
print(recv_data_str)
except Exception as ret:
print("error:", ret)
# 5. 处理接收的数据
if recv_data_str == "light on":
print("这里是要灯亮的代码...")
led.value(1)
elif recv_data_str == "light off":
print("这里是要灯灭的代码...")
led.value(0)
if __name__ == "__main__":
main()
对上面三个地方进行简单讲解:
一、绑定热点
要修改为自己的手机热点名称和密码
def do_connect():
wlan = network.WLAN(network.STA_IF)
wlan.active(True)
if not wlan.isconnected():
print('connecting to network...')
wlan.connect('lhc', '12345678')#应该将这里分别改为自己的手机热点名称和密码
i = 1
while not wlan.isconnected():
print("正在链接...{}".format(i))
i += 1
time.sleep(1)
print('network config:', wlan.ifconfig())
二、建立应该UDP套接字
要将本地网络端口进行修改(不改也可以,但是要记住这里填写的网络端口,后面要用)
def start_udp():
# 2. 启动网络功能(UDP)
# 获取设备的IP地址
ip_address = network.WLAN(network.STA_IF).ifconfig()[0]
# 2.1. 创建udp套接字
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 2.2. 绑定本地信息
udp_socket.bind((ip_address, 7788))#要将本地网络端口进行修改,任意,不冲突即可
return udp_socket
三、要填写UDP允许最大接收的数据包大小,这里写1024
MAX_PACKET_SIZE = 1024
匿名助手的设置
执行上面的代码之后,我们会看到终端会打印出如下信息:
network config: ('192.168.128.157', '255.255.255.0', '192.168.128.234', '192.168.128.234')
第一个就是我们的ESP32设备的IP号了。
我们打开匿名助手,选择UDP连接模式。填写ESP32的ip,填写本地端口(任意,不冲突即可,另外在我们的ESP32发送数据到上位机中也没有用到这个),例如:7789。填写对侧端口,就是前面我们写的7788。点击链接即可。
我们测试一下代码是否正确书写。
在基本收发里面填写"light on",看到led灯打开。
在基本收发里面填写“light off”,看到led关闭。
同时thonny控制台输出如下:
light off
这里是要灯灭的代码...
('192.168.128.118', 7789)发送b'light on'
light on
这里是要灯亮的代码...
('192.168.128.118', 7789)发送b'light off'
light off
这里是要灯灭的代码...
收工,完成上位机发送信息到ESP32的任务。