UDP连接匿名助手,并发送数据到匿名助手

UDP连接匿名助手,并发送数据到匿名助手

环境准备

ESP32无法连接手机热点的解决方案

代码编写

# 整体流程
# 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。点击链接即可。
UDP连接匿名助手的配置

我们测试一下代码是否正确书写。

在基本收发里面填写"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的任务。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值