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

相信大家都都时不时的会遇到有关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,重新打开就没问题了。

最后,祝大家调试愉快~



猜你喜欢

转载自blog.csdn.net/weixin_42066185/article/details/80858529