matlab串口接收数据的问题

主端一直在以一个较快的频率发送数据(一个字节一个字节的发),matlab需要每隔一秒读取最新的一个数据。只需要最新读取一个字节。当写上延时一秒的函数之后,matlab串口... 主端一直在以一个较快的频率发送数据(一个字节一个字节的发),matlab需要每隔一秒读取最新的一个数据。只需要最新读取一个字节。当写上延时一秒的函数之后,matlab串口缓冲区就会满,接收到的数据不对,也不是最新的数据。想实现每隔一秒只读取最新的一个字节的数据该如何编写函数 展开
 我来答
陕西新华电脑学校
2021-07-26 · 百度认证:陕西新华电脑软件培训学校官方账号
陕西新华电脑学校
陕西新华电脑软学校位于西咸新区秦汉新城兰池二路东段,隶属于新华教育集团,是经陕西省人力资源和社会保障厅批准成立的一所大型互联网教育学校,是陕西省专业的互联网人才培养基地,交通便利,学风醇厚
向TA提问
展开全部
还是设定每隔开一秒进行一次读取的操作
但是每次读的时候不限定读取的字节数,直接把缓冲区内的数据都读出来

然后取最后一个字节的数据作为当前数据

因为每次读取数据都会把缓冲区清空,所以只要缓冲区大小足够存下一秒内主机发送的全部数据,缓冲区就不会溢出。
dukinkin
2019-09-11 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:1022万
展开全部
还是设定每隔开一秒进行一次读取的操作
但是每次读的时候不限定读取的字节数,直接把缓冲区内的数据都读出来

然后取最后一个字节的数据作为当前数据

因为每次读取数据都会把缓冲区清空,所以只要缓冲区大小足够存下一秒内主机发送的全部数据,缓冲区就不会溢出。
追问
用fscanf函数读取所有数据不行啊。 fscanf函数会一直等待串口不再有数据到来或者时间超出后输出读取到的数据。然而主端在一直发数。所以fscanf会一直等到时间超出(好几秒),才停止。
追答
用fread(s,s.BytesAvailable)

s.BytesAvailable可以返回串口输入缓冲区可用字节数(s是用serial设定的串口对象)
用fread指定读取s.BytesAvailable个字节的数据,就可以把当前缓冲区读空

fread返回的是uchar类型的一维矩阵,最后一个数应该就是最新的数据
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宋矜持1016
2021-07-27 · 超过130用户采纳过TA的回答
知道小有建树答主
回答量:2245
采纳率:0%
帮助的人:56万
展开全部
还是设定每隔开一秒进行一次读取的操作
但是每次读的时候不限定读取的字节数,直接把缓冲区内的数据都读出来

然后取最后一个字节的数据作为当前数据

因为每次读取数据都会把缓冲区清空,所以只要缓冲区大小足够存下一秒内主机发送的全部数据,缓冲区就不会溢出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式