查看: 1591|回复: 4|关注: 0

[已答复] matlab读取虚拟串口数据发生错误

[复制链接]

新手

5 麦片

财富积分


050


3

主题

6

帖子

0

最佳答案
发表于 2018-9-15 23:20:19 | 显示全部楼层 |阅读模式
我用VCOM虚拟了一个COM10,用XCOM串口调试助手可以看到串口接收到数据为01 01 0A 0A 0A 0A 0A 0A 0A(16进制显示),但是用matlab的fread()函数来读的时候发生了错误,读出来的错误是10 10 10 10 1 1 10(10进制),虽然总的8个数据的数量都是一样的,但是数据的位置发生了变化。更让人奇怪的是,这要看脸的,有时候位置就是对的,为1 1 10 10 10 10 10 10,但是有时候就是错的。不过也只出现了这两种情况,其他的位置错误比如10 10 1 1 10 10 10 10这样的数据没有出现过。请问是咋回事儿呀,下面是贴图和代码:

串口助手数据

串口助手数据

matlab读取串口的数据

matlab读取串口的数据


  1. %读取串口数据,并写入txt文件中
  2. clc;
  3. clear all
  4. t=0;
  5. flag=1;%程序进行标志位
  6. s=serial('COM10');
  7. set(s,'BaudRate', 115200,'DataBits',8,'StopBits',1,'Parity','none','FlowControl','none');
  8. s.BytesAvailableFcnMode = 'terminator';%byte
  9. fopen(s);                  %打开串口
  10. txt_num=length(dir('*.txt'));  %读取文件夹中txt的数量
  11. txt_name=['C:\Users\Goojia\Documents\MATLAB\serial\serial_data',num2str(txt_num),'.txt'];  %对txt进行命名
  12. fid=fopen(txt_name,'a+'); % 'a+'读写方式打开,将文件指针指向文件末尾。
  13. while(flag)
  14.    if(fscanf(s))
  15.        disp('connected!');
  16.        flag=0;
  17.    end
  18.    t=t+1
  19.    if(t>6)
  20.        disp('connection time out.');
  21.        fclose(fid);
  22.        fclose(s);
  23.        delete(s);
  24.        clear s;
  25.        break;
  26.    end
  27. end
  28. while(~flag)
  29.     try
  30. %         out = fscanf(s)
  31.         out = fread(s,8)
  32. %         data = str2num(out);
  33.         fprintf(fid,'%2d ',out(3:8));            % 写入文件中     
  34.     catch ErrorInfo
  35.         disp(ErrorInfo);
  36.         disp(ErrorInfo.identifier);
  37.         disp(ErrorInfo.message);
  38.         disp(ErrorInfo.stack);
  39.         disp(ErrorInfo.cause);
  40.         disp('connection time out.');
  41.         fclose(fid);
  42.         fclose(s);
  43.         delete(s);
  44.         clear s;
  45.         draw(txt_name);
  46.         break;
  47.     end
  48. end
复制代码


新手

5 麦片

财富积分


050


3

主题

6

帖子

0

最佳答案
 楼主| 发表于 2018-9-16 08:22:12 | 显示全部楼层
顶一顶,顶一顶

新手

5 麦片

财富积分


050


3

主题

6

帖子

0

最佳答案
 楼主| 发表于 2018-9-16 11:48:09 | 显示全部楼层
顶一顶,顶一顶

新手

46 麦片

财富积分


050


3

主题

129

帖子

7

最佳答案
  • 关注者: 3
发表于 2018-10-11 16:43:16 | 显示全部楼层
你把测试数据换成1 2 3 4 5 6 7 8 9 10 看看,里面都有重复的,不太好分析出错的特点。是不是完全随机的

新手

5 麦片

财富积分


050


0

主题

1

帖子

0

最佳答案
发表于 2019-4-4 14:54:54 | 显示全部楼层
这个问题没有人解答吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表