
matlab串口接收数据的问题
主端一直在以一个较快的频率发送数据(一个字节一个字节的发),matlab需要每隔一秒读取最新的一个数据。只需要最新读取一个字节。当写上延时一秒的函数之后,matlab串口...
主端一直在以一个较快的频率发送数据(一个字节一个字节的发),matlab需要每隔一秒读取最新的一个数据。只需要最新读取一个字节。当写上延时一秒的函数之后,matlab串口缓冲区就会满,接收到的数据不对,也不是最新的数据。想实现每隔一秒只读取最新的一个字节的数据该如何编写函数
展开
3个回答
2021-07-26 · 百度认证:陕西新华电脑软件培训学校官方账号

陕西新华电脑软学校位于西咸新区秦汉新城兰池二路东段,隶属于新华教育集团,是经陕西省人力资源和社会保障厅批准成立的一所大型互联网教育学校,是陕西省专业的互联网人才培养基地,交通便利,学风醇厚
向TA提问
关注

展开全部
还是设定每隔开一秒进行一次读取的操作
但是每次读的时候不限定读取的字节数,直接把缓冲区内的数据都读出来
然后取最后一个字节的数据作为当前数据
因为每次读取数据都会把缓冲区清空,所以只要缓冲区大小足够存下一秒内主机发送的全部数据,缓冲区就不会溢出。
但是每次读的时候不限定读取的字节数,直接把缓冲区内的数据都读出来
然后取最后一个字节的数据作为当前数据
因为每次读取数据都会把缓冲区清空,所以只要缓冲区大小足够存下一秒内主机发送的全部数据,缓冲区就不会溢出。
展开全部
还是设定每隔开一秒进行一次读取的操作
但是每次读的时候不限定读取的字节数,直接把缓冲区内的数据都读出来
然后取最后一个字节的数据作为当前数据
因为每次读取数据都会把缓冲区清空,所以只要缓冲区大小足够存下一秒内主机发送的全部数据,缓冲区就不会溢出。
但是每次读的时候不限定读取的字节数,直接把缓冲区内的数据都读出来
然后取最后一个字节的数据作为当前数据
因为每次读取数据都会把缓冲区清空,所以只要缓冲区大小足够存下一秒内主机发送的全部数据,缓冲区就不会溢出。
追问
用fscanf函数读取所有数据不行啊。 fscanf函数会一直等待串口不再有数据到来或者时间超出后输出读取到的数据。然而主端在一直发数。所以fscanf会一直等到时间超出(好几秒),才停止。
追答
用fread(s,s.BytesAvailable)
s.BytesAvailable可以返回串口输入缓冲区可用字节数(s是用serial设定的串口对象)
用fread指定读取s.BytesAvailable个字节的数据,就可以把当前缓冲区读空
fread返回的是uchar类型的一维矩阵,最后一个数应该就是最新的数据
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
还是设定每隔开一秒进行一次读取的操作
但是每次读的时候不限定读取的字节数,直接把缓冲区内的数据都读出来
然后取最后一个字节的数据作为当前数据
因为每次读取数据都会把缓冲区清空,所以只要缓冲区大小足够存下一秒内主机发送的全部数据,缓冲区就不会溢出。
但是每次读的时候不限定读取的字节数,直接把缓冲区内的数据都读出来
然后取最后一个字节的数据作为当前数据
因为每次读取数据都会把缓冲区清空,所以只要缓冲区大小足够存下一秒内主机发送的全部数据,缓冲区就不会溢出。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询