Hello_Everything 2022-10-02 17:23 采纳率: 50%
浏览 17

esp32不能继续接收数据

使用esp32进行PC控制四位数码管,但是接收到一个数字时还可以继续接收,但是多于一位的时候就不能接收了
除了一位的接受完可以继续接收,其他的都不能继续接收
import network
import machine
import time
import socket

led1 = machine.Pin(5, machine.Pin.OUT)
led2 = machine.Pin(18, machine.Pin.OUT)
led3 = machine.Pin(19, machine.Pin.OUT)
led4 = machine.Pin(21, machine.Pin.OUT)

number_led_list = [led1, led2, led3, led4]

#led1.value(1)
#led2.value(0)
#led3.value(0)
#led4.value(0)

a = machine.Pin(13, machine.Pin.OUT)
b = machine.Pin(12, machine.Pin.OUT)
c = machine.Pin(14, machine.Pin.OUT)
d = machine.Pin(27, machine.Pin.OUT)
e = machine.Pin(26, machine.Pin.OUT)
f = machine.Pin(25, machine.Pin.OUT)
g = machine.Pin(33, machine.Pin.OUT)
h = machine.Pin(32, machine.Pin.OUT)

# 将对应的引脚对象存储到列表
led_list = [a, b, c, d, e, f, g, h]

number_dict = {
    0: "11111100",
    1: "01100000",
    2: "11011010",
    3: "11110010",
    4: "01100110",
    5: "10110110",
    6: "10111110",
    7: "11100000",
    8: "11111110",
    9: "11110110",
}


def do_connect():
    """
    连接网络
    """
    wlan = network.WLAN(network.STA_IF)
    wlan.active(True)
    if not wlan.isconnected():
        print('connecting to network...')
        wlan.connect('-', '-')
        i=1
        while not wlan.isconnected():
            
            print("正在连接···{}".format(i))
            time.sleep(1)
            i += 1
    print('network config:', wlan.ifconfig())
    print("连接成功")
    

def start_udp():
    #启动网络功能
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udp_socket.bind(("0.0.0.0", 7788))
    #udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 2.2. 绑定本地信息

    return udp_socket

def show_number(number):
    #显示数字
    if number_dict.get(number):
        i = 0
        for bit in number_dict.get(number):
            if bit == "1":
                led_list[i].value(1)
            else:
                led_list[i].value(0)
            i += 1

def led_on(i):
    #清除所有引脚,设置为灭
    for led in number_led_list:
        led.value(1)
    number_led_list[i].value(0)
    
def show_1_number(num):
    if 0 <= num <= 9:
        #led4.value(0)
        if number_dict.get(num):
            led_on(3)
            show_number(num)
            
def show_2_number(num):
    if 10 <= num <= 99:
        while True:
            a = num // 10
            led_on(2)
            show_number(a)
            time.sleep_ms(5)
            b = num % 10
            led_on(3)
            show_number(b)
                
def show_3_number(num):
    if 100 <= num <= 999:
        while True:
            a = num // 100
            b = num // 10
            c = b % 10
            d = num % 10
            led_on(1)
            show_number(a)
            time.sleep_ms(5)
            
            led_on(2)
            show_number(c)
            time.sleep_ms(5)
            
            led_on(3)
            show_number(d)
            time.sleep_ms(5)
            
def show_4_number(num):
    if 1000 <= num <= 9999:
        i=0
        for n in "%04d" % num: #这里能够将数字1234转换为字符串“1234”
            print(n)
            led_on(i)
            show_number(int(n))
            i += 1
            #time_sleep(5)
            time.sleep_ms(2)

    

def main():
    """
    主函数,不会被调用
    """
    do_connect()
    
    udp_socket = start_udp()
    
    # 1024表示本次接收的最大字节数
    led = machine.Pin(2, machine.Pin.OUT)
    
    while True:
        recv_data, sender_info = udp_socket.recvfrom(1024)
        print("{}向你发送{}".format(sender_info, recv_data))
        
        recv_data_str = recv_data.decode("utf-8")
        num = int(recv_data_str)
        
        if len(recv_data_str) == 1:
            show_1_number(num)
            print(num)
            
        elif len(recv_data_str) == 2:
            show_2_number(num)
            print(num)
            
        elif len(recv_data_str) == 3:
            show_3_number(num)
            print(num)
            
        else:
            show_4_number(num)
            print(num)
            
if __name__ == "__main__":
    main()



  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-10-02 18:06
    关注
    评论

报告相同问题?

问题事件

  • 创建了问题 10月2日

悬赏问题

  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 arduino控制ps2手柄一直报错
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题