Matlab---串口操作---数据採集篇
2016-01-29 13:56
344 查看
matlab功能强大,串口操作也非常easy。相信看过下面两个实验你就能掌握咯!
開始吧!
实验1:
从电脑COM2口读取数据。并将数据保存在TXT文件里,方便数据分析,以下是M脚本:
相同的功能。用函数写更规范,代码例如以下:
仿真例如以下,使用虚拟串口连接串口2和3。打开串口调试助手,以默认方式打开com3
在matlab命令框中例如以下输入命令打开串口com2
>> scom =OpenSerial('com2', @ReadFcn_Com2);
com2成功打开。
向com2写
>>WriteSerial(scom, 'Hello!');
串口调试助手收到信息
用串口调试助手回复matlab。点上图中的手动发送(发送的信息已英文句号.结束),matlab中收到信息
Hello, Matlab.
>>
关闭串口
>> CloseSerial(scom)
部分參考:http://blog.sina.com.cn/s/blog_6163bdeb0102e8qc.html
通过这两个实验。你学会使用了吗?呵呵...
開始吧!
实验1:
从电脑COM2口读取数据。并将数据保存在TXT文件里,方便数据分析,以下是M脚本:
%名 称:Matlab串口-Lab1 %描 述:串口读,并写入txt文件里 s=serial('com2'); s.BytesAvailableFcnMode='byte'; % 串口设置 s.InputBufferSize=4096; s.OutputBufferSize=1024; s.BytesAvailableFcnCount=100; s.ReadAsyncMode='continuous'; s.Terminator='CR'; fopen(s); %打开串口 out=fread(s,10,'uint8'); %一次读出10个字符 fprintf('%3c',out); %一个字符占三位输出,%c字符,%d整型 fid=fopen('serial_data.txt','w+'); % 'a+'读写方式打开,将文件指针指向文件末尾。 假设文件不存在则尝试创建之 fprintf(fid,'%3c',out); % 写入文件里 fclose(fid); fclose(s); delete(s);实验2:
相同的功能。用函数写更规范,代码例如以下:
% 打开串口 function scom = OpenSerial(sname, HReadFcn) scom = serial(sname); scom.BytesAvailableFcnMode = 'terminator'; scom.Terminator = '.'; scom.BytesAvailableFcn = HReadFcn; try fopen(scom); catch err fprintf('%s打开失败。 \n', sname); end fprintf('%s成功打开。\n', sname); end % 写串口 function WriteSerial(scom, str) fprintf(scom, str ,'async'); % 异步方式 end % 读串口回调函数 function ReadFcn_Com2(obj, ~) n = get(obj, 'BytesAvailable'); if n a = fread(obj, n, 'uchar'); c = char(a'); fprintf('%s\n', c); end end % 关闭串口 function CloseSerial(scom) try fclose(scom); catch err fprintf('%s关闭失败。 ', scom.Name); return end delete(scom); end
仿真例如以下,使用虚拟串口连接串口2和3。打开串口调试助手,以默认方式打开com3
在matlab命令框中例如以下输入命令打开串口com2
>> scom =OpenSerial('com2', @ReadFcn_Com2);
com2成功打开。
向com2写
>>WriteSerial(scom, 'Hello!');
串口调试助手收到信息
用串口调试助手回复matlab。点上图中的手动发送(发送的信息已英文句号.结束),matlab中收到信息
Hello, Matlab.
>>
关闭串口
>> CloseSerial(scom)
部分參考:http://blog.sina.com.cn/s/blog_6163bdeb0102e8qc.html
通过这两个实验。你学会使用了吗?呵呵...
相关文章推荐
- win10 下运行 matlab7.0 出错的问题解决办法
- matlab-code folding功能 将某些行的代码折叠起来方便查看
- Matlab启动时自动运行某个脚本 (即某个.m文件)
- Matlab引用第三方包
- matlab(Simulink)中S-function函数编写规则
- 关于matlab GUI 的一些总结
- [MATLAB] Matlab hints for Machine Learning by Anderw Ng
- matlab使用lsqcurvefit函数出现 lsqcurvefit at 253 Function value and YDATA sizes are incommensurate.
- Matlab实现博弈论赌博仿真
- matlab---SPAMS稀疏建模工具箱
- matlab修改打开时的默认路径的最简单使用的方法
- Matlab的一些零碎方法
- Matlab判断正态分布性检验
- matlab-size函数、img函数的经典问题以及:冒号的使用
- matlab字符串的常用操作
- matlab 自动创建文件夹
- Matlab问题汇总
- 二次规划问题和MATLAB函数quadprog的使用
- PCA的原理及MATLAB实现
- caffe-windows 运行matlab 接口的例子