recv阻塞问题

ESP32、ESP8266
ESP32-S2、ESP32-S3、ESP32-C3
回复
碧悠门下小书童
帖子: 13
注册时间: 2022年 7月 10日 15:57

recv阻塞问题

#1

帖子 碧悠门下小书童 »

   各位,esp32接收网络端数据时,如果没有数据,程序会一直卡在recv函数不继续,网上的几种非阻塞方法试过都没效果,大家有么有好的办法?            

             while True:
                    if (rec_data_flag == 1):#串口有数据再通过网络发送
                        time.sleep_ms(100) #延时100ms
                        conn.send(uart_r_data)#发送读取到的串口数据
                    while True:
                        data = conn.recv(1024)#接收网络数据,但是无数据会一直卡在这里*****
                        #此处会对data进行处理#
                        break
 

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: recv阻塞问题

#2

帖子 shaoziyang »

可以试试异步 asyncio
 

碧悠门下小书童
帖子: 13
注册时间: 2022年 7月 10日 15:57

Re: recv阻塞问题

#3

帖子 碧悠门下小书童 »

这个嵌套在while循环里,没办法单独定义个异步函数,还望不吝赐教~
2022-07-15_09-21.png
2022-07-15_09-21.png (54.31 KiB) 查看 4190 次
 

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: recv阻塞问题

#4

帖子 shaoziyang »

python的异步,类似嵌入式的协程,把connect_socker函数定义成异步函数,这样就不会让整个系统阻塞了。
 
 

碧悠门下小书童
帖子: 13
注册时间: 2022年 7月 10日 15:57

Re: recv阻塞问题

#5

帖子 碧悠门下小书童 »

谢谢,但还是不是很理解 :shock:
 
2022-07-15_09-21.png
2022-07-15_09-21.png (56.98 KiB) 查看 4184 次
 

头像
shaoziyang
帖子: 3917
注册时间: 2019年 10月 21日 13:48

Re: recv阻塞问题

#6

帖子 shaoziyang »


碧悠门下小书童
帖子: 13
注册时间: 2022年 7月 10日 15:57

Re: recv阻塞问题

#7

帖子 碧悠门下小书童 »

好的,我学习一下,射频出身,纯属兴趣玩玩python,多谢多谢! :DING
 

wow
帖子: 2
注册时间: 2020年 12月 6日 01:56

Re: recv阻塞问题

#8

帖子 wow »

跑阻塞socket的话就丢线程里运行,或者上异步。
https://docs.micropython.org/en/latest/ ... hread.html
 

碧悠门下小书童
帖子: 13
注册时间: 2022年 7月 10日 15:57

Re: recv阻塞问题

#9

帖子 碧悠门下小书童 »

wow 写了:
2022年 8月 15日 21:31
跑阻塞socket的话就丢线程里运行,或者上异步。
https://docs.micropython.org/en/latest/ ... hread.html
 

 
搞定了,谢谢,开了几个线程,异步还不太适合这个场景。
 

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章