发布网友 发布时间:2022-04-24 13:25
共2个回答
热心网友 时间:2023-10-14 09:05
还是设定每隔开一秒进行一次读取的操作
但是每次读的时候不限定读取的字节数,直接把缓冲区内的数据都读出来
然后取最后一个字节的数据作为当前数据
因为每次读取数据都会把缓冲区清空,所以只要缓冲区大小足够存下一秒内主机发送的全部数据,缓冲区就不会溢出。
热心网友 时间:2023-10-14 09:05
还是设定每隔开一秒进行一次读取的操作
但是每次读的时候不限定读取的字节数,直接把缓冲区内的数据都读出来
然后取最后一个字节的数据作为当前数据
因为每次读取数据都会把缓冲区清空,所以只要缓冲区大小足够存下一秒内主机发送的全部数据,缓冲区就不会溢出。追问用fscanf函数读取所有数据不行啊。 fscanf函数会一直等待串口不再有数据到来或者时间超出后输出读取到的数据。然而主端在一直发数。所以fscanf会一直等到时间超出(好几秒),才停止。
追答用fread(s,s.BytesAvailable)
s.BytesAvailable可以返回串口输入缓冲区可用字节数(s是用serial设定的串口对象)
用fread指定读取s.BytesAvailable个字节的数据,就可以把当前缓冲区读空
fread返回的是uchar类型的一维矩阵,最后一个数应该就是最新的数据