MATLAB中通讯常用的fread和fscanf的使用心得

本文详细介绍了MATLAB中fread和fscanf函数的应用,包括如何通过fread正确读取指定格式的数据,以及fscanf从串口中读取并转换数据的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相信大家都都时不时的会遇到有关MATLAB中的串口或者网口的通讯,其中都会涉及到fread或者fscanf 的使用,接下,作者将首先参考matlab给出的对fread和fscanf的文档,并且做出相关的理解。

1、fread

step 1 文档内容

 

fileID = fopen('nine.bin','w');
fwrite(fileID,[1:9],'uint16'); %其中unit16,是指传入的数据的格式是什么样的,16位的bit 
                                %如果是8位,那么最多能表达的数就是255,如果比255大,就没有办法用8位的来实现
fclose(fileID);

Read the first six values into a 3-by-2 array. Specify that the source data is class uint16.

fileID = fopen('nine.bin');
A = fread(fileID,[3,2],'uint16')    %只要这个与上面给出的fwrite的对应就可以实现了

step 2 串口调试

下图所示的位常用的一些函数

通常需要设定的是里面的InputBuffersize 当我如果不给定fread(s,[a,b]) (a,b通常是指我读入的数据是什么几行几列的) , 那么只有当我将inputbuffersize填了的时候 他才会跳出fread的这个函数 ,而如果给出a,b的话,当存满的时候 就会跳出fread函数。具体请参考使用matlab 指令行 help read 

其中,最主要的一个点的是能够找到向串口中传入的数据的类型,这样,我们才能使用fread函数正确的将其读出来。

2、fscanf

对于其具体的使用方法请参考 matlab中的 help fscanf 

我测试的得到的结果通常是能够将串口中的数据完全读出来,并且默认情况下得到的数据类型则是字符串的累心,如果需要转换,那么就要使用其中的数据类型转换函数,double2str等类似的函数进行转换。

总结一点的是fread通常要完整的知道所要读出来的数据的数据类型,才能很好将串口的符合条件的数据类型读出,否则就会报错。

此外给一个温馨的小提示,在matlab中,一旦运行打开串口(比如说com3),在fopen 函数之后,删除串口对象之前,如果出现报错,那么 当你再次运行的时候,就会出现com口已经打开,或者被占用什么的。 这个时候,就要关掉matlab,重新打开就没问题了。

最后,祝大家调试愉快~

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有水杯和雨伞的工科男

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值