各位,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
recv阻塞问题
- shaoziyang
- 帖子: 3967
- 注册时间: 2019年 10月 21日 13:48
Re: recv阻塞问题
python的异步,类似嵌入式的协程,把connect_socker函数定义成异步函数,这样就不会让整个系统阻塞了。
- shaoziyang
- 帖子: 3967
- 注册时间: 2019年 10月 21日 13:48
Re: recv阻塞问题
搞定了,谢谢,开了几个线程,异步还不太适合这个场景。wow 写了: ↑2022年 8月 15日 21:31跑阻塞socket的话就丢线程里运行,或者上异步。
https://docs.micropython.org/en/latest/ ... hread.html
-
- 随机主题
- 回复总数
- 阅读次数
- 最新文章
-
- 5回复总数
- 2506 阅读次数
- 最新文章 由 三日月
2020年 5月 19日 13:19
-
- 1回复总数
- 1463 阅读次数
- 最新文章 由 shaoziyang
2020年 5月 19日 10:36
-
- 9回复总数
- 13075 阅读次数
- 最新文章 由 三日月
2020年 5月 20日 13:27