登录注册
论坛
一粒金砂(中级)
11
0
请问各位高手:ESP32的micropython串口接收到2个字节时,用any( ),返回值是2,然后用read()读出,继续又接收了3个字节时,any()返回值是5,问题是:any()返回值 不会因为用了read()后而重新复位计数 而是累计接收的字节数!这样就给串口接收数据处理带来不便,实际应用是:串口接收一个完整的数据帧8个字节,read()读出,然后又接到8个字节完整数据帧,如果此时用read()读出却是包含第一个数据帧的字节,处理非常不便,不知有没有好的办法 使串口接收的buf复位 重新计数? 多谢!
扫一扫,分享给好友
版主
1万
25
any()返回的是缓冲区中数据的数量,用read()读取后会自动清零的。不知道你具体的应用方式,是否因为read()和any()之间间隔时间太长,造成有新的数据存入。
dcexpert 发表于 2020-10-4 11:31 any()返回的是缓冲区中数据的数量,用read()读取后会自动清零的。不知道你具体的应用方式,是否因为read() ...
感谢回复:我水平有限 请看下面的代码,我测试时 就出现我所说的样子
from machine import UART
uart1= UART(1, baudrate=9600, rx=13,tx=12,timeout=10)
b=0; a=0;
while 1: if (uart1.any()): a=uart1.read; b=uart1.any();
uart1.write(str(b));
yanruiqi5678 发表于 2020-10-4 11:47 感谢回复:我水平有限 请看下面的代码,我测试时 就出现我所说的样子 from machine import UART ...
不好意思!read后面应带上(),写成read()才正确,改过后 就如同您说的样子了!多谢!
yanruiqi5678 发表于 2020-10-4 11:50 不好意思!read后面应带上(),写成read()才正确,改过后 就如同您说的样子了!多谢!
分号也是不必要的,建议去掉
发表回复 回帖后跳转到最后一页
论坛测评队员
EEWorld Datasheet 技术支持
查看 »