Matlab接收串口数据

Matlab接收串口助手发送的txt文档数据,保存为以当前时间命名的txt文档。

调试过程中主要遇到几个问题,

1.保存为txt的文件名如何自动创建

   最终选择了获取系统当前时间格式为xxxx-xx-xx-xx-xx-xx的“clock”

2.读串口函数选择fread还是fscanf的问题;

   fread是读数据,fscanf是读字符,因为我是选择用另外一台电脑通过串口调试助手发送txt文档里面的内容,所以到matalb里面格式为字符;

于是选择fscanf。

fread和fscanf都可以读设备和读文件,所以这里选择读设备,也就是之前顶一个的串口对象;

3.回调函数的问题;

回调函数计数我选择了byte模式,系统默认一个字符计数一次,所以如果发送一个“12306”的值会计数5次;

同理串口缓存区和计数也要注意一下。


程序清单

[html]  view plain  copy
  1. %% 作者:陈国栋 2015年2月14日  
  2. %% 主要参照网络中对Matlab关于串口的帮助的中文翻译;  
  3. %% 初始化串口。  
  4. clear  
  5. clc  
  6. Serial_obj=serial('COM1');  
  7. Serial_obj.BaudRate=9600;  
  8. Serial_obj.DataBits=8;  
  9. Serial_obj.Parity='none';  
  10. Serial_obj.StopBits=1;  
  11. Serial_obj.Terminator=0;  
  12. Serial_obj.InputBufferSize=1024;  
  13. Serial_obj.timeout=20;  
  14. %% 创建txt文档。  
  15. ch=clock;  
  16. ch_1=int2str(ch(1));  
  17. ch_2=int2str(ch(2));  
  18. ch_3=int2str(ch(3));  
  19. ch_4=int2str(ch(4));  
  20. ch_5=int2str(ch(5));  
  21. ch_6=int2str(ch(6));  
  22. ch_7='.txt';  
  23. FileName=[ch_1,'-',ch_2,'-',ch_3,'-',ch_4,'-',ch_5,'-',ch_6,ch_7];  
  24. FileID=fopen(FileName,'a+');  
  25. %% 触发回调函数。  
  26. Serial_obj.BytesAvailableFcnCount=256;         
  27. Serial_obj.BytesAvailableFcnMode='byte';  
  28. Serial_obj.BytesAvailable=@serial_cbk;  
  29. %% 打开串口,读写串口内容。  
  30. fopen(Serial_obj);  
  31. Temp_1 = fscanf(Serial_obj,'%d',256);         % Read data from device, and format as text  
  32. Temp_1 = fscanf(FileID,'%d',256);           % Read data from text file  
  33. Temp_1 = fread(Serial_obj,256,'uint');      % Read binary data from device  
  34. Temp_1 = fread(FileID,256,'uint8');         % Read data from binary file  
  35. %% 曲线显示。  
  36. Temp_2=Temp_1';  
  37. plot(Temp_2);  
  38. %% 保存数据到txt。  
  39. fprintf(FileID,'%d',Temp_2);                  % Write data to text file  
  40. % fprintf(Serial_obj,'%d',Temp_2);            % Write text to device                                  
  41. % fwrite(FileID,temp_2,'uint8');              % Write data to binary file  
  42. % fwrite(Serial_obj,Temp_2,'uint8');          % Write binary data to device        
  43. %% 关闭串口,清理缓存区  
  44. fclose(Serial_obj);  
  45. delete(Serial_obj);  
  46. clear Serial_obj  
  47. %%   
转载于http://blog.csdn.net/neill_ch/article/details/43815761
  • 10
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值