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