尝试连接 ESP32 和 ESP8266 时 ECONNABORTED

问题描述 投票:0回答:1

我正在尝试通过带有 micropython 的套接字连接 ESP32 和 ESP8266。我无法让 ESP8266 客户端在不抛出 ECONNABORTED 103 错误的情况下连接到 ESP32 服务器。代码在下面,不确定我在这里做错了什么。这似乎在我的笔记本电脑上工作时有效,并且在尝试连接这两个特定设备之前没有任何问题。

ESP32 服务器代码:

import network
import socket
from time import sleep

SSID = 'esp'
KEY = 'meow'
ADDR = '192.168.4.1'
PORT = 2000

class socket_master:
    def __init__(self):
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.bind(('',PORT))
        self.attempt = 0
    
    def accept_connection(self):
        self.sock.listen(4)
        self.conn, self.addr = self.sock.accept()
    
    def test_speed(self):
        data = 'attempt ' + str(self.attempt)
        self.conn.sendall(data.encode())
        self.attempt += 1


attempt = 0
try:
    print('starting network')
    ap = network.WLAN(network.AP_IF)
    print('network started')
    if ap.active() == False:
        ap.active(True)
    sleep(1)
    ap.config(essid='esp')
    print(ap.config('essid'))
    print('set ssid')
    print(ap.ifconfig())

except:
    print('failed')

sm = socket_master()
sm.accept_connection()
print('waiting for client')
while True:
    sm.test_speed()

ESP8266客户端代码:

# main.py -- put your code here!
import network
import socket

SSID = 'esp'
KEY = 'meow'
ADDR = '192.168.4.1'
PORT = 2000

def do_connect():
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('esp')
        while not wlan.isconnected():
            pass
    print('network config:', wlan.ifconfig())

class socket_master_2:
    def __init__(self):
        self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        self.sock.connect((ADDR,PORT))

    def receive_print(self):
        data = self.sock.recv(1024)
        print(data)
        print(data.decode())


do_connect()
client = socket_master_2()
while True:
    client.receive_print()
python sockets esp8266 esp32 micropython
1个回答
0
投票

我注意到当 Micropython 安装在 ESP8266 上时,它会自动创建一个接入点,我相信当 CLIENT 尝试创建一个 STATION 并连接到 SERVER 时,MicroPython 在 CLIENT 板上为 8266 自动创建的 AP 会发生冲突使用我创建并想要使用的 STN。

我在 CLIENT 板上的 boot.py 中添加了以下内容以强制接管 AP,然后将其关闭。我的客户在重启后立即连接。

wlan = network.WLAN(network.AP_IF)
wlan.active(True)
wlan.config(essid='MicroTemp')
wlan.active(False)

我首先尝试简单地添加:

wlan.active(False)
到 boot.py 但那没有用。

© www.soinside.com 2019 - 2024. All rights reserved.